utg-base 1.22.0__tar.gz → 1.23.0__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.22.0 → utg_base-1.23.0}/PKG-INFO +1 -1
  2. {utg_base-1.22.0 → utg_base-1.23.0}/pyproject.toml +1 -1
  3. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/permissions/decorators.py +20 -2
  4. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/data.py +4 -4
  5. {utg_base-1.22.0 → utg_base-1.23.0}/README.md +0 -0
  6. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/__init__.py +0 -0
  7. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/__init__.py +0 -0
  8. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/base.py +0 -0
  9. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/pagination.py +0 -0
  10. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/permissions.py +0 -0
  11. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/routers.py +0 -0
  12. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/serializers.py +0 -0
  13. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/api/spectacular.py +0 -0
  14. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/authentications/__init__.py +0 -0
  15. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/authentications/microservice_authentication.py +0 -0
  16. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/authentications/models.py +0 -0
  17. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/__init__.py +0 -0
  18. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/apps.py +0 -0
  19. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/filters/__init__.py +0 -0
  20. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/filters/task_result.py +0 -0
  21. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/management/__init__.py +0 -0
  22. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/management/commands/__init__.py +0 -0
  23. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/management/commands/migrate_tasks.py +0 -0
  24. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/serializers/__init__.py +0 -0
  25. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/serializers/periodic_task.py +0 -0
  26. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/serializers/task_result.py +0 -0
  27. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/urls.py +0 -0
  28. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/views/__init__.py +0 -0
  29. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/views/periodic_task.py +0 -0
  30. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/celery/views/task_result.py +0 -0
  31. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/constants/__init__.py +0 -0
  32. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/constants/accessibility_type.py +0 -0
  33. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/constants/available_languages.py +0 -0
  34. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/env.py +0 -0
  35. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/logging.py +0 -0
  36. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/middleware/__init__.py +0 -0
  37. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/middleware/debug.py +0 -0
  38. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/middleware/locale.py +0 -0
  39. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/migration/__init__.py +0 -0
  40. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/migration/apps.py +0 -0
  41. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/migration/management/__init__.py +0 -0
  42. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/migration/management/commands/__init__.py +0 -0
  43. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/migration/management/commands/makemigrations.py +0 -0
  44. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/models/__init__.py +0 -0
  45. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/models/jwt_user.py +0 -0
  46. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/models/timestamp.py +0 -0
  47. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/permissions/__init__.py +0 -0
  48. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/permissions/folder.py +0 -0
  49. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/permissions/utils.py +0 -0
  50. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/references_api/__init__.py +0 -0
  51. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/references_api/apps.py +0 -0
  52. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/references_api/migrations/__init__.py +0 -0
  53. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/references_api/urls.py +0 -0
  54. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/references_api/utils.py +0 -0
  55. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/services/__init__.py +0 -0
  56. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/services/base_api.py +0 -0
  57. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/signals/__init__.py +0 -0
  58. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/signals/sync_perms.py +0 -0
  59. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/__init__.py +0 -0
  60. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/apps.py +0 -0
  61. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/constants.py +0 -0
  62. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/migrations/0001_initial.py +0 -0
  63. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/migrations/__init__.py +0 -0
  64. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/models.py +0 -0
  65. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/u_services/u_requests.py +0 -0
  66. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/__init__.py +0 -0
  67. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/date.py +0 -0
  68. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/dict_util.py +0 -0
  69. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/response_processors.py +0 -0
  70. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/signals.py +0 -0
  71. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/sql.py +0 -0
  72. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/string.py +0 -0
  73. {utg_base-1.22.0 → utg_base-1.23.0}/src/utg_base/utils/thread.py +0 -0
  74. {utg_base-1.22.0 → utg_base-1.23.0}/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.22.0
3
+ Version: 1.23.0
4
4
  Summary: UTG Base Package
5
5
  Author: Olimboy
