lesscode-py 0.4.17__tar.gz → 0.4.19__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 (101) hide show
  1. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/PKG-INFO +1 -1
  2. lesscode-py-0.4.19/lesscode/utils/custom_type.py +34 -0
  3. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/wrapper.py +1 -26
  4. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/version.py +1 -1
  5. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/base_handler.py +41 -59
  6. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/web_server.py +5 -0
  7. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode_py.egg-info/PKG-INFO +1 -1
  8. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode_py.egg-info/SOURCES.txt +1 -0
  9. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/README.md +0 -0
  10. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/__init__.py +0 -0
  11. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/__init__.py +0 -0
  12. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/base_connection_pool.py +0 -0
  13. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/base_sql_helper.py +0 -0
  14. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/clickhouse/__init__.py +0 -0
  15. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/clickhouse/clickhouse_helper.py +0 -0
  16. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/clickhouse/clickhouse_pool.py +0 -0
  17. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/condition_wrapper.py +0 -0
  18. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/connection_info.py +0 -0
  19. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/db_function.py +0 -0
  20. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/dm/__init__.py +0 -0
  21. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/dm/dm_helper.py +0 -0
  22. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/dm/dm_pool.py +0 -0
  23. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/ds_helper.py +0 -0
  24. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/elasticsearch/__init__.py +0 -0
  25. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/elasticsearch/elasticsearch_helper.py +0 -0
  26. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/elasticsearch/elasticsearch_pool.py +0 -0
  27. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/es/__init__.py +0 -0
  28. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/es/es_helper.py +0 -0
  29. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/es/es_pool.py +0 -0
  30. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/es/es_request.py +0 -0
  31. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/generic/__init__.py +0 -0
  32. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/generic/generic_helper.py +0 -0
  33. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/generic/generic_pool.py +0 -0
  34. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/init_connection_pool.py +0 -0
  35. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mongodb/__init__.py +0 -0
  36. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mongodb/base_model.py +0 -0
  37. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mongodb/mongodb_helper.py +0 -0
  38. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mongodb/mongodb_pool.py +0 -0
  39. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mysql/__init__.py +0 -0
  40. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mysql/mysql_helper.py +0 -0
  41. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/mysql/mysql_pool.py +0 -0
  42. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/nebula/__init__.py +0 -0
  43. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/nebula/nebula_helper.py +0 -0
  44. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/nebula/nebula_pool.py +0 -0
  45. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/neo4j/__init__.py +0 -0
  46. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/neo4j/neo4j_helper.py +0 -0
  47. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/neo4j/neo4j_pool.py +0 -0
  48. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/page.py +0 -0
  49. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/postgresql/__init__.py +0 -0
  50. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/postgresql/postgresql_helper.py +0 -0
  51. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/postgresql/postgresql_pool.py +0 -0
  52. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis/__init__.py +0 -0
  53. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis/redis_helper.py +0 -0
  54. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis/redis_pool.py +0 -0
  55. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis_cluster/__init__.py +0 -0
  56. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis_cluster/redis_cluster_helper.py +0 -0
  57. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/redis_cluster/redis_cluster_pool.py +0 -0
  58. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/relational_db_helper.py +0 -0
  59. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/sqlalchemy/__init__.py +0 -0
  60. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/sqlalchemy/sqlalchemy_helper.py +0 -0
  61. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/sqlalchemy/sqlalchemy_model_service.py +0 -0
  62. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/db/sqlalchemy/sqlalchemy_pool.py +0 -0
  63. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/extend_handlers/__init__.py +0 -0
  64. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/extend_handlers/doc/__init__.py +0 -0
  65. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/extend_handlers/doc/swagger_interface_doc_handler.py +0 -0
  66. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/extend_handlers/not_found_handler.py +0 -0
  67. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/mq/__init__.py +0 -0
  68. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/mq/kafka/__init__.py +0 -0
  69. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/mq/kafka/kafka_helper.py +0 -0
  70. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/mq/rabbitmq/__init__.py +0 -0
  71. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/mq/rabbitmq/rabbitmq_helper.py +0 -0
  72. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/sentry/__init__.py +0 -0
  73. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/sentry/sentry_monitor.py +0 -0
  74. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/task/__init__.py +0 -0
  75. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/task/job_info.py +0 -0
  76. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/task/task_helper.py +0 -0
  77. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/CacheUtil.py +0 -0
  78. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/__init__.py +0 -0
  79. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/cache_utils.py +0 -0
  80. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/doc/__init__.py +0 -0
  81. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/doc/interface_doc.py +0 -0
  82. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/es_log/__init__.py +0 -0
  83. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/es_log/record_log.py +0 -0
  84. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/json.py +0 -0
  85. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/oss/__init__.py +0 -0
  86. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/oss/aliyun_oss.py +0 -0
  87. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/oss/ks3_oss.py +0 -0
  88. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/request.py +0 -0
  89. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/utils/upms_util.py +0 -0
  90. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/__init__.py +0 -0
  91. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/base_server_send_event_handler.py +0 -0
  92. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/base_websocket_handler.py +0 -0
  93. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/business_exception.py +0 -0
  94. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/native_handler.py +0 -0
  95. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/response_result.py +0 -0
  96. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/router_mapping.py +0 -0
  97. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode/web/status_code.py +0 -0
  98. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode_py.egg-info/dependency_links.txt +0 -0
  99. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/lesscode_py.egg-info/top_level.txt +0 -0
  100. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/setup.cfg +0 -0
  101. {lesscode-py-0.4.17 → lesscode-py-0.4.19}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-py
