utg-base 1.20.2__py3-none-any.whl → 1.21.0__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.
@@ -128,6 +128,7 @@ def create_serializer_for_partial_update(model: Model):
128
128
  fields = '__all__'
129
129
  read_only_fields = list(
130
130
  {
131
+ *get_api_meta_property(model, 'readonly_fields'),
131
132
  'created_at',
132
133
  'updated_at',
133
134
  'deleted_at',
@@ -173,6 +174,7 @@ def create_serializer(model: Model, depth=0):
173
174
  fields = '__all__'
174
175
  read_only_fields = list(
175
176
  {
177
+ *get_api_meta_property(model, 'readonly_fields'),
176
178
  'created_at',
177
179
  'updated_at',
178
180
  'deleted_at',
utg_base/utils/date.py CHANGED
@@ -1,6 +1,9 @@
1
1
  from calendar import monthrange
2
2
  from datetime import date, datetime, timedelta
3
3
 
4
+ from dateutil.relativedelta import relativedelta
5
+ from django.utils.timezone import make_aware as dj_make_aware
6
+
4
7
  DEFAULT_DATE_FORMAT = '%Y-%m-%d'
5
8
  DEFAULT_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
6
9
 
@@ -23,6 +26,18 @@ class UDate(date):
23
26
  def yesterday(self):
24
27
  return to_udate(self.datetime() - timedelta(days=1))
25
28
 
29
+ def month_ago(self):
30
+ return self - relativedelta(months=1)
31
+
32
+ def month_later(self):
33
+ return self + relativedelta(months=1)
34
+
35
+ def year_ago(self):
36
+ return self - relativedelta(years=1)
37
+
38
+ def year_later(self):
39
+ return self + relativedelta(years=1)
40
+
26
41
  def first_day_of_month(self):
27
42
  return self.replace(day=1)
28
43
 
@@ -78,7 +93,7 @@ class UDateTime(datetime):
78
93
  def last_second_of_day(self):
79
94
  return self.last_second_of_hour().replace(hour=23)
80
95
 
81
- def one_hour_later(self):
96
+ def hour_later(self):
82
97
  return self + timedelta(hours=1)
83
98
 
84
99
  def hour_ago(self):
@@ -90,6 +105,18 @@ class UDateTime(datetime):
90
105
  def yesterday(self):
91
106
  return self - timedelta(days=1)
92
107
 
108
+ def month_ago(self):
109
+ return self - relativedelta(months=1)
110
+
111
+ def month_later(self):
112
+ return self + relativedelta(months=1)
113
+
114
+ def year_ago(self):
115
+ return self - relativedelta(years=1)
116
+
117
+ def year_later(self):
118
+ return self + relativedelta(years=1)
119
+
93
120
  def first_day_of_month(self):
94
121
  return self.replace(day=1)
95
122
 
@@ -118,6 +145,9 @@ class UDateTime(datetime):
118
145
  def strftime(self, __format=DEFAULT_DATETIME_FORMAT):
119
146
  return super().strftime(__format)
120
147
 
148
+ def make_aware(self) -> UDateTime:
149
+ return dj_make_aware(self)
150
+
121
151
  @staticmethod
122
152
  def strptime(__date_string: str, __format=DEFAULT_DATETIME_FORMAT):
123
153
  return to_udatetime(datetime.strptime(__date_string, __format))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: utg-base
3
- Version: 1.20.2
3
+ Version: 1.21.0
4
4
  Summary: UTG Base Package
5
5
  Author: Olimboy
6
6
  Author-email: shavkatov.olimboy@mail.ru
@@ -47,7 +47,7 @@ utg_base/references_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
47
47
  utg_base/references_api/apps.py,sha256=thAGmO-ZT-OD9dHHBSQRL_RRt-Es_jt-mEmHgVTpERs,168
48
48
  utg_base/references_api/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  utg_base/references_api/urls.py,sha256=WkLACQ8GfK5pJkvt8FuYdOxcqSZHj7pYRw51M9WluGw,390
50
- utg_base/references_api/utils.py,sha256=2mdwI1lyHOsLinhBz19regtDdESjnx52BlWyaAq8EGk,6032
50
+ utg_base/references_api/utils.py,sha256=dpeVMJnvMDrCCueoIti7e3xVjH2Uc1gdBd2sUQTivis,6172
51
51
  utg_base/services/__init__.py,sha256=LqtwUiqEZPIbKRGJfve5D5m3ucV6Kw1Nbo5Jnj_hPhY,37
52
52
  utg_base/services/base_api.py,sha256=bMTmjy8TRN4WTCgV_1RvkquoqijJQ1hP7BBtPgW_AH0,5677
53
53
  utg_base/signals/__init__.py,sha256=5SKumqAQrfrXUzi4NO3zjPAXV2TG3EDKxOomaF-e15M,35
@@ -61,7 +61,7 @@ utg_base/u_services/models.py,sha256=seaxBj9vNWrPu1Y8r7NzHEuXemtSvqLkaw4S1Xgr58I
61
61
  utg_base/u_services/u_requests.py,sha256=fGNWWQ3RJOOARgNHkScsqlGXwP6sI-HnS3Y-HnSoVS4,1709
62
62
  utg_base/utils/__init__.py,sha256=zRTdSLGpukInlb7oRD6vcI1jKQkkBR3jTCiOiwOmRyA,159
63
63
  utg_base/utils/data.py,sha256=0_upHGaiafuZOCHaL7IT84b0E0qknCA4pHPQMFH8cdY,4135
64
- utg_base/utils/date.py,sha256=thcbK6RgTUYZfs4_vW5ucuu2e8H0rei6tv7SEC72iwM,3612
64
+ utg_base/utils/date.py,sha256=fS4o5Nd4HyNyHBJTSsasTlqSMNjnNHwocSYdinkKyeY,4371
65
65
  utg_base/utils/dict_util.py,sha256=ipdCZO8aTukGQ319OWHb2Ij5MNtV-FioJQ4qCX3Th48,758
66
66
  utg_base/utils/response_processors.py,sha256=WdZQL49wOJqCIY2MucAI6sez_llCqih0v_ltQa-mv7k,687
67
67
  utg_base/utils/signals.py,sha256=PlE0Hwz-YawZRZvcf23lBHwPNNFkwx31jQy7Tkn16u4,319
@@ -69,6 +69,6 @@ utg_base/utils/sql.py,sha256=rqIWcSjdjIMszdRnsnhV5TTYB8W17RPOujIQA9rKC_Y,762
69
69
  utg_base/utils/string.py,sha256=ATwIo9uLa00p85h_NjRYLcjRs8o3KSGF7s2yhTg5GiA,1073
70
70
  utg_base/utils/thread.py,sha256=4RqRnwtyHymY-dNcuPrMSTamE2V7wCMVfzzyIb0P4TI,2191
71
71
  utg_base/utils/translation.py,sha256=GxJHUt0iar_0E7RWBPbeLFQ4DhgXBjffHCmxfKyjFtk,463
72
- utg_base-1.20.2.dist-info/METADATA,sha256=mP9vQ1VYY-_Wwlfv9rXqA13XWqaRzbn1A38BUjOAgNs,960
73
- utg_base-1.20.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
74
- utg_base-1.20.2.dist-info/RECORD,,
72
+ utg_base-1.21.0.dist-info/METADATA,sha256=o41xOu_DkyugFzUKSvMeGp9pNhAO7EaF7fpNO6Lc3xg,960
73
+ utg_base-1.21.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
74
+ utg_base-1.21.0.dist-info/RECORD,,