liberty-framework 6.0.66__tar.gz → 6.0.68__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 (110) hide show
  1. {liberty_framework-6.0.66/liberty_framework.egg-info → liberty_framework-6.0.68}/PKG-INFO +1 -1
  2. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/alembic/env.py +5 -3
  3. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/alembic.ini +1 -1
  4. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/config/files/liberty.ini +7 -2
  5. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/database/base_dao.py +15 -11
  6. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/airflow.dump +0 -0
  7. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/gitea.dump +0 -0
  8. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/keycloak.dump +0 -0
  9. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/liberty.dump +0 -0
  10. liberty_framework-6.0.68/liberty/framework/postgres/dump/libnarf.dump +0 -0
  11. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/libnjde.dump +0 -0
  12. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/libnsx1.dump +0 -0
  13. liberty_framework-6.0.68/liberty/framework/postgres/dump/nomaarf.dump +0 -0
  14. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/nomajde.dump +0 -0
  15. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/nomasx1.dump +0 -0
  16. liberty_framework-6.0.66/liberty/framework/public/frontend/assets/index-JciO17Ha.js → liberty_framework-6.0.68/liberty/framework/public/frontend/assets/index-BG2cTHbD.js +19 -19
  17. liberty_framework-6.0.66/liberty/framework/public/frontend/assets/index-JciO17Ha.js.map → liberty_framework-6.0.68/liberty/framework/public/frontend/assets/index-BG2cTHbD.js.map +1 -1
  18. liberty_framework-6.0.66/liberty/framework/public/frontend/assets/index.es-D6oC0jBA-D4MGSJYE.js → liberty_framework-6.0.68/liberty/framework/public/frontend/assets/index.es-CBlJRKZK-BJ6huwhw.js +2 -2
  19. liberty_framework-6.0.66/liberty/framework/public/frontend/assets/index.es-D6oC0jBA-D4MGSJYE.js.map → liberty_framework-6.0.68/liberty/framework/public/frontend/assets/index.es-CBlJRKZK-BJ6huwhw.js.map +1 -1
  20. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/frontend/index.html +1 -1
  21. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/services/api_services.py +2 -3
  22. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/data/liberty.json +28164 -28145
  23. liberty_framework-6.0.66/liberty/framework/setup/data/libnetl.json → liberty_framework-6.0.68/liberty/framework/setup/data/libnarf.json +1278 -1351
  24. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/data/libnjde.json +8882 -8880
  25. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/data/libnsx1.json +28841 -28593
  26. liberty_framework-6.0.68/liberty/framework/setup/data/nomaarf.json +3 -0
  27. liberty_framework-6.0.68/liberty/framework/setup/models/nomaarf.py +36 -0
  28. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/setup.py +8 -4
  29. {liberty_framework-6.0.66 → liberty_framework-6.0.68/liberty_framework.egg-info}/PKG-INFO +1 -1
  30. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty_framework.egg-info/SOURCES.txt +9 -6
  31. liberty_framework-6.0.66/liberty/framework/postgres/dump/libnetl.dump +0 -0
  32. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/LICENSE.md +0 -0
  33. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/MANIFEST.in +0 -0
  34. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/README.md +0 -0
  35. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/__init__.py +0 -0
  36. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/__init__.py +0 -0
  37. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/alembic/README +0 -0
  38. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/alembic/script.py.mako +0 -0
  39. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/alembic/versions/README +0 -0
  40. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/business/__init__.py +0 -0
  41. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/business/oracle.py +0 -0
  42. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/business/postgres.py +0 -0
  43. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/config/__init__.py +0 -0
  44. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/controllers/__init__.py +0 -0
  45. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/controllers/api_controller.py +0 -0
  46. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/controllers/setup_controller.py +0 -0
  47. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/controllers/socket_controller.py +0 -0
  48. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/database/__init__.py +0 -0
  49. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/database/ora_dao.py +0 -0
  50. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/database/pg_dao.py +0 -0
  51. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/logs/__init__.py +0 -0
  52. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/main.py +0 -0
  53. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/__init__.py +0 -0
  54. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/ai.py +0 -0
  55. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/apidb.py +0 -0
  56. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/applications.py +0 -0
  57. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/auth.py +0 -0
  58. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/base.py +0 -0
  59. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/modules.py +0 -0
  60. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/pool.py +0 -0
  61. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/setup.py +0 -0
  62. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/models/themes.py +0 -0
  63. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/__init__.py +0 -0
  64. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/postgres/dump/__init__.py +0 -0
  65. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/__init__.py +0 -0
  66. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/frontend/assets/background_ly-VdfFMP8a.jpg +0 -0
  67. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/frontend/assets/logo_ly-HGj2PB94.svg +0 -0
  68. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/frontend/assets/purify.es-BGDLgQxM-VhQmH9Os.js +0 -0
  69. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/frontend/assets/purify.es-BGDLgQxM-VhQmH9Os.js.map +0 -0
  70. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/offline/assets/logo_ly.png +0 -0
  71. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/offline/index.html +0 -0
  72. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/index.html +0 -0
  73. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/setup/assets/background_ly-VdfFMP8a.jpg +0 -0
  74. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/setup/assets/index-BBGAGXd2.css +0 -0
  75. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/setup/assets/index-knz6QXph.js +0 -0
  76. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/setup/assets/index-knz6QXph.js.map +0 -0
  77. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/public/setup/setup/assets/logo_ly-HGj2PB94.svg +0 -0
  78. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/routes/__init__.py +0 -0
  79. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/routes/api_routes.py +0 -0
  80. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/routes/react_routes.py +0 -0
  81. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/routes/setup_routes.py +0 -0
  82. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/routes/socket_routes.py +0 -0
  83. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/services/__init__.py +0 -0
  84. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/services/db_pool.py +0 -0
  85. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/services/rest_services.py +0 -0
  86. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/__init__.py +0 -0
  87. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/data/__init__.py +0 -0
  88. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/data/nomasx1.json +0 -0
  89. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/models/__init__.py +0 -0
  90. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/models/liberty.py +0 -0
  91. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/models/nomasx1.py +0 -0
  92. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/__init__.py +0 -0
  93. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/alembic.py +0 -0
  94. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/dump.py +0 -0
  95. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/install.py +0 -0
  96. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/setup/services/models.py +0 -0
  97. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/__init__.py +0 -0
  98. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/common.py +0 -0
  99. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/encrypt.py +0 -0
  100. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/jwt.py +0 -0
  101. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/logs.py +0 -0
  102. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty/framework/utils/test.py +0 -0
  103. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty_framework.egg-info/dependency_links.txt +0 -0
  104. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty_framework.egg-info/entry_points.txt +0 -0
  105. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty_framework.egg-info/requires.txt +0 -0
  106. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/liberty_framework.egg-info/top_level.txt +0 -0
  107. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/pyproject.toml +0 -0
  108. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/requirements.txt +0 -0
  109. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/setup.cfg +0 -0
  110. {liberty_framework-6.0.66 → liberty_framework-6.0.68}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: liberty-framework
