lesscode-flask 0.1.53__tar.gz → 0.1.56__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/PKG-INFO +1 -1
  2. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/__init__.py +1 -1
  3. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/app.py +3 -1
  4. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/user.py +15 -4
  5. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/setting/__init__.py +3 -0
  6. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/setup/__init__.py +89 -2
  7. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask.egg-info/PKG-INFO +1 -1
  8. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/README.md +0 -0
  9. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/db/__init__.py +0 -0
  10. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/db/datasource.py +0 -0
  11. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/db/executor.py +0 -0
  12. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/export_data/__init__.py +0 -0
  13. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/export_data/data_download_handler.py +0 -0
  14. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/log/access_log_handler.py +0 -0
  15. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/access_log.py +0 -0
  16. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/base_model.py +0 -0
  17. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/parameterized_query.py +0 -0
  18. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/resource_param_template.py +0 -0
  19. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/model/response_result.py +0 -0
  20. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/service/access_log_service.py +0 -0
  21. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/service/base_service.py +0 -0
  22. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/service/resource_param_template_service.py +0 -0
  23. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/signals.py +0 -0
  24. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/static/swagger.py +0 -0
  25. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/__init__.py +0 -0
  26. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/decorator/__init__.py +0 -0
  27. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/decorator/cache.py +0 -0
  28. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/decorator/swagger.py +0 -0
  29. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/file/file_exporter.py +0 -0
  30. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/file/file_utils.py +0 -0
  31. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/helpers.py +0 -0
  32. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
  33. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/oss/__init__.py +0 -0
  34. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
  35. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/redis/redis_helper.py +0 -0
  36. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/request/request.py +0 -0
  37. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
  38. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
  39. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/task/__init__.py +0 -0
  40. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/task/task_helper.py +0 -0
  41. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/utils/thread/thread_utils.py +0 -0
  42. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask/wsgi.py +0 -0
  43. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask.egg-info/SOURCES.txt +0 -0
  44. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask.egg-info/dependency_links.txt +0 -0
  45. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask.egg-info/requires.txt +0 -0
  46. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/lesscode_flask.egg-info/top_level.txt +0 -0
  47. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/__init__.py +0 -0
  48. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/clickhouse.py +0 -0
  49. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/elasticsearch.py +0 -0
  50. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/kingbase.py +0 -0
  51. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/mysql.py +0 -0
  52. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/query_runner/pg.py +0 -0
  53. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/settings/__init__.py +0 -0
  54. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/settings/helpers.py +0 -0
  55. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/utils/__init__.py +0 -0
  56. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/redash/utils/requests_session.py +0 -0
  57. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/setup.cfg +0 -0
  58. {lesscode-flask-0.1.53 → lesscode_flask-0.1.56}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-flask
3
- Version: 0.1.53
3
+ Version: 0.1.56
4
4
  Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://lesscode-flask
6
6
  Author: Chao.yy
@@ -1,4 +1,4 @@
1
- __version__ = '0.1.53'
1
+ __version__ = '0.1.56'
2
2
 
3
3
  import functools
4
4
  import logging
@@ -17,7 +17,8 @@ from werkzeug.middleware.proxy_fix import ProxyFix
17
17
 
18
18
  from lesscode_flask.model.response_result import ResponseResult
19
19
  from lesscode_flask.setup import setup_blueprint, setup_logging, setup_query_runner, setup_swagger, setup_sql_alchemy, \
20
- setup_redis, setup_login_manager, setup_resource_register, setup_data_download, setup_scheduler
20
+ setup_redis, setup_login_manager, setup_resource_register, setup_data_download, setup_scheduler, \
21
+ setup_common_resource
21
22
  from lesscode_flask.signals import app_runed
22
23
  from lesscode_flask.utils.helpers import inject_args, generate_uuid, app_config
23
24
  from lesscode_flask.utils.json.NotSortJSONProvider import NotSortJSONProvider
@@ -146,6 +147,7 @@ class Lesscoder(Flask):
146
147
  setup_login_manager(self)