3
- Version: 0.4.17
3
+ Version: 0.4.19
4
4
  Summary: lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://gitee.com/yongchao9/lesscode-python
6
6
  Author: Chao.yy
@@ -0,0 +1,34 @@
1
+ class User:
2
+ """
3
+ 用户对象类
4
+ """
5
+
6
+ def __init__(self):
7
+ # '账号id',
8
+ self.id = None
9
+ # 用户名
10
+ self.username = None
11
+ # '密码',
12
+ self.password = None
13
+ # '显示名',
14
+ self.display_name = None
15
+ # 手机号,
16
+ self.phone_no = None
17
+ # 邮箱
18
+ self.email = None
19
+ # 组织机构id',
20
+ self.org_id = None
21
+ # '1正常(激活);2未激活(管理员新增,首次登录需要改密码); 3锁定(登录错误次数超限,锁定时长可配置); 4休眠(长期未登录(字段,时长可配置),定时) 5禁用-账号失效;
22
+ self.account_status = None
23
+ # 角色id集合
24
+ self.roleIds = None
25
+
26
+ def __str__(self):
27
+ return (f"User(id={self.id},username={self.username},phone_no={self.phone_no},"
28
+ f"display_name={self.display_name},email={self.email},org_id={self.org_id},"
29
+ f"account_status={self.account_status},roleIds={self.roleIds})")
30
+
31
+ def __repr__(self):
32
+ return (f"User(id={self.id},username={self.username},phone_no={self.phone_no},"
33
+ f"display_name={self.display_name},email={self.email},org_id={self.org_id},"
34
+ f"account_status={self.account_status},roleIds={self.roleIds})")
@@ -3,36 +3,11 @@ import json
3
3
 
4
4
  from tornado.options import options
5
5
 
6
+ from lesscode.utils.custom_type import User
6
7
  from lesscode.web.business_exception import BusinessException
7
8
  from lesscode.web.status_code import StatusCode
8
9
 
9
10
 
10
- class User:
11
- """
12
- 用户对象类
13
- """
14
-
15
- def __init__(self):
16
- # '账号id',
17
- self.id = None
18
- # 用户名
19
- self.username = None
20
- # '密码',
21
- self.password = None
22
- # '显示名',
23
- self.display_name = None
24
- # 手机号,
25
- self.phone_no = None
26
- # 邮箱
27
- self.email = None
28
- # 组织机构id',
29
- self.org_id = None
30
- # '1正常(激活);2未激活(管理员新增,首次登录需要改密码); 3锁定(登录错误次数超限,锁定时长可配置); 4休眠(长期未登录(字段,时长可配置),定时) 5禁用-账号失效;
31
- self.account_status = None
32
- # 角色id集合
33
- self.roleIds = None
34
-
35
-
36
11
  def user_verification(username="admin", **kw):
