jaaql-middleware-python 4.23.12__tar.gz → 4.23.13__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.
- {jaaql-middleware-python-4.23.12/jaaql_middleware_python.egg-info → jaaql-middleware-python-4.23.13}/PKG-INFO +1 -1
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/constants.py +1 -1
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/exceptions/jaaql_interpretable_handled_errors.py +4 -4
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/interpreter/interpret_jaaql.py +12 -16
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/exception_queries.py +1 -1
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/generated_queries.py +1 -1
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/04.install_jaaql_data_structures.generated.sql +621 -623
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13/jaaql_middleware_python.egg-info}/PKG-INFO +1 -1
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/LICENSE.txt +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/README.md +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/config/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/config/config-docker.ini +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/config/config-test.ini +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/config/config.ini +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/config_constants.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/db/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/db/db_interface.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/db/db_pg_interface.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/db/db_utils.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/db/db_utils_no_circ.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/documentation/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/documentation/documentation_internal.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/documentation/documentation_public.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/documentation/documentation_shared.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/email/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/email/email_manager.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/email/email_manager_service.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/email/patch_ems.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/exceptions/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/exceptions/custom_http_status.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/exceptions/http_status_exception.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/exceptions/not_yet_implement_exception.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/generated_constants.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/interpreter/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/jaaql.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/migrations/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/migrations/migration_history.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/migrations/migrations.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/base_controller.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/base_model.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/controller.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/controller_interface.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/handmade_queries.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/model.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/model_interface.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/mvc/response.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/openapi/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/openapi/swagger_documentation.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/patch.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/01.install_domains.generated.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/02.install_super_user.exceptions.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/03.install_super_user.handwritten.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/05.install_jaaql.exceptions.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/06.install_jaaql.handwritten.sql +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/scripts/swagger_template.html +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/cached_canned_query_service.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/migrations_manager_service.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/patch_mms.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/patch_shared_var_service.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/services/shared_var_service.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/__init__.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/crypt_utils.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/options.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/utils.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/utils_no_project_imports.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql/utilities/vault.py +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql_middleware_python.egg-info/SOURCES.txt +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql_middleware_python.egg-info/dependency_links.txt +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql_middleware_python.egg-info/requires.txt +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/jaaql_middleware_python.egg-info/top_level.txt +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/setup.cfg +0 -0
- {jaaql-middleware-python-4.23.12 → jaaql-middleware-python-4.23.13}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: jaaql-middleware-python
|
|
3
|
-
Version: 4.23.
|
|
3
|
+
Version: 4.23.13
|
|
4
4
|
Summary: The jaaql package, allowing for rapid development and deployment of RESTful HTTP applications
|
|
5
5
|
Home-page: https://github.com/JAAQL/JAAQL-middleware-python
|
|
6
6
|
Author: Software Quality Measurement and Improvement bv
|
|
@@ -184,12 +184,12 @@ class InvalidSecurityEventLock(JaaqlInterpretableHandledError):
|
|
|
184
184
|
|
|
185
185
|
|
|
186
186
|
class MissingParameterInQuery(JaaqlInterpretableHandledError):
|
|
187
|
-
def __init__(self,
|
|
187
|
+
def __init__(self, _set, descriptor=None):
|
|
188
188
|
super().__init__(
|
|
189
189
|
error_code=1014,
|
|
190
190
|
http_response_code=422,
|
|
191
191
|
table_name=None,
|
|
192
|
-
message=
|
|
192
|
+
message="A query has been sent that expects a parameter but this parameter has not been provided",
|
|
193
193
|
column_name=None,
|
|
194
194
|
_set=_set,
|
|
195
195
|
index=None,
|
|
@@ -198,12 +198,12 @@ class MissingParameterInQuery(JaaqlInterpretableHandledError):
|
|
|
198
198
|
|
|
199
199
|
|
|
200
200
|
class ExpectedParameterInQuery(JaaqlInterpretableHandledError):
|
|
201
|
-
def __init__(self,
|
|
201
|
+
def __init__(self, descriptor=None):
|
|
202
202
|
super().__init__(
|
|
203
203
|
error_code=1015,
|
|
204
204
|
http_response_code=422,
|
|
205
205
|
table_name=None,
|
|
206
|
-
message=
|
|
206
|
+
message="A parameter has been sent to a query that has not been used",
|
|
207
207
|
column_name=None,
|
|
208
208
|
_set=None,
|
|
209
209
|
index=None,
|
|
@@ -12,7 +12,7 @@ from psycopg.errors import OperationalError, Error
|
|
|
12
12
|
from jaaql.constants import KEY__position, KEY__file, KEY__application, KEY__error, KEY__error_row_number, KEY__error_query, \
|
|
13
13
|
KEY__error_set, KEY__error_index, SQLStateJaaql, KEY__restrictions, REGEX__dmbs_object_name
|
|
14
14
|
from jaaql.exceptions.jaaql_interpretable_handled_errors import DatabaseOperationalError, HandledProcedureError, UnhandledQueryError, UnhandledProcedureError, \
|
|
15
|
-
SingletonExpected
|
|
15
|
+
SingletonExpected
|
|
16
16
|
from typing import Union
|
|
17
17
|
|
|
18
18
|
|
|
@@ -220,8 +220,9 @@ class InterpretJAAQL:
|
|
|
220
220
|
exc_state = None
|
|
221
221
|
|
|
222
222
|
try:
|
|
223
|
-
check_unused = unused_orig_parameters.copy()
|
|
224
223
|
if prevent_unused_parameters:
|
|
224
|
+
check_unused = unused_orig_parameters.copy()
|
|
225
|
+
|
|
225
226
|
for query_key, query_obj in query.items():
|
|
226
227
|
was_store = is_dict_query and KEY_store in query_obj
|
|
227
228
|
if was_store:
|
|
@@ -229,20 +230,21 @@ class InterpretJAAQL:
|
|
|
229
230
|
else:
|
|
230
231
|
cur_query = query_obj[KEY_query]
|
|
231
232
|
|
|
232
|
-
last_query, found_parameter_dictionary = self.pre_prepare_statement(cur_query, parameters, require_presence=False
|
|
233
|
-
query_name=query_key)
|
|
233
|
+
last_query, found_parameter_dictionary = self.pre_prepare_statement(cur_query, parameters, require_presence=False)
|
|
234
234
|
enc_parameter_dictionary = {}
|
|
235
235
|
encrypt_parameters = {key: val for key, val in parameters.items() if key not in found_parameter_dictionary}
|
|
236
236
|
if len(encrypt_parameters) != 0:
|
|
237
237
|
last_query, enc_parameter_dictionary = self.pre_prepare_statement(last_query, encrypt_parameters,
|
|
238
238
|
match_regex=REGEX_enc_query_argument,
|
|
239
239
|
encryption_key=encryption_key,
|
|
240
|
-
require_presence=False
|
|
241
|
-
query_name=query_key)
|
|
240
|
+
require_presence=False)
|
|
242
241
|
|
|
243
242
|
found_params = {**found_parameter_dictionary, **enc_parameter_dictionary}
|
|
244
243
|
check_unused -= set(found_params.keys())
|
|
245
244
|
|
|
245
|
+
if len(check_unused):
|
|
246
|
+
raise HttpStatusException(ERR_unused_parameter % list(check_unused)[0], HTTPStatus.BAD_REQUEST)
|
|
247
|
+
|
|
246
248
|
for query_key, query_obj in query.items():
|
|
247
249
|
exc_query_key = query_key
|
|
248
250
|
replacement_parameters = {**past_parameters, **parameters, **query_obj[KEY_parameters]}
|
|
@@ -307,7 +309,7 @@ class InterpretJAAQL:
|
|
|
307
309
|
exc_row_number = cur_parameters.get(KEY__row_number)
|
|
308
310
|
last_query, found_parameter_dictionary = self.pre_prepare_statement(
|
|
309
311
|
cur_query, cur_parameters, for_prepare=do_prepare_only is not False and do_prepare_only is not None,
|
|
310
|
-
skipped_singletons=skipped_singletons
|
|
312
|
+
skipped_singletons=skipped_singletons)
|
|
311
313
|
|
|
312
314
|
enc_parameter_dictionary = {}
|
|
313
315
|
|
|
@@ -317,7 +319,7 @@ class InterpretJAAQL:
|
|
|
317
319
|
last_query, enc_parameter_dictionary = self.pre_prepare_statement(
|
|
318
320
|
last_query, encrypt_parameters, match_regex=REGEX_enc_query_argument,
|
|
319
321
|
encryption_key=encryption_key, for_prepare=do_prepare_only is not False and do_prepare_only is not None,
|
|
320
|
-
skipped_singletons=skipped_singletons
|
|
322
|
+
skipped_singletons=skipped_singletons)
|
|
321
323
|
|
|
322
324
|
last_query = self.encrypt_literals(last_query, encryption_key)
|
|
323
325
|
found_params = {**found_parameter_dictionary, **enc_parameter_dictionary}
|
|
@@ -391,11 +393,6 @@ class InterpretJAAQL:
|
|
|
391
393
|
res["rows"] = [
|
|
392
394
|
[decrypt_raw_ex(encryption_key, val) if col in query_obj[KEY_decrypt] and val is not None else val for val, col in
|
|
393
395
|
zip(row, res["columns"])] for row in res["rows"]]
|
|
394
|
-
|
|
395
|
-
if len(check_unused) and prevent_unused_parameters:
|
|
396
|
-
raise ExpectedParameterInQuery(ERR_unused_parameter % list(check_unused)[0], {
|
|
397
|
-
"parameters": list(check_unused)
|
|
398
|
-
})
|
|
399
396
|
except Exception as ex:
|
|
400
397
|
traceback.print_exc()
|
|
401
398
|
if isinstance(ex, OperationalError):
|
|
@@ -667,8 +664,7 @@ class InterpretJAAQL:
|
|
|
667
664
|
return new_query + query[last_end_match:]
|
|
668
665
|
|
|
669
666
|
def pre_prepare_statement(self, query, parameters, match_regex: str = REGEX_query_argument, encryption_key: bytes = None,
|
|
670
|
-
require_presence: bool = True, for_prepare: bool = False, skipped_singletons: list[str] = None
|
|
671
|
-
query_name: str = None):
|
|
667
|
+
require_presence: bool = True, for_prepare: bool = False, skipped_singletons: list[str] = None):
|
|
672
668
|
prepared = ""
|
|
673
669
|
last_index = 0
|
|
674
670
|
found_parameters = []
|
|
@@ -696,7 +692,7 @@ class InterpretJAAQL:
|
|
|
696
692
|
if skipped_singletons is not None and len(skipped_singletons) != 0:
|
|
697
693
|
missing_str += ". Is it possible the parameter exists in one of the following restricted singletons: " + ", ".join(
|
|
698
694
|
missing_str) + "?"
|
|
699
|
-
raise
|
|
695
|
+
raise HttpStatusException(missing_str, HTTPStatus.BAD_REQUEST)
|
|
700
696
|
else:
|
|
701
697
|
continue
|
|
702
698
|
elif match_str not in parameters and match_str in MARKERS:
|