147
148
  for blueprint_name, blueprint in blueprint_map.items():
148
149
  self.register_blueprint(blueprint)
150
+ setup_common_resource(self)
149
151
  setup_resource_register(self)
150
152
  setup_data_download(self)
151
153
  setup_scheduler(self)
@@ -33,7 +33,7 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
33
33
 
34
34
  def __init__(self, id="AnonymousUserId", username="AnonymousUser", display_name="匿名用户", phone_no: str = None,
35
35
  email: str = None,
36
- type: int = 0, account_status: str = None, permissions=[], permissions_url=[], client_id: str = None,
36
+ type: int = 0, account_status: str = None, permissions=[], permissions_url=[],roleIds=[], client_id: str = None,
37
37
  sub: str = None):
38
38
  # '账号id',
39
39
  self.id = id
@@ -59,7 +59,7 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
59
59
  # 权限集合(url)
60
60
  self.permissions_url = permissions_url
61
61
  # # 角色集合
62
- # self.roleIds = roleIds
62
+ self.roleIds = roleIds
63
63
 
64
64
  #
65
65
  @property
@@ -116,7 +116,9 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
116
116
  "client_id": self.client_id,
117
117
  "sub": self.sub if self.sub else "",
118
118
  "permissions": json.dumps(self.permissions),
119
- "permissions_url": json.dumps(self.permissions_url)
119
+ "permissions_url": json.dumps(self.permissions_url),
120
+ "roleIds": json.dumps(self.roleIds)
121
+
120
122
  }
121
123
 
122
124
  @staticmethod
@@ -131,9 +133,18 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
131
133
  permissions = user_data.get("permissions", [])
132
134
  if isinstance(permissions, str):
133
135
  user.permissions = json.loads(permissions)
136
+ else:
137
+ user.permissions = permissions
134
138
  permissions_url = user_data.get("permissions_url", [])
135
139
  if isinstance(permissions_url, str):
136
140
  user.permissions_url = json.loads(permissions_url)
141
+ else:
142
+ user.permissions_url = permissions_url
143
+ roleIds = user_data.get("roleIds", [])
144
+ if isinstance(roleIds, str):
145
+ user.roleIds = json.loads(roleIds)
146
+ else:
147
+ user.roleIds = roleIds
137
148
  return user
138
149
 
139
150
  @staticmethod
@@ -174,7 +185,7 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
174
185
  display_name=unquote(user_dict["display_name"]),
175
186
  phone_no=user_dict["phone_no"],
176
187
  permissions=user_dict.get("permissions", []),
177
- # roleIds=user_dict["roleIds"],
188
+ roleIds=user_dict["roleIds"],
178
189
  client_id=user_dict["client_id"]
179
190
  )
180
191
  return user
@@ -118,3 +118,6 @@ class BaseConfig:
118
118
 
119
119
  # 本地环境
120
120
  ENV = "local"
121
+ # 是否代理能力平台的公共接口
122
+ ICP_RESOURCE_PROXY = True
123
+ CAPACITY_SERVER = "http://localhost:8976/icp"
@@ -4,14 +4,17 @@ from datetime import datetime
4
4
  from importlib import import_module
5
5
  from logging.handlers import TimedRotatingFileHandler
6
6
 
7
- from flask import current_app
7
+ import requests
8
+ from flask import current_app, Response, request
8
9
 
9
- from lesscode_flask import download_func_dict
10
+ from lesscode_flask import download_func_dict, SQ_Blueprint
10
11
  from lesscode_flask.db import db
11
12
  from lesscode_flask.export_data.data_download_handler import format_to_table_download, upload_result_url
12
13
  from lesscode_flask.log.access_log_handler import AccessLogHandler
13
14
  from lesscode_flask.model.user import User
14
15
  from lesscode_flask.utils.file.file_utils import check_or_create_dir
