nsj-rest-lib2 0.0.23__tar.gz → 0.0.25__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.
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/PKG-INFO +1 -1
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/controller/dynamic_controller.py +101 -8
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/service/entity_loader.py +10 -1
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2.egg-info/PKG-INFO +1 -1
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/setup.cfg +1 -1
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/README.md +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/ai_compiler.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/compiler.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/compiler_structures.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/dto_compiler.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/ai_entity_edl.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/api_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/column_meta_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model_base.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model_root.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/index_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/primitives.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/property_meta_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/repository_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/trait_property_meta_model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/entity_compiler.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/model.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/property_compiler.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/util/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/util/str_util.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/util/type_naming_util.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/util/type_util.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/controller/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/exception.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/redis_config.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/service/__init__.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/settings.py +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2.egg-info/SOURCES.txt +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2.egg-info/dependency_links.txt +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2.egg-info/requires.txt +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2.egg-info/top_level.txt +0 -0
- {nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nsj_rest_lib2
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.25
|
|
4
4
|
Summary: Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).
|
|
5
5
|
Home-page: https://github.com/Nasajon/nsj_rest_lib2
|
|
6
6
|
Author: Nasajon Sistemas
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/controller/dynamic_controller.py
RENAMED
|
@@ -53,10 +53,19 @@ def setup_dynamic_routes(
|
|
|
53
53
|
multidb: bool = True,
|
|
54
54
|
dynamic_root_path: str = "edl1",
|
|
55
55
|
injector_factory: Any = None,
|
|
56
|
+
escopo_in_url: bool = False,
|
|
56
57
|
) -> None:
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
if not escopo_in_url:
|
|
60
|
+
COLLECTION_DYNAMIC_ROUTE = f"/{APP_NAME}/{dynamic_root_path}/<entity_resource>"
|
|
61
|
+
ONE_DYNAMIC_ROUTE = f"/{APP_NAME}/{dynamic_root_path}/<entity_resource>/<id>"
|
|
62
|
+
else:
|
|
63
|
+
COLLECTION_DYNAMIC_ROUTE = (
|
|
64
|
+
f"/{APP_NAME}/{dynamic_root_path}/<entity_escopo>/<entity_resource>"
|
|
65
|
+
)
|
|
66
|
+
ONE_DYNAMIC_ROUTE = (
|
|
67
|
+
f"/{APP_NAME}/{dynamic_root_path}/<entity_escopo>/<entity_resource>/<id>"
|
|
68
|
+
)
|
|
60
69
|
|
|
61
70
|
def list_dynamic_wrapper(injector_factory: Any, *args: Any, **kwargs: Any) -> Any:
|
|
62
71
|
|
|
@@ -67,6 +76,16 @@ def setup_dynamic_routes(
|
|
|
67
76
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
68
77
|
entity_resource = kwargs.pop("entity_resource")
|
|
69
78
|
|
|
79
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
80
|
+
entity_escopo = ""
|
|
81
|
+
if "entity_escopo" in kwargs:
|
|
82
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
83
|
+
|
|
84
|
+
# Verificando se foi solicitado reload forçado do código
|
|
85
|
+
force_reload = False
|
|
86
|
+
if "force_reload" in kwargs:
|
|
87
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
88
|
+
|
|
70
89
|
# Lendo tenant e grupo_empresarial
|
|
71
90
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
72
91
|
|
|
@@ -80,7 +99,11 @@ def setup_dynamic_routes(
|
|
|
80
99
|
api_expose,
|
|
81
100
|
api_verbs,
|
|
82
101
|
) = entity_loader.load_entity_source(
|
|
83
|
-
entity_resource,
|
|
102
|
+
entity_resource,
|
|
103
|
+
tenant,
|
|
104
|
+
grupo_empresarial,
|
|
105
|
+
escopo=entity_escopo,
|
|
106
|
+
force_reload=force_reload,
|
|
84
107
|
)
|
|
85
108
|
|
|
86
109
|
# Verificando se essa API deve ser exposta
|
|
@@ -112,6 +135,16 @@ def setup_dynamic_routes(
|
|
|
112
135
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
113
136
|
entity_resource = kwargs.pop("entity_resource")
|
|
114
137
|
|
|
138
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
139
|
+
entity_escopo = ""
|
|
140
|
+
if "entity_escopo" in kwargs:
|
|
141
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
142
|
+
|
|
143
|
+
# Verificando se foi solicitado reload forçado do código
|
|
144
|
+
force_reload = False
|
|
145
|
+
if "force_reload" in kwargs:
|
|
146
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
147
|
+
|
|
115
148
|
# Lendo tenant e grupo_empresarial
|
|
116
149
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
117
150
|
|
|
@@ -125,7 +158,11 @@ def setup_dynamic_routes(
|
|
|
125
158
|
api_expose,
|
|
126
159
|
api_verbs,
|
|
127
160
|
) = entity_loader.load_entity_source(
|
|
128
|
-
entity_resource,
|
|
161
|
+
entity_resource,
|
|
162
|
+
tenant,
|
|
163
|
+
grupo_empresarial,
|
|
164
|
+
escopo=entity_escopo,
|
|
165
|
+
force_reload=force_reload,
|
|
129
166
|
)
|
|
130
167
|
|
|
131
168
|
# Verificando se essa API deve ser exposta
|
|
@@ -156,6 +193,16 @@ def setup_dynamic_routes(
|
|
|
156
193
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
157
194
|
entity_resource = kwargs.pop("entity_resource")
|
|
158
195
|
|
|
196
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
197
|
+
entity_escopo = ""
|
|
198
|
+
if "entity_escopo" in kwargs:
|
|
199
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
200
|
+
|
|
201
|
+
# Verificando se foi solicitado reload forçado do código
|
|
202
|
+
force_reload = False
|
|
203
|
+
if "force_reload" in kwargs:
|
|
204
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
205
|
+
|
|
159
206
|
# Lendo tenant e grupo_empresarial
|
|
160
207
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
161
208
|
|
|
@@ -169,7 +216,11 @@ def setup_dynamic_routes(
|
|
|
169
216
|
api_expose,
|
|
170
217
|
api_verbs,
|
|
171
218
|
) = entity_loader.load_entity_source(
|
|
172
|
-
entity_resource,
|
|
219
|
+
entity_resource,
|
|
220
|
+
tenant,
|
|
221
|
+
grupo_empresarial,
|
|
222
|
+
escopo=entity_escopo,
|
|
223
|
+
force_reload=force_reload,
|
|
173
224
|
)
|
|
174
225
|
|
|
175
226
|
# Verificando se essa API deve ser exposta
|
|
@@ -200,6 +251,16 @@ def setup_dynamic_routes(
|
|
|
200
251
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
201
252
|
entity_resource = kwargs.pop("entity_resource")
|
|
202
253
|
|
|
254
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
255
|
+
entity_escopo = ""
|
|
256
|
+
if "entity_escopo" in kwargs:
|
|
257
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
258
|
+
|
|
259
|
+
# Verificando se foi solicitado reload forçado do código
|
|
260
|
+
force_reload = False
|
|
261
|
+
if "force_reload" in kwargs:
|
|
262
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
263
|
+
|
|
203
264
|
# Lendo tenant e grupo_empresarial
|
|
204
265
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
205
266
|
|
|
@@ -213,7 +274,11 @@ def setup_dynamic_routes(
|
|
|
213
274
|
api_expose,
|
|
214
275
|
api_verbs,
|
|
215
276
|
) = entity_loader.load_entity_source(
|
|
216
|
-
entity_resource,
|
|
277
|
+
entity_resource,
|
|
278
|
+
tenant,
|
|
279
|
+
grupo_empresarial,
|
|
280
|
+
escopo=entity_escopo,
|
|
281
|
+
force_reload=force_reload,
|
|
217
282
|
)
|
|
218
283
|
|
|
219
284
|
# Verificando se essa API deve ser exposta
|
|
@@ -244,6 +309,16 @@ def setup_dynamic_routes(
|
|
|
244
309
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
245
310
|
entity_resource = kwargs.pop("entity_resource")
|
|
246
311
|
|
|
312
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
313
|
+
entity_escopo = ""
|
|
314
|
+
if "entity_escopo" in kwargs:
|
|
315
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
316
|
+
|
|
317
|
+
# Verificando se foi solicitado reload forçado do código
|
|
318
|
+
force_reload = False
|
|
319
|
+
if "force_reload" in kwargs:
|
|
320
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
321
|
+
|
|
247
322
|
# Lendo tenant e grupo_empresarial
|
|
248
323
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
249
324
|
|
|
@@ -257,7 +332,11 @@ def setup_dynamic_routes(
|
|
|
257
332
|
api_expose,
|
|
258
333
|
api_verbs,
|
|
259
334
|
) = entity_loader.load_entity_source(
|
|
260
|
-
entity_resource,
|
|
335
|
+
entity_resource,
|
|
336
|
+
tenant,
|
|
337
|
+
grupo_empresarial,
|
|
338
|
+
escopo=entity_escopo,
|
|
339
|
+
force_reload=force_reload,
|
|
261
340
|
)
|
|
262
341
|
|
|
263
342
|
# Verificando se essa API deve ser exposta
|
|
@@ -288,6 +367,16 @@ def setup_dynamic_routes(
|
|
|
288
367
|
return (format_json_error(msg), 400, {**DEFAULT_RESP_HEADERS})
|
|
289
368
|
entity_resource = kwargs.pop("entity_resource")
|
|
290
369
|
|
|
370
|
+
# Verificando se o identificador do escopo foi passado na URL
|
|
371
|
+
entity_escopo = ""
|
|
372
|
+
if "entity_escopo" in kwargs:
|
|
373
|
+
entity_escopo = kwargs.pop("entity_escopo")
|
|
374
|
+
|
|
375
|
+
# Verificando se foi solicitado reload forçado do código
|
|
376
|
+
force_reload = False
|
|
377
|
+
if "force_reload" in kwargs:
|
|
378
|
+
force_reload = kwargs.pop("force_reload").lower() == "true"
|
|
379
|
+
|
|
291
380
|
# Lendo tenant e grupo_empresarial
|
|
292
381
|
tenant, grupo_empresarial = _get_tenant_grupo()
|
|
293
382
|
|
|
@@ -301,7 +390,11 @@ def setup_dynamic_routes(
|
|
|
301
390
|
api_expose,
|
|
302
391
|
api_verbs,
|
|
303
392
|
) = entity_loader.load_entity_source(
|
|
304
|
-
entity_resource,
|
|
393
|
+
entity_resource,
|
|
394
|
+
tenant,
|
|
395
|
+
grupo_empresarial,
|
|
396
|
+
escopo=entity_escopo,
|
|
397
|
+
force_reload=force_reload,
|
|
305
398
|
)
|
|
306
399
|
|
|
307
400
|
# Verificando se essa API deve ser exposta
|
|
@@ -47,7 +47,12 @@ class EntityLoader:
|
|
|
47
47
|
tenant: str | None,
|
|
48
48
|
grupo_empresarial: str | None,
|
|
49
49
|
escopo: str = ESCOPO_RESTLIB2,
|
|
50
|
+
force_reload: bool = False,
|
|
50
51
|
) -> tuple[str, str, dict, bool, list[str]]:
|
|
52
|
+
# Assumind o escopo default se necessário
|
|
53
|
+
if not escopo:
|
|
54
|
+
escopo = ESCOPO_RESTLIB2
|
|
55
|
+
|
|
51
56
|
# Montando as chaves dos namespaces
|
|
52
57
|
grupo_key, tenant_key, default_key = compile_namespace_keys(
|
|
53
58
|
tenant, grupo_empresarial
|
|
@@ -85,13 +90,17 @@ class EntityLoader:
|
|
|
85
90
|
str(rd.tenant),
|
|
86
91
|
str(rd.grupo_empresarial),
|
|
87
92
|
rd.entity_scope,
|
|
93
|
+
force_reload=force_reload,
|
|
88
94
|
)
|
|
89
95
|
|
|
90
96
|
# Se o tempo entre o carregamento e agora for maior do que MIN_TIME_SOURCE_REFRESH minutos,
|
|
91
97
|
# verifica se precisa de refresh
|
|
92
98
|
time_diff = datetime.datetime.now() - loaded_entity.loaded_at
|
|
93
99
|
|
|
94
|
-
if
|
|
100
|
+
if (
|
|
101
|
+
time_diff.total_seconds() >= MIN_TIME_SOURCE_REFRESH * 60
|
|
102
|
+
or force_reload
|
|
103
|
+
):
|
|
95
104
|
# Renovando o tempo de refresh
|
|
96
105
|
loaded_entity.loaded_at = datetime.datetime.now()
|
|
97
106
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nsj_rest_lib2
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.25
|
|
4
4
|
Summary: Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).
|
|
5
5
|
Home-page: https://github.com/Nasajon/nsj_rest_lib2
|
|
6
6
|
Author: Nasajon Sistemas
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[metadata]
|
|
2
2
|
name = nsj_rest_lib2
|
|
3
|
-
version = 0.0.
|
|
3
|
+
version = 0.0.25
|
|
4
4
|
author = Nasajon Sistemas
|
|
5
5
|
author_email = contact.dev@nasajon.com.br
|
|
6
6
|
description = Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/ai_entity_edl.py
RENAMED
|
File without changes
|
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/column_meta_model.py
RENAMED
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model.py
RENAMED
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model_base.py
RENAMED
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/entity_model_root.py
RENAMED
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/index_model.py
RENAMED
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/primitives.py
RENAMED
|
File without changes
|
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/edl_model/repository_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nsj_rest_lib2-0.0.23 → nsj_rest_lib2-0.0.25}/nsj_rest_lib2/compiler/util/type_naming_util.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
|