utg-base 1.16.1__tar.gz → 1.17.1__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 (74) hide show
  1. {utg_base-1.16.1 → utg_base-1.17.1}/PKG-INFO +2 -1
  2. {utg_base-1.16.1 → utg_base-1.17.1}/pyproject.toml +2 -1
  3. utg_base-1.17.1/src/utg_base/env.py +66 -0
  4. utg_base-1.16.1/src/utg_base/env.py +0 -31
  5. {utg_base-1.16.1 → utg_base-1.17.1}/README.md +0 -0
  6. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/__init__.py +0 -0
  7. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/__init__.py +0 -0
  8. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/base.py +0 -0
  9. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/pagination.py +0 -0
  10. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/permissions.py +0 -0
  11. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/routers.py +0 -0
  12. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/serializers.py +0 -0
  13. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/api/spectacular.py +0 -0
  14. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/authentications/__init__.py +0 -0
  15. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/authentications/microservice_authentication.py +0 -0
  16. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/authentications/models.py +0 -0
  17. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/__init__.py +0 -0
  18. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/apps.py +0 -0
  19. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/filters/__init__.py +0 -0
  20. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/filters/task_result.py +0 -0
  21. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/management/__init__.py +0 -0
  22. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/management/commands/__init__.py +0 -0
  23. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/management/commands/migrate_tasks.py +0 -0
  24. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/serializers/__init__.py +0 -0
  25. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/serializers/periodic_task.py +0 -0
  26. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/serializers/task_result.py +0 -0
  27. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/urls.py +0 -0
  28. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/views/__init__.py +0 -0
  29. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/views/periodic_task.py +0 -0
  30. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/celery/views/task_result.py +0 -0
  31. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/constants/__init__.py +0 -0
  32. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/constants/available_languages.py +0 -0
  33. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/logging.py +0 -0
  34. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/middleware/__init__.py +0 -0
  35. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/middleware/debug.py +0 -0
  36. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/middleware/locale.py +0 -0
  37. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/migration/__init__.py +0 -0
  38. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/migration/apps.py +0 -0
  39. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/migration/management/__init__.py +0 -0
  40. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/migration/management/commands/__init__.py +0 -0
  41. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/migration/management/commands/makemigrations.py +0 -0
  42. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/models/__init__.py +0 -0
  43. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/models/jwt_user.py +0 -0
  44. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/models/timestamp.py +0 -0
  45. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/permissions/__init__.py +0 -0
  46. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/permissions/decorators.py +0 -0
  47. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/permissions/folder.py +0 -0
  48. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/permissions/utils.py +0 -0
  49. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/references_api/__init__.py +0 -0
  50. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/references_api/apps.py +0 -0
  51. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/references_api/migrations/__init__.py +0 -0
  52. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/references_api/urls.py +0 -0
  53. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/references_api/utils.py +0 -0
  54. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/services/__init__.py +0 -0
  55. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/services/base_api.py +0 -0
  56. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/signals/__init__.py +0 -0
  57. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/signals/sync_perms.py +0 -0
  58. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/__init__.py +0 -0
  59. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/apps.py +0 -0
  60. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/constants.py +0 -0
  61. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/migrations/0001_initial.py +0 -0
  62. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/migrations/__init__.py +0 -0
  63. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/models.py +0 -0
  64. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/u_services/u_requests.py +0 -0
  65. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/__init__.py +0 -0
  66. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/data.py +0 -0
  67. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/date.py +0 -0
  68. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/dict_util.py +0 -0
  69. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/response_processors.py +0 -0
  70. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/signals.py +0 -0
  71. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/sql.py +0 -0
  72. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/string.py +0 -0
  73. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/thread.py +0 -0
  74. {utg_base-1.16.1 → utg_base-1.17.1}/src/utg_base/utils/translation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: utg-base
3
- Version: 1.16.1
3
+ Version: 1.17.1
4
4
  Summary: UTG Base Package
5
5
  Author: Olimboy
6
6
  Author-email: shavkatov.olimboy@mail.ru
@@ -17,6 +17,7 @@ Requires-Dist: djangorestframework (>=3.16.1,<4.0.0)
17
17
  Requires-Dist: djangorestframework-simplejwt[crypto] (>=5.5.1,<6.0.0)
18
18
  Requires-Dist: dotenv (>=0.9.9,<0.10.0)
19
19
  Requires-Dist: drf-spectacular[sidecar] (>=0.29.0,<0.30.0)
20
+ Requires-Dist: environs (>=14.5.0,<15.0.0)
20
21
  Requires-Dist: hvac (>=2.4.0,<3.0.0)
21
22
  Requires-Dist: inflect (>=7.2.1,<8.0.0)