3
- Version: 6.0.66
3
+ Version: 6.0.68
4
4
  Summary: Liberty Framework
5
5
  Author: Franck Blettner
6
6
  Author-email: franck.blettner@nomana-it.fr
@@ -9,7 +9,7 @@ from sqlalchemy import pool
9
9
 
10
10
  from alembic import context
11
11
  from liberty.framework.config import get_db_properties_path
12
- from liberty.framework.setup.models import liberty, nomasx1
12
+ from liberty.framework.setup.models import liberty, nomasx1, nomaarf
13
13
  from liberty.framework.utils.encrypt import Encryption
14
14
  from liberty.framework.utils.jwt import JWT
15
15
 
@@ -46,8 +46,9 @@ target_metadata = {
46
46
  "liberty": liberty.Base.metadata,
47
47
  "libnsx1": liberty.Base.metadata,
48
48
  "libnjde": liberty.Base.metadata,
49
- "libnetl": liberty.Base.metadata,
49
+ "libnarf": liberty.Base.metadata,
50
50
  "nomasx1": nomasx1.Base.metadata,
51
+ "nomaarf": nomaarf.Base.metadata,
51
52
  }
52
53
 
53
54
  # other values from the config, defined by the needs of env.py,
@@ -69,8 +70,9 @@ database_url ={
69
70
  "liberty": f"postgresql+psycopg2://liberty:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/liberty",
70
71
  "libnsx1": f"postgresql+psycopg2://libnsx1:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/libnsx1",
71
72
  "libnjde": f"postgresql+psycopg2://libnjde:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/libnjde",
72
- "libnetl": f"postgresql+psycopg2://libnetl:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/libnetl",
73
+ "libnarf": f"postgresql+psycopg2://libnarf:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/libnarf",
73
74
  "nomasx1": f"postgresql+psycopg2://nomasx1:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/nomasx1",
75
+ "nomaarf": f"postgresql+psycopg2://nomaarf:{encryption.decrypt_text(db_config.get('password'))}@{db_config.get('host')}:{db_config.get('port')}/nomaarf",
74
76
  }
75
77
 
76
78
 
@@ -63,7 +63,7 @@ version_path_separator = os
63
63
  # are written from script.py.mako
