lesscode-flask 0.1.46__tar.gz → 0.1.49__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.
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/PKG-INFO +1 -1
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/__init__.py +1 -1
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/user.py +3 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/setup/__init__.py +1 -1
- lesscode_flask-0.1.49/lesscode_flask/utils/task/__init__.py +0 -0
- lesscode_flask-0.1.49/lesscode_flask/utils/task/task_helper.py +142 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/PKG-INFO +1 -1
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/SOURCES.txt +2 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/README.md +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/app.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/db/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/db/datasource.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/db/executor.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/export_data/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/export_data/data_download_handler.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/log/access_log_handler.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/access_log.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/base_model.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/parameterized_query.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/resource_param_template.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/response_result.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/service/access_log_service.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/service/base_service.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/service/resource_param_template_service.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/setting/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/signals.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/static/swagger.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/decorator/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/decorator/cache.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/decorator/swagger.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/file/file_exporter.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/file/file_utils.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/helpers.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/oss/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/redis/redis_helper.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/request/request.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/thread/thread_utils.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/wsgi.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/dependency_links.txt +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/requires.txt +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/top_level.txt +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/clickhouse.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/elasticsearch.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/kingbase.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/mysql.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/query_runner/pg.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/settings/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/settings/helpers.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/utils/__init__.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/redash/utils/requests_session.py +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/setup.cfg +0 -0
- {lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/setup.py +0 -0
|
@@ -222,6 +222,9 @@ class User(flask_login.UserMixin, PermissionsCheckMixin):
|
|
|
222
222
|
permissions_url = []
|
|
223
223
|
for key, value in app_dict.items():
|
|
224
224
|
permissions_url.append(key)
|
|
225
|
+
# 3.15 添加,如果value是字符串就转成dict
|
|
226
|
+
if isinstance(value, str):
|
|
227
|
+
value = json.loads(value)
|
|
225
228
|
permissions.append(value.get("symbol", ""))
|
|
226
229
|
user.permissions_url = permissions_url
|
|
227
230
|
user.permissions = permissions
|
|
@@ -398,7 +398,7 @@ def setup_resource_register(app):
|
|
|
398
398
|
# """
|
|
399
399
|
# return send_from_directory('static', filename)
|
|
400
400
|
|
|
401
|
-
|
|
401
|
+
t
|
|
402
402
|
def setup_data_download(app):
|
|
403
403
|
@app.route(f"{current_app.config.get('ROUTE_PREFIX')}/download/data_download", methods=['POST'])
|
|
404
404
|
def data_download(download_key, data_len, params=None, column_list=None, page_size=10, file_name=""):
|
|
File without changes
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
|
|
3
|
+
from lesscode_flask.app import current_app
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TaskHelper:
|
|
7
|
+
@staticmethod
|
|
8
|
+
def add_job(func, trigger=None, args=None, kwargs=None, id=None, name=None,
|
|
9
|
+
misfire_grace_time=None, coalesce=None, max_instances=None,
|
|
10
|
+
next_run_time=None, jobstore='default', executor='default',
|
|
11
|
+
replace_existing=False, **trigger_args):
|
|
12
|
+
try:
|
|
13
|
+
util = importlib.import_module("apscheduler.util")
|
|
14
|
+
except ImportError:
|
|
15
|
+
raise Exception(f"flask_apscheduler is not exist,run:pip install flask_apscheduler==1.13.1")
|
|
16
|
+
if misfire_grace_time is None:
|
|
17
|
+
misfire_grace_time = util.undefined
|
|
18
|
+
if coalesce is None:
|
|
19
|
+
coalesce = util.undefined
|
|
20
|
+
if max_instances is None:
|
|
21
|
+
max_instances = util.undefined
|
|
22
|
+
if next_run_time is None:
|
|
23
|
+
next_run_time = util.undefined
|
|
24
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
25
|
+
job = scheduler.add_job(func=func, trigger=trigger, args=args, kwargs=kwargs, id=id, name=name,
|
|
26
|
+
misfire_grace_time=misfire_grace_time, coalesce=coalesce,
|
|
27
|
+
max_instances=max_instances,
|
|
28
|
+
next_run_time=next_run_time, jobstore=jobstore, executor=executor,
|
|
29
|
+
replace_existing=replace_existing, **trigger_args)
|
|
30
|
+
return job
|
|
31
|
+
|
|
32
|
+
@staticmethod
|
|
33
|
+
def scheduled_job(trigger, args=None, kwargs=None, id=None, name=None,
|
|
34
|
+
misfire_grace_time=None, coalesce=None, max_instances=None,
|
|
35
|
+
next_run_time=None, jobstore='default', executor='default',
|
|
36
|
+
**trigger_args):
|
|
37
|
+
try:
|
|
38
|
+
util = importlib.import_module("apscheduler.util")
|
|
39
|
+
except ImportError:
|
|
40
|
+
raise Exception(f"flask_apscheduler is not exist,run:pip install flask_apscheduler==1.13.1")
|
|
41
|
+
if misfire_grace_time is None:
|
|
42
|
+
misfire_grace_time = util.undefined
|
|
43
|
+
if coalesce is None:
|
|
44
|
+
coalesce = util.undefined
|
|
45
|
+
if max_instances is None:
|
|
46
|
+
max_instances = util.undefined
|
|
47
|
+
if next_run_time is None:
|
|
48
|
+
next_run_time = util.undefined
|
|
49
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
50
|
+
inner = scheduler.scheduled_job(trigger, args=args, kwargs=kwargs, id=id, name=name,
|
|
51
|
+
misfire_grace_time=misfire_grace_time, coalesce=coalesce,
|
|
52
|
+
max_instances=max_instances,
|
|
53
|
+
next_run_time=next_run_time, jobstore=jobstore, executor=executor,
|
|
54
|
+
**trigger_args)
|
|
55
|
+
return inner
|
|
56
|
+
|
|
57
|
+
@staticmethod
|
|
58
|
+
def modify_job(job_id, jobstore=None, **changes):
|
|
59
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
60
|
+
job = scheduler.modify_job(job_id, jobstore=jobstore, **changes)
|
|
61
|
+
return job
|
|
62
|
+
|
|
63
|
+
@staticmethod
|
|
64
|
+
def reschedule_job(job_id, jobstore=None, trigger=None, **trigger_args):
|
|
65
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
66
|
+
job = scheduler.reschedule_job(job_id, jobstore=jobstore, trigger=trigger, **trigger_args)
|
|
67
|
+
return job
|
|
68
|
+
|
|
69
|
+
@staticmethod
|
|
70
|
+
def pause_job(job_id, jobstore=None):
|
|
71
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
72
|
+
job = scheduler.pause_job(job_id, jobstore=jobstore)
|
|
73
|
+
return job
|
|
74
|
+
|
|
75
|
+
@staticmethod
|
|
76
|
+
def resume_job(job_id, jobstore=None):
|
|
77
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
78
|
+
job = scheduler.resume_job(job_id, jobstore=jobstore)
|
|
79
|
+
return job
|
|
80
|
+
|
|
81
|
+
@staticmethod
|
|
82
|
+
def get_jobs(jobstore=None, pending=None):
|
|
83
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
84
|
+
jobs = scheduler.get_jobs(jobstore=jobstore, pending=pending)
|
|
85
|
+
return jobs
|
|
86
|
+
|
|
87
|
+
@staticmethod
|
|
88
|
+
def get_job(job_id, jobstore=None):
|
|
89
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
90
|
+
job = scheduler.get_job(job_id, jobstore=jobstore)
|
|
91
|
+
return job
|
|
92
|
+
|
|
93
|
+
@staticmethod
|
|
94
|
+
def remove_job(job_id, jobstore=None):
|
|
95
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
96
|
+
scheduler.remove_job(job_id, jobstore=jobstore)
|
|
97
|
+
|
|
98
|
+
@staticmethod
|
|
99
|
+
def remove_all_jobs(jobstore=None):
|
|
100
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
101
|
+
scheduler.remove_all_jobs(jobstore=jobstore)
|
|
102
|
+
|
|
103
|
+
@staticmethod
|
|
104
|
+
def print_jobs(jobstore=None, out=None):
|
|
105
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
106
|
+
scheduler.print_jobs(jobstore=jobstore, out=out)
|
|
107
|
+
|
|
108
|
+
@staticmethod
|
|
109
|
+
def add_executor(executor, alias='default', **executor_opts):
|
|
110
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
111
|
+
scheduler.add_executor(executor, alias=alias, **executor_opts)
|
|
112
|
+
|
|
113
|
+
@staticmethod
|
|
114
|
+
def remove_executor(alias, shutdown=True):
|
|
115
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
116
|
+
scheduler.remove_executor(alias=alias, shutdown=shutdown)
|
|
117
|
+
|
|
118
|
+
@staticmethod
|
|
119
|
+
def add_jobstore(jobstore, alias='default', **jobstore_opts):
|
|
120
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
121
|
+
scheduler.add_jobstore(jobstore, alias=alias, **jobstore_opts)
|
|
122
|
+
|
|
123
|
+
@staticmethod
|
|
124
|
+
def remove_jobstore(alias, shutdown=True):
|
|
125
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
126
|
+
scheduler.remove_jobstore(alias=alias, shutdown=shutdown)
|
|
127
|
+
|
|
128
|
+
@staticmethod
|
|
129
|
+
def add_listener(callback, mask=None):
|
|
130
|
+
try:
|
|
131
|
+
events = importlib.import_module("apscheduler.events")
|
|
132
|
+
except ImportError as e:
|
|
133
|
+
raise Exception(f"flask_apscheduler is not exist,run:pip install flask_apscheduler==1.13.1")
|
|
134
|
+
if mask is None:
|
|
135
|
+
mask = events.EVENT_ALL
|
|
136
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
137
|
+
scheduler.add_listener(callback, mask=mask)
|
|
138
|
+
|
|
139
|
+
@staticmethod
|
|
140
|
+
def remove_listener(callback):
|
|
141
|
+
scheduler = getattr(current_app, 'apscheduler')
|
|
142
|
+
scheduler.remove_listener(callback)
|
|
@@ -41,6 +41,8 @@ lesscode_flask/utils/redis/redis_helper.py
|
|
|
41
41
|
lesscode_flask/utils/request/request.py
|
|
42
42
|
lesscode_flask/utils/swagger/swagger_template.py
|
|
43
43
|
lesscode_flask/utils/swagger/swagger_util.py
|
|
44
|
+
lesscode_flask/utils/task/__init__.py
|
|
45
|
+
lesscode_flask/utils/task/task_helper.py
|
|
44
46
|
lesscode_flask/utils/thread/thread_utils.py
|
|
45
47
|
redash/query_runner/__init__.py
|
|
46
48
|
redash/query_runner/clickhouse.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/export_data/data_download_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/model/resource_param_template.py
RENAMED
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/service/access_log_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/json/NotSortJSONProvider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/swagger/swagger_template.py
RENAMED
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask/utils/swagger/swagger_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.46 → lesscode_flask-0.1.49}/lesscode_flask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|