jaaql-middleware-python 4.22.5__tar.gz → 4.22.7__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 (75) hide show
  1. {jaaql-middleware-python-4.22.5/jaaql_middleware_python.egg-info → jaaql-middleware-python-4.22.7}/PKG-INFO +1 -1
  2. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/constants.py +1 -4
  3. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/db/db_utils_no_circ.py +1 -4
  4. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/base_controller.py +5 -16
  5. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/base_model.py +1 -1
  6. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/model.py +11 -9
  7. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7/jaaql_middleware_python.egg-info}/PKG-INFO +1 -1
  8. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/LICENSE.txt +0 -0
  9. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/README.md +0 -0
  10. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/__init__.py +0 -0
  11. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/config/__init__.py +0 -0
  12. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/config/config-docker.ini +0 -0
  13. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/config/config-test.ini +0 -0
  14. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/config/config.ini +0 -0
  15. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/config_constants.py +0 -0
  16. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/db/__init__.py +0 -0
  17. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/db/db_interface.py +0 -0
  18. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/db/db_pg_interface.py +0 -0
  19. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/db/db_utils.py +0 -0
  20. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/documentation/__init__.py +0 -0
  21. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/documentation/documentation_internal.py +0 -0
  22. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/documentation/documentation_public.py +0 -0
  23. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/documentation/documentation_shared.py +0 -0
  24. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/email/__init__.py +0 -0
  25. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/email/email_manager.py +0 -0
  26. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/email/email_manager_service.py +0 -0
  27. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/email/patch_ems.py +0 -0
  28. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/exceptions/__init__.py +0 -0
  29. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/exceptions/custom_http_status.py +0 -0
  30. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/exceptions/http_status_exception.py +0 -0
  31. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/exceptions/jaaql_interpretable_handled_errors.py +0 -0
  32. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/exceptions/not_yet_implement_exception.py +0 -0
  33. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/generated_constants.py +0 -0
  34. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/interpreter/__init__.py +0 -0
  35. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/interpreter/interpret_jaaql.py +0 -0
  36. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/jaaql.py +0 -0
  37. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/migrations/__init__.py +0 -0
  38. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/migrations/migration_history.sql +0 -0
  39. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/migrations/migrations.py +0 -0
  40. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/__init__.py +0 -0
  41. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/controller.py +0 -0
  42. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/controller_interface.py +0 -0
  43. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/exception_queries.py +0 -0
  44. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/generated_queries.py +0 -0
  45. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/handmade_queries.py +0 -0
  46. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/model_interface.py +0 -0
  47. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/mvc/response.py +0 -0
  48. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/openapi/__init__.py +0 -0
  49. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/openapi/swagger_documentation.py +0 -0
  50. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/patch.py +0 -0
  51. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/01.install_domains.generated.sql +0 -0
  52. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/02.install_super_user.exceptions.sql +0 -0
  53. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/03.install_super_user.handwritten.sql +0 -0
  54. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/04.install_jaaql_data_structures.generated.sql +0 -0
  55. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/05.install_jaaql.exceptions.sql +0 -0
  56. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/06.install_jaaql.handwritten.sql +0 -0
  57. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/scripts/swagger_template.html +0 -0
  58. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/__init__.py +0 -0
  59. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/cached_canned_query_service.py +0 -0
  60. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/migrations_manager_service.py +0 -0
  61. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/patch_mms.py +0 -0
  62. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/patch_shared_var_service.py +0 -0
  63. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/services/shared_var_service.py +0 -0
  64. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/__init__.py +0 -0
  65. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/crypt_utils.py +0 -0
  66. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/options.py +0 -0
  67. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/utils.py +0 -0
  68. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/utils_no_project_imports.py +0 -0
  69. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql/utilities/vault.py +0 -0
  70. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql_middleware_python.egg-info/SOURCES.txt +0 -0
  71. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql_middleware_python.egg-info/dependency_links.txt +0 -0
  72. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql_middleware_python.egg-info/requires.txt +0 -0
  73. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/jaaql_middleware_python.egg-info/top_level.txt +0 -0
  74. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/setup.cfg +0 -0
  75. {jaaql-middleware-python-4.22.5 → jaaql-middleware-python-4.22.7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaaql-middleware-python
3
- Version: 4.22.5
3
+ Version: 4.22.7
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
@@ -50,7 +50,6 @@ CRON_hour = "hour"
50
50
  CRON_dayOfMonth = "dayOfMonth"
51
51
  CRON_month = "month"
52
52
  CRON_dayOfWeek = "dayOfWeek"
53
- CRON_year = "year"
54
53
 
55
54
  REGEX__dmbs_object_name = r'^[0-9a-zA-Z_]{1,32}$'
56
55
 
@@ -91,8 +90,6 @@ ENVIRON__jaaql_profiling = "JAAQL_PROFILING"
91
90
  ENVIRON__install_path = "INSTALL_PATH"
92
91
  ENVIRON__sentinel_url = "SENTINEL_URL"
93
92
  ENVIRON__canned_queries = "CANNED_QUERIES"
94
- ENVIRON__allow_debugging_users = "YOUR_APP_HAS_NO_SECURITY_IF_THIS_IS_TRUE__ALLOW_DEBUGGING_USERS"
95
- ENVIRON__allow_skip_oauth = "YOUR_APP_HAS_NO_SECURITY_IF_THIS_IS_TRUE__ALLOW_SKIP_AUTH"
96
93
 
97
94
  EMAIL_PARAM__unlock_key = "JAAQL__UNLOCK_KEY"
98
95
  EMAIL_PARAM__unlock_code = "JAAQL__UNLOCK_CODE"
@@ -178,5 +175,5 @@ ROLE__postgres = "postgres"
178
175
 
179
176
  PROTOCOL__postgres = "postgresql://"
180
177
 
181
- VERSION = "4.22.5"
178
+ VERSION = "4.22.7"
182
179
 
@@ -7,7 +7,7 @@ from jaaql.db.db_utils import execute_supplied_statement, create_interface_for_d
7
7
  from jaaql.exceptions.http_status_exception import HttpStatusException
8
8
  from jaaql.interpreter.interpret_jaaql import InterpretJAAQL
9
9
  from jaaql.constants import KEY__application, KEY__database, KEY__schema, KEY__role, DB__jaaql, \
10
- KEY__read_only, KEY__prevent_unused_parameters, KEY__debugging_account_id, ENVIRON__allow_debugging_users
10
+ KEY__read_only, KEY__prevent_unused_parameters
11
11
  from jaaql.db.db_interface import DBInterface
12
12
  from jaaql.utilities.utils_no_project_imports import objectify
13
13
  from jaaql.mvc.generated_queries import application__select
@@ -56,9 +56,6 @@ def get_required_db(vault, config, jaaql_connection: DBInterface, inputs: dict,
56
56
 
57
57
  sub_role = inputs.pop(KEY__role) if KEY__role in inputs else None
58
58
 
59
- if os.environ.get(ENVIRON__allow_debugging_users) == "TRUE" and inputs.get(KEY__debugging_account_id) is not None:
60
- account_id = inputs.pop(KEY__debugging_account_id)
61
-
62
59
  required_db = create_interface_for_db(vault, config, account_id, inputs[KEY__database], sub_role)
63
60
  else:
64
61
  if interface is None:
@@ -190,9 +190,7 @@ class BaseJAAQLController:
190
190
  for itm in data[arg.name]:
191
191
  BaseJAAQLController.validate_data_rec(arg.arg_type.responses, itm, fill_missing)
192
192
  elif arg.name in data and arg.arg_type == ARG_RESP__allow_all:
193
- if not isinstance(data[arg.name], dict):
194
- raise HttpStatusException(ERR__argument_wrong_type % (arg.name, type(data[arg.name]).__name__,
195
- type(dict).__name__), HTTPStatus.BAD_REQUEST)
193
+ continue
196
194
  elif arg.name in data and not isinstance(data[arg.name], arg.arg_type):
197
195
  if data[arg.name] is None and not arg.required:
198
196
  continue
@@ -484,32 +482,23 @@ class BaseJAAQLController:
484
482
  bypass_super = request.headers.get(HEADER__security_bypass)
485
483
  bypass_jaaql = request.headers.get(HEADER__security_bypass_jaaql)
486
484
  bypass_user = request.headers.get(HEADER__security_specify_user)
487
- if bypass_super or bypass_jaaql:
485
+ if bypass_super or bypass_jaaql or bypass_user:
488
486
  if ip_addr not in IPS__local:
489
487
  raise HttpStatusException("Bypass used in none local context: " + ip_addr, HTTPStatus.UNAUTHORIZED)
490
- miss_super_bypass = bypass_super and bypass_super != self.model.local_super_access_key
488
+ miss_super_bypass = (bypass_super or bypass_user) and bypass_super != self.model.local_super_access_key
491
489
  miss_jaaql_bypass = bypass_jaaql and bypass_jaaql != self.model.local_jaaql_access_key
492
490
  if miss_super_bypass or miss_jaaql_bypass:
493
491
  raise HttpStatusException("Invalid bypass key", HTTPStatus.UNAUTHORIZED)
494
492
 
495
493
  is_public = False
496
494
  username = USERNAME__super_db if bypass_super else USERNAME__jaaql
495
+ if bypass_user:
496
+ username = bypass_user
497
497
  account_id, ip_id = self.model.get_bypass_user(username, ip_addr)
498
498
 
499
499
  if verification_hook:
500
500
  verification_hook.put((True, None, None))
501
501
 
502
- elif bypass_user:
503
- if not self.model.is_container or os.environ.get(ENVIRON__allow_skip_oauth) == "TRUE":
504
- is_public = False
505
- account_id, ip_id = self.model.get_bypass_user(bypass_user, ip_addr)
506
- username = bypass_user
507
-
508
- if verification_hook:
509
- verification_hook.put((True, None, None))
510
- else:
511
- raise HttpStatusException("Cannot bypass user!")
512
-
513
502
  elif verification_hook:
514
503
  account_id, username, ip_id, is_public, remember_me = self.model.verify_auth_token_threaded(security_key,
515
504
  ip_addr, verification_hook)
@@ -245,7 +245,7 @@ class BaseJAAQLModel:
245
245
  self.vault.insert_obj(VAULT_KEY__super_local_access_key, str(uuid.uuid4()))
246
246
 
247
247
  self.local_jaaql_access_key = self.vault.get_obj(VAULT_KEY__jaaql_local_access_key)
248
- self.local_super_access_key = self.vault.get_obj(VAULT_KEY__super_local_access_key)
248
+ self.local_super_access_key = os.environ.get("JAAQL__SUPER_BYPASS_KEY", self.vault.get_obj(VAULT_KEY__super_local_access_key))
249
249
 
250
250
  if self.vault.has_obj(VAULT_KEY__jaaql_lookup_connection):
251
251
  if self.is_container:
@@ -392,7 +392,7 @@ WHERE
392
392
  if not self.vault.get_obj(VAULT_KEY__allow_jaaql_uninstall):
393
393
  raise HttpStatusException("JAAQL not permitted to uninstall itself")
394
394
  DBPGInterface.close_all_pools()
395
- subprocess.run("crontab -l | grep -v '# jaaql__' | crontab -", check=True, shell=True)
395
+ subprocess.run("crontab -l 2> /dev/null | grep -v '# jaaql__' | crontab -", check=True, shell=True)
396
396
  subprocess.call("./pg_reboot.sh", cwd="/")
397
397
  else:
398
398
  subprocess.call("docker kill jaaql_pg")
@@ -1160,21 +1160,23 @@ WHERE
1160
1160
  format_field(cron.get(CRON_hour)),
1161
1161
  format_field(cron.get(CRON_dayOfMonth)),
1162
1162
  format_field(cron.get(CRON_month)),
1163
- format_field(cron.get(CRON_dayOfWeek)),
1164
- format_field(cron.get(CRON_year))
1163
+ format_field(cron.get(CRON_dayOfWeek))
1165
1164
  ]
1166
1165
  return ' '.join(parts)
1167
1166
 
1168
1167
  def add_cron_job_to_application(self, connection: DBInterface, cron_input: dict):
1169
1168
  self.is_super_admin(connection)
1169
+ application = cron_input.pop(KEY__application)
1170
+ application__select(connection, application)
1171
+ command = cron_input.pop(KEY__command)
1172
+ if '"' in command:
1173
+ raise HttpStatusException("Please do not use double quotes in your cron expression!")
1174
+ cron_string = self.cron_expression_to_string(cron_input)
1175
+ cron_command = '(crontab -l 2> /dev/null; echo "' + cron_string + ' ' + command + ' # jaaql__' + application + '") | crontab -'
1170
1176
  if self.is_container:
1171
- application = cron_input.pop(KEY__application)
1172
- application__select(connection, application)
1173
- command = cron_input.pop(KEY__command)
1174
- cron_string = self.cron_expression_to_string(cron_input)
1175
- cron_command = '(crontab - l 2 > /dev/null; echo "' + cron_string + ' ' + command + ' # jaaql__' + application + '") | crontab -'
1176
- subprocess.run(cron_command, check=True, shell=True)
1177
+ subprocess.run(cron_command, check=True, shell=True, timeout=5)
1177
1178
  else:
1179
+ print(cron_command)
1178
1180
  print("Cron not supported in debugging mode", file=sys.stderr)
1179
1181
 
1180
1182
  def submit(self, inputs: dict, account_id: str, verification_hook: Queue = None, as_objects: bool = False, singleton: bool = False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaaql-middleware-python
3
- Version: 4.22.5
3
+ Version: 4.22.7
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