64
64
  # output_encoding = utf-8
65
65
 
66
- databases = liberty, libnsx1, libnjde, libnetl, nomasx1
66
+ databases = liberty, libnsx1, libnjde, libnarf, nomasx1, nomaarf
67
67
 
68
68
  [post_write_hooks]
69
69
  # post_write_hooks defines scripts or Python functions that are run
@@ -1,5 +1,5 @@
1
1
  [repository]
2
- databases = liberty, libnsx1, libnjde, libnetl
2
+ databases = liberty, libnsx1, libnjde, libnarf, nomasx1, nomaarf
3
3
 
4
4
  [liberty]
5
5
  model = true
@@ -16,7 +16,7 @@ model = false
16
16
  data = true
17
17
  tables =
18
18
 
19
- [libnetl]
19
+ [libnarf]
20
20
  model = false
21
21
  data = true
22
22
  tables =
@@ -30,3 +30,8 @@ tables = settings_db_features, settings_db_options, settings_db_versions, settin
30
30
  model = false
31
31
  data = false
32
32
  tables =
33
+
34
+ [nomaarf]
35
+ model = true
36
+ data = false
37
+ tables =
@@ -4,7 +4,7 @@ logger = logging.getLogger(__name__)
4
4
  from sqlalchemy.ext.asyncio import AsyncSession
5
5
  from sqlalchemy.orm import sessionmaker
6
6
  from datetime import datetime, date
7
- from typing import Any, Dict, List, Optional
7
+ from typing import Any, Dict, List, Optional, Union
8
8
  from sqlalchemy import text
9
9
  import re
10
10
  from abc import abstractmethod
@@ -132,9 +132,9 @@ class BaseDAO:
132
132
  self.engine = None # Reset the engine to None
133
133
  self.async_session = None # Reset the sessionmaker to None
134
134
 
135
- def replace_variables_placeholders(self, query: str, variables: List[Dict[str, str]]) -> str:
135
+ def replace_variables_placeholders(self, query: str, variables: Dict[str, Union[str, int, float, None]]) -> str:
136
136
  for name, value in variables.items():
137
- if name != "\r":
137
+ if name != "\r" :
138
138
  if isinstance(value, (int, float)) or value is not None:
139
139
  # Handle dollar signs and escape single quotes in strings
140
140
  if isinstance(value, str):
@@ -165,12 +165,16 @@ class BaseDAO:
165
165
 
166
166
  if "q" in context:
167
167
  # Create the where clause of the query with the context
168
- where = json.loads(context["q"])
169
- query = await self.construct_query_where(query, where)
168
+ q = json.loads(context["q"])
169
+ query = await self.construct_query_where(query, q)
170
170
 
171
171
  if "where" in context:
172
172
  query = self.replace_variables_placeholders(query, context["where"])
173
173
 
174
+ if "params" in context:
175
+ params = json.loads(context["params"])
176
+ query = self.replace_variables_placeholders(query, params)
177
+
174
178
  # Add ORDER BY Clause
175
179
  if target_query[0][1] is not None:
176
180
  query += '\nORDER BY ' + target_query[0][1]
@@ -269,22 +273,18 @@ class BaseDAO:
269
273
  raise RuntimeError(f"Query execution failed: {str(err)}")
270
274
 
271
275
 
272
- async def get(self, query: str, context, params: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]:
276
+ async def get(self, query: str, context) -> List[Dict[str, Any]]:
273
277
  """
274
278
  Executes a query and returns the result along with metadata.
275
279
 
276
280
  Args:
277
281
  query (str): The SQL query to execute.
278
- params (Optional[Dict[str, Any]]): Query parameters.
279
-
280
282
  Returns:
281
283
  Dict[str, Any]: A dictionary containing rows, column metadata, and row count.
282
284
  """
283
285
  try:
284
286
  # Use SQLAlchemy's `text` to prepare the query
285
287
  statement = await self.build_query(query, context, False)
286
- if params:
287
- self.replace_variables_placeholders(query, params)
288
288
 
289
289
  # Open a session
290
290
  async with self.get_session() as session:
@@ -386,7 +386,11 @@ class BaseDAO:
386
386
  async with session.begin(): # Start a transaction
387
387
  result = await session.execute(text(statement))
388
388
  # Commit is implicit in session.begin() if no exception is raised
389
- return result.rowcount
389
+ if "returning" in statement.lower():
390
+ rows = [dict(row) for row in result.mappings().all()]
391
+ else:
392
+ rows = []
393
+ return {"count": result.rowcount, "rows": rows}
390
394
  except Exception as e:
391
395
  logger.exception(f"Error executing statement: {e}")
392
396
  import traceback