utg-base 1.1.0__py3-none-any.whl → 1.1.1__py3-none-any.whl

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.
utg_base/api/base.py ADDED
@@ -0,0 +1,75 @@
1
+ from django.utils import timezone
2
+ from django.utils.translation import activate, get_language
3
+ from rest_framework.request import Request
4
+ from rest_framework.views import APIView
5
+
6
+ from ..models import JWTUser
7
+
8
+
9
+ AVAILABLE_LANGUAGES = ['uz', 'ru', 'crl']
10
+
11
+
12
+ class BaseRequest(Request):
13
+
14
+ @property
15
+ def user(self) -> JWTUser:
16
+ return super(BaseRequest, self).user()
17
+
18
+
19
+ class BaseAPIView(APIView):
20
+ user_id_assign_fields_on_create = []
21
+ user_id_assign_fields_on_update = []
22
+ user_id_assign_fields_on_delete = []
23
+ deleted_at_field = None
24
+
25
+ def __init__(self, **kwargs):
26
+ # Check user_id_assign_fields_on_create
27
+ assert isinstance(self.user_id_assign_fields_on_create, list), (
28
+ 'Expected iterable user_id_assign_fields_on_create field'
29
+ )
30
+
31
+ # Check user_id_assign_fields_on_update
32
+ assert isinstance(self.user_id_assign_fields_on_update, list), (
33
+ 'Expected iterable user_id_assign_fields_on_update field'
34
+ )
35
+
36
+ # Check user_id_assign_fields_on_delete
37
+ assert isinstance(self.user_id_assign_fields_on_delete, list), (
38
+ 'Expected iterable user_id_assign_fields_on_delete field'
39
+ )
40
+
41
+ # Check deleted_at_field
42
+ assert isinstance(self.deleted_at_field, (str, type(None))), (
43
+ 'Expected str | None deleted_at_field field'
44
+ )
45
+ super().__init__(**kwargs)
46
+ self.request: BaseRequest | None = None
47
+
48
+ def perform_create(self, serializer):
49
+ kws = {}
50
+ for attr in getattr(self, 'user_id_assign_fields_on_create', []):
51
+ kws[attr] = self.request.user.id
52
+ serializer.save(**kws)
53
+
54
+ def perform_update(self, serializer):
55
+ kws = {}
56
+ for attr in getattr(self, 'user_id_assign_fields_on_update', []):
57
+ kws[attr] = self.request.user.id
58
+ serializer.save(**kws)
59
+
60
+ def perform_destroy(self, instance):
61
+ for attr in getattr(self, 'user_id_assign_fields_on_delete', []):
62
+ setattr(instance, attr, self.request.user.id)
63
+ if self.deleted_at_field and hasattr(instance, self.deleted_at_field):
64
+ setattr(instance, self.deleted_at_field, timezone.now())
65
+ instance.save()
66
+
67
+ def update_lang(self):
68
+ activate(self.get_language())
69
+
70
+ def get_language(self):
71
+ if lang_from_header := self.request.headers.get('accept-language'):
72
+ if lang_from_header and lang_from_header not in AVAILABLE_LANGUAGES:
73
+ lang_from_header = 'ru'
74
+
75
+ return lang_from_header or get_language()
utg_base/api/views.py ADDED
@@ -0,0 +1,13 @@
1
+
2
+ from django.db.models import Manager
3
+ from rest_framework import generics
4
+
5
+ from .base import BaseAPIView
6
+
7
+
8
+ class TranslatedListView(generics.ListAPIView, BaseAPIView):
9
+ manager: Manager
10
+
11
+ def get_queryset(self):
12
+ self.update_lang()
13
+ return self.manager.all()
@@ -1,2 +1 @@
1
- from energy_base.models.jwt_user import JWTUser
2
- from energy_base.models.deviation_reason_type import DeviationReasonType
1
+ from .jwt_user import JWTUser
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: utg-base
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: UTG Base Package
5
5
  Author: Rovshen
6
6
  Author-email: rovshenashirov1619@gmail.com
@@ -1,12 +1,14 @@
1
1
  utg_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  utg_base/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ utg_base/api/base.py,sha256=gbL3TtJKqdstpfbycvHorqpWaVRI87C1zix_MrJn0Cc,2560
3
4
  utg_base/api/pagination.py,sha256=zzIUwW3iF5G_11gFsno9y1DmgFiULQIWRHUj0LKhYfE,854
4
5
  utg_base/api/routers.py,sha256=lU54MVN2BF_q1AWp9EdXkG3m_ivYRtvbNGXFIRKz7u0,177
6
+ utg_base/api/views.py,sha256=yYCEJRouFA71cI2Ubc1A736oLg9NGWyTIVnD-Q85k6w,279
5
7
  utg_base/authentications/__init__.py,sha256=a6twO_bBf8FAHYl7PXawfR2UbBwwdueG1uS_dbq2g_I,109
6
8
  utg_base/authentications/microservice_authentication.py,sha256=6aAncxIpA4FcyRegd7QqRYvW5Wn8FxyPU0nQqCVuEs4,976
7
9
  utg_base/authentications/models.py,sha256=JQonSdXeSeoF003QlmPvH58nWmVJRKlWWjW_ySqXaYg,2496
8
10
  utg_base/logging.py,sha256=MNPUQ9Hdg-0YTFlJBOwhajqKz-8Y5P4POkqRNIU9ga8,5078
9
- utg_base/models/__init__.py,sha256=gznvlhdqzzD5o7zCzPztJfM0TvZ4JNYIgYryc8pH0VY,121
11
+ utg_base/models/__init__.py,sha256=ylLp_n2WJqvmuG-4X8yv119Ikcx-OFSYHUcnggUeQeo,30
10
12
  utg_base/models/jwt_user.py,sha256=6TQ5wB_OZBtGhRL-2MonBGZm0n0Y86s4BRTxiRlUJOk,375
11
13
  utg_base/references_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
14
  utg_base/references_api/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
@@ -15,6 +17,6 @@ utg_base/references_api/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
15
17
  utg_base/references_api/models.py,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57
16
18
  utg_base/references_api/urls.py,sha256=WkLACQ8GfK5pJkvt8FuYdOxcqSZHj7pYRw51M9WluGw,390
17
19
  utg_base/references_api/utils.py,sha256=VzQMnGeWC0I-6BkK_9Lo9eSH6wd4C766oQ84n7SBWyc,5818
18
- utg_base-1.1.0.dist-info/METADATA,sha256=9dbjCL_c_dD-omCv7Gk_NnKWRm71g9-6ycqM4ckMybI,660
19
- utg_base-1.1.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
20
- utg_base-1.1.0.dist-info/RECORD,,
20
+ utg_base-1.1.1.dist-info/METADATA,sha256=E1h80NzMbq-KXo5kWFlv-sGVZeKqlihucjvSJt_w2YM,660
21
+ utg_base-1.1.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
22
+ utg_base-1.1.1.dist-info/RECORD,,