nsj-rest-lib2 0.0.23__py3-none-any.whl → 0.0.25__py3-none-any.whl

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.
@@ -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
- COLLECTION_DYNAMIC_ROUTE = f"/{APP_NAME}/{dynamic_root_path}/<entity_resource>"
59
- ONE_DYNAMIC_ROUTE = f"/{APP_NAME}/{dynamic_root_path}/<entity_resource>/<id>"
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, tenant, grupo_empresarial
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, tenant, grupo_empresarial
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, tenant, grupo_empresarial
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, tenant, grupo_empresarial
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, tenant, grupo_empresarial
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, tenant, grupo_empresarial
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 time_diff.total_seconds() >= MIN_TIME_SOURCE_REFRESH * 60:
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.23
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
@@ -27,10 +27,10 @@ nsj_rest_lib2/compiler/util/str_util.py,sha256=0ReIQ2Vy4zAmVMvGv0FcUehRQw15hlz0e
27
27
  nsj_rest_lib2/compiler/util/type_naming_util.py,sha256=wTfxPCezCTt-ltSg_hkaYNH7Z05k-mlJKZd-9AMA9ac,768
28
28
  nsj_rest_lib2/compiler/util/type_util.py,sha256=HTKOH4uRTOY0YgoM8oUv_6cEcReE_bgKYXFBsQCb-3A,357
29
29
  nsj_rest_lib2/controller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- nsj_rest_lib2/controller/dynamic_controller.py,sha256=XMqxe1NW-NE5XwomXb4pSNdALQHpP74Hc26R4fnmXqg,15194
30
+ nsj_rest_lib2/controller/dynamic_controller.py,sha256=yUTTHtXz65btz_uOetjvdHGbUbYMeeOmjh1gFomi2I8,18885
31
31
  nsj_rest_lib2/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- nsj_rest_lib2/service/entity_loader.py,sha256=-Adgj8shMkLXrIV4ZDAqpOLSN--B5k9Uokfy9nrQA4I,15585
33
- nsj_rest_lib2-0.0.23.dist-info/METADATA,sha256=ABA2f_Qw57RKKdb8BGZhZjiSjqIY1GDQH36U_l0k1G4,1094
34
- nsj_rest_lib2-0.0.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
35
- nsj_rest_lib2-0.0.23.dist-info/top_level.txt,sha256=L6zh0EfH8_rur7OJ8_V-El-XEMf4qg3bkF8ADgqLVIA,14
36
- nsj_rest_lib2-0.0.23.dist-info/RECORD,,
32
+ nsj_rest_lib2/service/entity_loader.py,sha256=zzIWYiyhn51WPS9cmhj7Wysp8nBBCkZ5LBkhCRNHgL4,15844
33
+ nsj_rest_lib2-0.0.25.dist-info/METADATA,sha256=CY4P6CTjkcwKjgT160AkllI6OjbW_KeYyfTDc9YkXUo,1094
34
+ nsj_rest_lib2-0.0.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
35
+ nsj_rest_lib2-0.0.25.dist-info/top_level.txt,sha256=L6zh0EfH8_rur7OJ8_V-El-XEMf4qg3bkF8ADgqLVIA,14
36
+ nsj_rest_lib2-0.0.25.dist-info/RECORD,,