22
23
  Requires-Dist: openpyxl (>=3.1.2,<4.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "utg-base"
3
- version = "1.16.1"
3
+ version = "1.17.1"
4
4
  description = "UTG Base Package"
5
5
  authors = ["Olimboy <shavkatov.olimboy@mail.ru>", "Rovshen <rovshenashirov1619@gmail.com>"]
6
6
  readme = "README.md"
@@ -21,6 +21,7 @@ django-celery-results = "^2.6.0"
21
21
  hvac = "^2.4.0"
22
22
  dotenv = "^0.9.9"
23
23
  django-redis = "^6.0.0"
24
+ environs = "^14.5.0"
24
25
 
25
26
  [[tool.poetry.source]]
26
27
  name = "PyPI"
@@ -0,0 +1,66 @@
1
+ import os
2
+ import typing
3
+ from functools import wraps
4
+
5
+ import dotenv
6
+ import hvac
7
+ from django.conf import settings
8
+ from environs import Env, _StrType, EnvError
9
+
10
+ dotenv.load_dotenv(settings.BASE_DIR / '.env')
11
+
12
+ assert os.environ.get('VAULT_URL') is not None, "VAULT_URL not defined, please set VAULT_URL on .env file"
13
+ assert os.environ.get('VAULT_TOKEN') is not None, "VAULT_TOKEN not defined, please set VAULT_TOKEN on .env file"
14
+ assert os.environ.get('VAULT_PATH') is not None, "VAULT_PATH not defined, please set VAULT_PATH on .env file"
15
+
16
+ client = hvac.Client(
17
+ url=os.environ.get("VAULT_URL"),
18
+ token=os.environ.get("VAULT_TOKEN"),
19
+ verify=False
20
+ )
21
+ if not client.is_authenticated():
22
+ raise Exception("Vault authentication failed")
23
+
24
+ envs = client.secrets.kv.read_secret_version(
25
+ path=os.environ.get("VAULT_PATH"),
26
+ mount_point="utg-scada"
27
+ )['data']['data']
28
+
29
+
30
+ class VaultEnv(Env):
31
+ _wrap_methods = {
32
+ 'int', 'bool', 'str', 'float', 'decimal',
33
+ 'list', 'dict', 'json',
34
+ 'datetime', 'date', 'time', 'timedelta',
35
+ 'path', 'log_level', 'uuid', 'url', 'enum',
36
+ 'dj_db_url', 'dj_email_url', 'dj_cache_url'
37
+ }
38
+
39
+ def __call__(self, key, default=None, **kwargs):
40
+ try:
41
+ return super().__call__(key, default=default, **kwargs)
42
+ except EnvError:
43
+ return default
44
+
45
+ def __getattribute__(self, name):
46
+ attr = super().__getattribute__(name)
47
+
48
+ if callable(attr) and name in self._wrap_methods:
49
+ @wraps(attr)
50
+ def wrapper(*args, **kwargs):
51
+ if len(args) < 2:
52
+ kwargs.setdefault("default", None)
53
+ return attr(*args, **kwargs)
54
+
55
+ return wrapper
56
+
57
+ return attr
58
+
59
+ def _get_value(self, env_key: _StrType, default: typing.Any) -> typing.Any:
60
+ if env_key in os.environ:
61
+ return os.environ.get(env_key, default)
62
+ else:
63
+ return envs.get(env_key, default)
64
+
65
+
66
+ env = VaultEnv()
@@ -1,31 +0,0 @@
1
- import os
2
-
3
- import dotenv
4
- import hvac
5
- from django.conf import settings
6
-
7
- dotenv.load_dotenv(settings.BASE_DIR / '.env')
8
-
9
- assert os.environ.get('VAULT_URL') is not None, "VAULT_URL not defined, please set VAULT_URL on .env file"
10
- assert os.environ.get('VAULT_TOKEN') is not None, "VAULT_TOKEN not defined, please set VAULT_TOKEN on .env file"
11
- assert os.environ.get('VAULT_PATH') is not None, "VAULT_PATH not defined, please set VAULT_PATH on .env file"
12
-
13
- client = hvac.Client(
14
- url=os.environ.get("VAULT_URL"),
15
- token=os.environ.get("VAULT_TOKEN"),
16
- verify=False
17
- )
18
- if not client.is_authenticated():
19
- raise Exception("Vault authentication failed")
20
-
21
- envs = client.secrets.kv.read_secret_version(
22
- path=os.environ.get("VAULT_PATH"),
23
- mount_point="utg-scada"
24
- )['data']['data']
25
-
26
-
27
- def env(key, default=None):
28
- if key in os.environ:
29
- return os.environ.get(key, default)
30
- else:
31
- return envs.get(key, default)
File without changes