37
12
  def wrapper(func):
38
13
  @functools.wraps(func)
@@ -5,4 +5,4 @@
5
5
  lesscode python version file.
6
6
  """
7
7
 
8
- __version__ = "0.4.17"
8
+ __version__ = "0.4.19"
@@ -22,6 +22,7 @@ from tornado.web import RequestHandler, Application
22
22
 
23
23
  from lesscode.task.task_helper import TaskHelper
24
24
  from lesscode.utils.CacheUtil import async_common_cache, common_cache
25
+ from lesscode.utils.custom_type import User
25
26
  from lesscode.utils.es_log.record_log import es_record_log
26
27
  from lesscode.utils.json import JSONEncoder
27
28
  from lesscode.utils.request import sync_common_request_origin
@@ -270,20 +271,34 @@ class BaseHandler(RequestHandler):
270
271
  for k, v in params_dict.items():
271
272
  if "self" != k:
272
273
  _params[k] = v
273
- t = Thread(target=sync_common_request_origin, kwargs={
274
- "url": options.write_operate_log_url,
275
- "method": "POST",
276
- "json": {
274
+ if options.operate_log_write_method == "api":
275
+ t = Thread(target=sync_common_request_origin, kwargs={
276
+ "url": options.write_operate_log_url,
277
+ "method": "POST",
278
+ "json": {
279
+ "operate_action": title,
280
+ "operate_url": self.request.path,
281
+ "operate_user_id": _user_id,
282
+ "operate_user_username": _username,
283
+ "params": _params,
284
+ "operate_user_phone_no": _phone_no
285
+ }
286
+ })
287
+ t.start()
288
+ logging.info(f"添加操作日志,url:{self.request.path},title={title}")
289
+ elif options.operate_log_write_method == "function":
290
+ t = Thread(target=options.operate_log_write_func, kwargs={
291
+ "operate_id": uuid.uuid1().hex,
277
292
  "operate_action": title,
278
293
  "operate_url": self.request.path,
279
294
  "operate_user_id": _user_id,
280
295
  "operate_user_username": _username,
281
296
  "params": _params,
282
297
  "operate_user_phone_no": _phone_no
283
- }
284
- })
285
- t.start()
286
- logging.info(f"添加操作日志,url:{self.request.path},title={title}")
298
+ })
299
+ t.start()
300
+ logging.info(f"添加操作日志,url:{self.request.path},title={title}")
301
+
287
302
  except Exception as e:
288
303
  logging.error(f"添加操作日志失败,url={self.request.path},错误信息:{e}")
289
304
  # 判断是否为异步非阻塞方法,true 则直接调用
@@ -389,21 +404,24 @@ class BaseHandler(RequestHandler):
389
404
  获取当前用户信息
390
405
  :return:
391
406
  """
392
- user_json = self.request.headers.get("User")
393
- if user_json:
394
- # TODO 未做加密
395
- user_info = json.loads(user_json)
396
- if user_info and isinstance(user_info, dict):
397
- user = User()
398
- for key in user_info:
399
- value = user_info.get(key)
400
- if value and isinstance(value, str):
401
- user_info[key] = unquote(value)
402
- if key == "roleIds" and value and isinstance(value, str):
403
- user_info[key] = json.loads(value)
404
- setattr(user, key, user_info[key])
405
-
406
- return user
407
+ if not options.custom_current_user_switch:
408
+ user_json = self.request.headers.get("User")
409
+ if user_json:
410
+ # TODO 未做加密
411
+ user_info = json.loads(user_json)
412
+ if user_info and isinstance(user_info, dict):
413
+ user = User()
414
+ for key in user_info:
415
+ value = user_info.get(key)
416
+ if value and isinstance(value, str):
417
+ user_info[key] = unquote(value)
418
+ if key == "roleIds" and value and isinstance(value, str):
419
+ user_info[key] = json.loads(value)
420
+ setattr(user, key, user_info[key])
421
+
422
+ return user
423
+ else:
424
+ return options.custom_current_user_func(self)
407
425
  return None
408
426
 
409
427
  def redirect(self, url: str, permanent: bool = False, status: int = None) -> None:
@@ -438,42 +456,6 @@ class BaseHandler(RequestHandler):
438
456
  data["modify_time"] = datetime.now()
439
457
 
440
458
 
441
- class User:
442
- """
443
- 用户对象类
444
- """
445
-
446
- def __init__(self):
447
- # '账号id',
448
- self.id = None
449
- # 用户名
450
- self.username = None
451
- # '密码',
452
- self.password = None
453
- # '显示名',
454
- self.display_name = None
455
- # 手机号,
456
- self.phone_no = None
457
- # 邮箱
458
- self.email = None
459
- # 组织机构id',
460
- self.org_id = None
461
- # '1正常(激活);2未激活(管理员新增,首次登录需要改密码); 3锁定(登录错误次数超限,锁定时长可配置); 4休眠(长期未登录(字段,时长可配置),定时) 5禁用-账号失效;
462
- self.account_status = None
463
- # 角色id集合
464
- self.roleIds = None
465
-
466
- def __str__(self):
467
- return (f"User(id={self.id},username={self.username},phone_no={self.phone_no},"
468
- f"display_name={self.display_name},email={self.email},org_id={self.org_id},"
469
- f"account_status={self.account_status},roleIds={self.roleIds})")
470
-
471
- def __repr__(self):
472
- return (f"User(id={self.id},username={self.username},phone_no={self.phone_no},"
473
- f"display_name={self.display_name},email={self.email},org_id={self.org_id},"
474
- f"account_status={self.account_status},roleIds={self.roleIds})")
475
-
476
-
477
459
  # 解析param
478
460
  def parse_val(val, val_type):
479
461
  # inspect.Parameter.empty <class 'NoneType'>
@@ -6,6 +6,7 @@ import os
6
6
  import platform
7
7
  import sys
8
8
  import traceback
9
+ from types import FunctionType
9
10
  from typing import Optional
10
11
 
11
12
  import tornado.httpserver
@@ -40,6 +41,8 @@ define("eureka_config", default={}, type=dict, help="eureka配置")
40
41
  define("rms_register_enable", default=False, type=bool, help="是否启动资源注册")
41
42
  define("rms_register_server", default="http://127.0.0.1:8918", type=str, help="启动资源注册")
42
43
  define("operate_log_enable", default=False, type=bool, help="记录操作日志开关,默认关闭")
44
+ define("operate_log_write_method", default="api", type=str, help="记录操作日志方式,默认是api")
45
+ define("operate_log_write_func", default=None, type=FunctionType, help="记录操作的函数")
43
46
  define("write_operate_log_url", default="http://127.0.0.1:8918", type=str, help="记录操作日志接口")
44
47
  define("running_env", default="local", type=str, help="运行环境")
45
48
  define("request_type", default="request", type=str, help="请求类型")
@@ -67,6 +70,8 @@ define("url_log_enable", default=False, type=bool, help="项目url打印")
67
70
  define("cronjob_config", default={}, type=dict, help="定时任务配置")
68
71
  define("resource_register_enable", default=False, type=bool, help="资源注册开关")
69
72
  define("outside_screen_port", default=80, type=int, help="资源注册开关")
73
+ define("custom_current_user_switch", default=False, type=bool, help="自定义用户开关")
74
+ define("custom_current_user_func", default=None, type=FunctionType, help="自定义用户方法函数")
70
75
  # 日志初始化配置,配置文件中可修改设置
71
76
  options.logging = "DEBUG"
72
77
  options.log_rotate_mode = "time"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-py
3
- Version: 0.4.17
3
+ Version: 0.4.19
4
4
  Summary: lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://gitee.com/yongchao9/lesscode-python
6
6
  Author: Chao.yy
@@ -71,6 +71,7 @@ lesscode/task/task_helper.py
71
71
  lesscode/utils/CacheUtil.py
72
72
  lesscode/utils/__init__.py
73
73
  lesscode/utils/cache_utils.py
74
+ lesscode/utils/custom_type.py
74
75
  lesscode/utils/json.py
75
76
  lesscode/utils/request.py
76
77
  lesscode/utils/upms_util.py
File without changes
File without changes
File without changes