6
6
  Author-email: shavkatov.olimboy@mail.ru
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "utg-base"
3
- version = "1.22.0"
3
+ version = "1.23.0"
4
4
  description = "UTG Base Package"
5
5
  authors = ["Olimboy <shavkatov.olimboy@mail.ru>", "Rovshen <rovshenashirov1619@gmail.com>"]
6
6
  readme = "README.md"
@@ -1,9 +1,17 @@
1
1
  from functools import wraps
2
2
  from typing import Literal, Dict, Union, List
3
3
 
4
+ from drf_spectacular.utils import extend_schema
5
+
4
6
  from .utils import has_perms as has_permissions
5
7
 
6
8
 
9
+ def _get_perms_desc(perms, operator):
10
+ perms_text = ", ".join(perms)
11
+ desc = f"**Perms(operator={operator}):** `[{perms_text}]`"
12
+ return desc
13
+
14
+
7
15
  def has_perm(*permission: str, operator: Literal["OR", "AND"] = "OR"):
8
16
  """
9
17
  Usage:
@@ -16,6 +24,9 @@ def has_perm(*permission: str, operator: Literal["OR", "AND"] = "OR"):
16
24
 
17
25
  def decorator(view_func):
18
26
  view_func._perms = permission
27
+ description = _get_perms_desc(permission, operator)
28
+
29
+ view_func = extend_schema(description=description)(view_func)
19
30
 
20
31
  @wraps(view_func)
21
32
  def _wrapped_view(self, request, *args, **kwargs):
@@ -45,7 +56,13 @@ def has_class_perm(permissions_map: Dict[str, Union[str, List[str]]], operator:
45
56
 
46
57
  if hasattr(cls, action):
47
58
  method = getattr(cls, action)
48
- setattr(method, "_perms", perms)
59
+
60
+ description = _get_perms_desc(perms, operator)
61
+ decorated_method = extend_schema(description=description)(method)
62
+
63
+ setattr(decorated_method, "_perms", perms)
64
+ setattr(cls, action, decorated_method)
65
+
49
66
  original_initial = cls.initial
50
67
 
51
68
  @wraps(original_initial)
@@ -58,7 +75,8 @@ def has_class_perm(permissions_map: Dict[str, Union[str, List[str]]], operator:
58
75
  if isinstance(required_perms, str):
59
76
  required_perms = [required_perms]
60
77
 
61
- if not has_permissions(user_id=request.user.id, perms=required_perms, operator=operator, request=request):
78
+ if not has_permissions(user_id=request.user.id, perms=required_perms, operator=operator,
79
+ request=request):
62
80
  self.permission_denied(request)
63
81
 
64
82
  return original_initial(self, request, *args, **kwargs)
@@ -1,8 +1,8 @@
1
- import datetime
2
1
  from collections import defaultdict
3
2
  from collections.abc import Iterable
4
3
  from copy import deepcopy
5
4
 
5
+ from dateutil.relativedelta import relativedelta
6
6
  from django.db.models import QuerySet
7
7
 
8
8
  from utg_base.utils.date import UDate, UDateTime
@@ -162,12 +162,12 @@ def compute_change_percent(current, previous, ndigits=2):
162
162
  def list_to_dict(rows: Iterable[dict], key: str, key_func=None) -> dict:
163
163
  if not key_func:
164
164
  key_func = lambda x: x
165
- return {row[key_func(key)]: row for row in rows}
165
+ return {key_func(row[key]): row for row in rows}
166
166
 
167
167
 
168
- def generate_series(start: UDate | UDateTime, end: UDate | UDateTime, step: datetime.timedelta):
168
+ def generate_series(start: UDate | UDateTime, end: UDate | UDateTime, step: relativedelta):
169
169
  current = start
170
- if step.total_seconds() == 0:
170
+ if step == relativedelta():
171
171
  raise ValueError("step cannot be zero")
172
172
 
173
173
  series = []
File without changes
File without changes