16
+ from lesscode_flask.utils.helpers import app_config
17
+ from lesscode_flask.utils.request.request import sync_get, sync_post
15
18
  from lesscode_flask.utils.swagger.swagger_template import split_doc
16
19
  from lesscode_flask.utils.swagger.swagger_util import generate_openapi_spec, replace_symbol, get_params_type, \
17
20
  get_sample_data
@@ -446,3 +449,87 @@ def setup_scheduler(app):
446
449
  task_kwargs = task.get("task_kwargs", {}) or dict()
447
450
  if task_enable:
448
451
  scheduler.add_job(func=task_func, kwargs=func_kwargs, **task_kwargs)
452
+
453
+
454
+ def setup_common_resource(app):
455
+ routes = SQ_Blueprint("Oauth授权管理", url_prefix=f'{app.config.get("ROUTE_PREFIX", "")}/oauth')
456
+
457
+ # def capacity_post(path, data=None):
458
+ # headers = {}
459
+ # res = sync_post(path=path, data=data, base_url=app_config.get("CAPACITY_SERVER"),
460
+ # headers=headers)
461
+ # return res
462
+
463
+ def capacity_get(path, params=None, result_type="json", headers=None):
464
+ res = sync_get(path=path, params=params, base_url=app_config.get("CAPACITY_SERVER"),
465
+ headers=headers, result_type=result_type)
466
+ return res
467
+
468
+ @routes.get_route("获取图形验证码", '/captcha')
469
+ def get_captcha(key):
470
+ resp = requests.get(app_config.get("CAPACITY_SERVER") + "/oauth/captcha", params={
471
+ "key": key
472
+ }, stream=True)
473
+ return Response(
474
+ resp.content,
475
+ content_type=resp.headers["Content-Type"],
476
+ status=resp.status_code
477
+ )
478
+
479
+ # @routes.post_route("登录", '/token')
480
+ # def issue_token():
481
+ # """
482
+ # 获取token
483
+ # :return:
484
+ # """
485
+ # headers = {key: value for key, value in request.headers if key.lower() != 'host'}
486
+ #
487
+ # # 读取 form-data 参数
488
+ # data = request.form.to_dict()
489
+ #
490
+ # # 代理请求到 B 项目的 /token 接口
491
+ # resp = requests.post(app_config.get("CAPACITY_SERVER") + "/oauth/captcha", headers=headers, data=data)
492
+ #
493
+ # return resp
494
+
495
+ @routes.get_route("登出接口", '/logout')
496
+ def logout():
497
+ headers = {key: value for key, value in request.headers if key.lower() != 'host'}
498
+
499
+ result = capacity_get("/oauth/logout", headers=headers)
500
+
501
+ return result
502
+
503
+ @routes.get_route("获取短信验证码", '/sms')
504
+ def get_sms_code(phone_no: str, template_code: str = None, sign_name: str = None):
505
+ """
506
+ 发送短信验证码
507
+ :param sign_name:
508
+ :param template_code:
509
+ :param phone_no:手机号
510
+ :return:
511
+ """
512
+ headers = {key: value for key, value in request.headers if key.lower() != 'host'}
513
+
514
+ result = capacity_get("/oauth/sms", headers=headers, params={
515
+ "phone_no": phone_no,
516
+ "template_code": template_code,
517
+ "sign_name": sign_name,
518
+ })
519
+ return result
520
+
521
+ @routes.get_route('获取当前用户信息', '/user_info')
522
+ def user_info():
523
+ """
524
+ 获取当前用户信息
525
+ :return:
526
+ """
527
+ headers = {key: value for key, value in request.headers if key.lower() != 'host'}
528
+
529
+ result = capacity_get("/oauth/user_info", headers=headers)
530
+
531
+ return result
532
+
533
+ # 判断是否需要代理资源
534
+ if app_config.get("ICP_RESOURCE_PROXY"):
535
+ app.register_blueprint(routes)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-flask
3
- Version: 0.1.53
3
+ Version: 0.1.56
4
4
  Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://lesscode-flask
6
6
  Author: Chao.yy