clear-skies 1.18.32__py3-none-any.whl → 1.19.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.
Potentially problematic release.
This version of clear-skies might be problematic. Click here for more details.
- {clear_skies-1.18.32.dist-info → clear_skies-1.19.1.dist-info}/METADATA +1 -1
- {clear_skies-1.18.32.dist-info → clear_skies-1.19.1.dist-info}/RECORD +11 -8
- clearskies/column_types/__init__.py +23 -0
- clearskies/column_types/created.py +13 -3
- clearskies/column_types/created_micro.py +26 -0
- clearskies/column_types/datetime.py +19 -3
- clearskies/column_types/datetime_micro.py +12 -0
- clearskies/column_types/updated.py +13 -3
- clearskies/column_types/updated_micro.py +24 -0
- {clear_skies-1.18.32.dist-info → clear_skies-1.19.1.dist-info}/LICENSE +0 -0
- {clear_skies-1.18.32.dist-info → clear_skies-1.19.1.dist-info}/WHEEL +0 -0
|
@@ -54,19 +54,21 @@ clearskies/backends/memory_backend.py,sha256=6Ts_NtP9S_QisvpNcQKO0CUqhCRAuL3d5LZ
|
|
|
54
54
|
clearskies/backends/restful_api_advanced_search_backend.py,sha256=uiR4SEKhLNmczYJEAkVMIdPWxQc4YWSp-_WzcSL7DEo,5480
|
|
55
55
|
clearskies/backends/secrets_backend.py,sha256=4lzrgdL_O_pgCT5HknV2gotFgp9GzjQ5_2n0-4H4kvs,2204
|
|
56
56
|
clearskies/binding_config.py,sha256=bF8LBNEgJacwKCqToAtDqN9hv5omzU7zt_4qB9KPtE0,457
|
|
57
|
-
clearskies/column_types/__init__.py,sha256=
|
|
57
|
+
clearskies/column_types/__init__.py,sha256=QHEFFd3wRXvaOR7uZk-bpVLlLoTiN3D4S8sBU9rFwCE,4330
|
|
58
58
|
clearskies/column_types/audit.py,sha256=meDFV0s4u9i6UojN5f6EQk_kh-nGP8xPscCRa2Nd-yw,8102
|
|
59
59
|
clearskies/column_types/belongs_to.py,sha256=a64yQ1kWRiljOfHToGsyKbAqdgNLvbRKBYEzrp1IWXo,10714
|
|
60
60
|
clearskies/column_types/boolean.py,sha256=1yyM1CUfgD84pPE65c1OP1Qjf_J0Z45hjPrDR51AUkQ,1878
|
|
61
61
|
clearskies/column_types/category_tree.py,sha256=PgNmzZPyqYS5NADH_QTCxLvDXZFxzv5ESKTkvPrrLXo,9140
|
|
62
62
|
clearskies/column_types/column.py,sha256=PUrFyA2KmSyAZTAiJPfHy5Dlc1YPEb62c7r0BOTkF1s,13541
|
|
63
|
-
clearskies/column_types/created.py,sha256=
|
|
63
|
+
clearskies/column_types/created.py,sha256=S78e1VuvvUPYiI79gWGqlPzMSLIbXMpaYQMw8as7l38,615
|
|
64
64
|
clearskies/column_types/created_by_authorization_data.py,sha256=--1w1TOSo2CMwrpn6Y_iorl2RTqLgG8MbR8k27qreew,1108
|
|
65
65
|
clearskies/column_types/created_by_header.py,sha256=5sY6vjtra-BrAgUE4zkuLhBtzCVWHNtJPwMozPw_7_s,520
|
|
66
66
|
clearskies/column_types/created_by_ip.py,sha256=wwCUoEwHEVGN89x4xP7NJ6QR85Aum6v3JmxofoQrqtg,395
|
|
67
67
|
clearskies/column_types/created_by_routing_data.py,sha256=EhVorRaGV2OhEb0YSPwPmrsK2NQycYgGEd4ab8-qI2I,569
|
|
68
68
|
clearskies/column_types/created_by_user_agent.py,sha256=sSYDRrqSjsCwcYlhF_s9NO-iDww3PaH6aO2ATp_SKGQ,419
|
|
69
|
-
clearskies/column_types/
|
|
69
|
+
clearskies/column_types/created_micro.py,sha256=EqeHB3ZHbi4nCa1rbrKy1TbooT9U3Kfw5z4jUvLi32U,636
|
|
70
|
+
clearskies/column_types/datetime.py,sha256=OEy5eMfqWp6KOqEHQa3Ga_tl0oawtcMRBafI1SPYDFk,4275
|
|
71
|
+
clearskies/column_types/datetime_micro.py,sha256=3DxtkeJZhWigdni7QEJFV3BJuCmXJMyFQjDZ9jyI144,328
|
|
70
72
|
clearskies/column_types/email.py,sha256=rCaCFCxGhVzJcYVeGm98S6e7myJ6eQX9YznqAZIgwQI,606
|
|
71
73
|
clearskies/column_types/float.py,sha256=j8jJeBueSOusPtAFCWgLHYBncfLnqT1U7bh1zcAkYiA,1332
|
|
72
74
|
clearskies/column_types/has_many.py,sha256=Z4oM1g2dQx6H9171c52FLC41nLryCOKmh51I75mYmmY,5895
|
|
@@ -76,7 +78,8 @@ clearskies/column_types/many_to_many.py,sha256=Yu5wmMkVqRteMrH_8uSZK-bM_IrfDyv6A
|
|
|
76
78
|
clearskies/column_types/many_to_many_with_data.py,sha256=NOYjZedeLIWVyDV4BTRyNmhkNHZzx6SkHLFbL-VqHQU,7769
|
|
77
79
|
clearskies/column_types/select.py,sha256=1oBslTJ_7QCjlFeEcwJVRL-ED4sXwCESVFRAOonvG2I,297
|
|
78
80
|
clearskies/column_types/string.py,sha256=XbHC31TmlW0k86cvdVJBDyowU8Xis6Te6R0rPLXgLpI,863
|
|
79
|
-
clearskies/column_types/updated.py,sha256=
|
|
81
|
+
clearskies/column_types/updated.py,sha256=FNyRK-PS6lgFQ9QN2VrcIZP2g5EHGhll6pf-MgqMH7s,566
|
|
82
|
+
clearskies/column_types/updated_micro.py,sha256=3geqsV4nsPB9xDKyvQDGniU-KMqM8WvoqHfUYcBqGJY,587
|
|
80
83
|
clearskies/column_types/uuid.py,sha256=pA6Cd-1QSRuUpz0PxWAGRdG01hW7bpIicOhhJvAvDkQ,711
|
|
81
84
|
clearskies/columns.py,sha256=3PgLopL1l20vVWaUqOJkwXMr06a-gFHEsbExfOWVB4I,5925
|
|
82
85
|
clearskies/condition_parser.py,sha256=IXl51-rDxws7-nAtTVu_m6gTegtpkDnoGAFX2MTPDIo,6589
|
|
@@ -189,7 +192,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
|
|
|
189
192
|
clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
|
|
190
193
|
clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
|
|
191
194
|
clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
|
|
192
|
-
clear_skies-1.
|
|
193
|
-
clear_skies-1.
|
|
194
|
-
clear_skies-1.
|
|
195
|
-
clear_skies-1.
|
|
195
|
+
clear_skies-1.19.1.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
|
|
196
|
+
clear_skies-1.19.1.dist-info/METADATA,sha256=DX_73NV_YKj9ZGgLCWUMttObuA9R60kC4_EQXfTVgqs,1366
|
|
197
|
+
clear_skies-1.19.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
198
|
+
clear_skies-1.19.1.dist-info/RECORD,,
|
|
@@ -9,7 +9,9 @@ from .created_by_header import CreatedByHeader
|
|
|
9
9
|
from .created_by_ip import CreatedByIp
|
|
10
10
|
from .created_by_routing_data import CreatedByRoutingData
|
|
11
11
|
from .created_by_user_agent import CreatedByUserAgent
|
|
12
|
+
from .created_micro import CreatedMicro
|
|
12
13
|
from .datetime import DateTime
|
|
14
|
+
from .datetime_micro import DateTimeMicro
|
|
13
15
|
from .email import Email
|
|
14
16
|
from .float import Float
|
|
15
17
|
from .has_many import HasMany
|
|
@@ -20,6 +22,7 @@ from .many_to_many_with_data import ManyToManyWithData
|
|
|
20
22
|
from .select import Select
|
|
21
23
|
from .string import String
|
|
22
24
|
from .updated import Updated
|
|
25
|
+
from .updated_micro import UpdatedMicro
|
|
23
26
|
from .uuid import UUID
|
|
24
27
|
|
|
25
28
|
|
|
@@ -67,10 +70,18 @@ def created_by_user_agent(name, **kwargs):
|
|
|
67
70
|
return build_column_config(name, CreatedByUserAgent, **kwargs)
|
|
68
71
|
|
|
69
72
|
|
|
73
|
+
def created_micro(name, **kwargs):
|
|
74
|
+
return build_column_config(name, CreatedMicro, **kwargs)
|
|
75
|
+
|
|
76
|
+
|
|
70
77
|
def datetime(name, **kwargs):
|
|
71
78
|
return build_column_config(name, DateTime, **kwargs)
|
|
72
79
|
|
|
73
80
|
|
|
81
|
+
def datetime_micro(name, **kwargs):
|
|
82
|
+
return build_column_config(name, DateTimeMicro, **kwargs)
|
|
83
|
+
|
|
84
|
+
|
|
74
85
|
def email(name, **kwargs):
|
|
75
86
|
return build_column_config(name, Email, **kwargs)
|
|
76
87
|
|
|
@@ -111,6 +122,10 @@ def updated(name, **kwargs):
|
|
|
111
122
|
return build_column_config(name, Updated, **kwargs)
|
|
112
123
|
|
|
113
124
|
|
|
125
|
+
def updated_micro(name, **kwargs):
|
|
126
|
+
return build_column_config(name, UpdatedMicro, **kwargs)
|
|
127
|
+
|
|
128
|
+
|
|
114
129
|
def uuid(name, **kwargs):
|
|
115
130
|
return build_column_config(name, UUID, **kwargs)
|
|
116
131
|
|
|
@@ -127,15 +142,21 @@ __all__ = [
|
|
|
127
142
|
"CategoryTree",
|
|
128
143
|
"Column",
|
|
129
144
|
"created",
|
|
145
|
+
"created_micro",
|
|
130
146
|
"Created",
|
|
147
|
+
"CreatdMicro",
|
|
131
148
|
"created_by_authorization_data",
|
|
132
149
|
"CreatedByAuthorizationData",
|
|
133
150
|
"created_by_ip",
|
|
134
151
|
"CreatedByIp",
|
|
135
152
|
"created_by_user_agent",
|
|
136
153
|
"CreatedByUserAgent",
|
|
154
|
+
"CreatedMicro",
|
|
155
|
+
"created_micro",
|
|
137
156
|
"datetime",
|
|
157
|
+
"datetime_micro",
|
|
138
158
|
"DateTime",
|
|
159
|
+
"DateTimeMicro",
|
|
139
160
|
"email",
|
|
140
161
|
"Email",
|
|
141
162
|
"float",
|
|
@@ -155,7 +176,9 @@ __all__ = [
|
|
|
155
176
|
"string",
|
|
156
177
|
"String",
|
|
157
178
|
"updated",
|
|
179
|
+
"updated_micro",
|
|
158
180
|
"Updated",
|
|
181
|
+
"UpdatedMicro",
|
|
159
182
|
"uuid",
|
|
160
183
|
"UUID",
|
|
161
184
|
]
|
|
@@ -2,9 +2,15 @@ from .datetime import DateTime
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Created(DateTime):
|
|
5
|
-
|
|
5
|
+
my_configs = [
|
|
6
|
+
"date_format",
|
|
7
|
+
"default_date",
|
|
8
|
+
"utc",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
def __init__(self, di, datetime):
|
|
6
12
|
super().__init__(di)
|
|
7
|
-
self.
|
|
13
|
+
self.datetime = datetime
|
|
8
14
|
|
|
9
15
|
@property
|
|
10
16
|
def is_writeable(self):
|
|
@@ -13,4 +19,8 @@ class Created(DateTime):
|
|
|
13
19
|
def pre_save(self, data, model):
|
|
14
20
|
if model.exists:
|
|
15
21
|
return data
|
|
16
|
-
|
|
22
|
+
if self.config("utc", silent=True):
|
|
23
|
+
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
24
|
+
else:
|
|
25
|
+
now = self.datetime.datetime.now()
|
|
26
|
+
return {**data, self.name: now}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from .datetime_micro import DateTimeMicro
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CreatedMicro(DateTimeMicro):
|
|
5
|
+
my_configs = [
|
|
6
|
+
"date_format",
|
|
7
|
+
"default_date",
|
|
8
|
+
"utc",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
def __init__(self, di, datetime):
|
|
12
|
+
super().__init__(di)
|
|
13
|
+
self.datetime = datetime
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def is_writeable(self):
|
|
17
|
+
return False
|
|
18
|
+
|
|
19
|
+
def pre_save(self, data, model):
|
|
20
|
+
if model.exists:
|
|
21
|
+
return data
|
|
22
|
+
if self.config("utc", silent=True):
|
|
23
|
+
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
24
|
+
else:
|
|
25
|
+
now = self.datetime.datetime.now()
|
|
26
|
+
return {**data, self.name: now}
|
|
@@ -6,12 +6,28 @@ from ..autodoc.schema import DateTime as AutoDocDateTime
|
|
|
6
6
|
|
|
7
7
|
class DateTime(Column):
|
|
8
8
|
_auto_doc_class = AutoDocDateTime
|
|
9
|
+
_date_format = "%Y-%m-%d %H:%M:%S"
|
|
10
|
+
_default_date = "0000-00-00 00:00:00"
|
|
11
|
+
|
|
12
|
+
my_configs = [
|
|
13
|
+
"date_format",
|
|
14
|
+
"default_date",
|
|
15
|
+
]
|
|
9
16
|
|
|
10
17
|
def __init__(self, di):
|
|
11
18
|
super().__init__(di)
|
|
12
19
|
|
|
20
|
+
def _finalize_configuration(self, configuration):
|
|
21
|
+
return {
|
|
22
|
+
**{
|
|
23
|
+
"date_format": self._date_format,
|
|
24
|
+
"default_date": self._default_date,
|
|
25
|
+
},
|
|
26
|
+
**super()._finalize_configuration(configuration),
|
|
27
|
+
}
|
|
28
|
+
|
|
13
29
|
def from_backend(self, value):
|
|
14
|
-
if not value or value == "
|
|
30
|
+
if not value or value == self.config("default_date"):
|
|
15
31
|
date = None
|
|
16
32
|
elif type(value) == str:
|
|
17
33
|
date = dateparser.parse(value)
|
|
@@ -24,14 +40,14 @@ class DateTime(Column):
|
|
|
24
40
|
return data
|
|
25
41
|
|
|
26
42
|
# hopefully this is a Python datetime object in UTC timezone...
|
|
27
|
-
return {**data, **{self.name: data[self.name].strftime("
|
|
43
|
+
return {**data, **{self.name: data[self.name].strftime(self.config("date_format"))}}
|
|
28
44
|
|
|
29
45
|
def to_json(self, model):
|
|
30
46
|
datetime = model.get(self.name, silent=True)
|
|
31
47
|
return {self.name: datetime.isoformat() if datetime else None}
|
|
32
48
|
|
|
33
49
|
def build_condition(self, value, operator=None, column_prefix=""):
|
|
34
|
-
date = dateparser.parse(value).astimezone(timezone.utc).strftime("
|
|
50
|
+
date = dateparser.parse(value).astimezone(timezone.utc).strftime(self.config("date_format"))
|
|
35
51
|
if not operator:
|
|
36
52
|
operator = "="
|
|
37
53
|
return f"{column_prefix}{self.name}{operator}{date}"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from .datetime import DateTime
|
|
2
|
+
from datetime import datetime, timezone
|
|
3
|
+
import dateparser
|
|
4
|
+
from ..autodoc.schema import DateTime as AutoDocDateTime
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DateTimeMicro(DateTime):
|
|
8
|
+
_date_format = "%Y-%m-%d %H:%M:%S.%f"
|
|
9
|
+
_default_date = "0000-00-00 00:00:00.000000"
|
|
10
|
+
|
|
11
|
+
def __init__(self, di):
|
|
12
|
+
super().__init__(di)
|
|
@@ -2,13 +2,23 @@ from .datetime import DateTime
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Updated(DateTime):
|
|
5
|
-
|
|
5
|
+
my_configs = [
|
|
6
|
+
"date_format",
|
|
7
|
+
"default_date",
|
|
8
|
+
"utc",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
def __init__(self, di, datetime):
|
|
6
12
|
super().__init__(di)
|
|
7
|
-
self.
|
|
13
|
+
self.datetime = datetime
|
|
8
14
|
|
|
9
15
|
@property
|
|
10
16
|
def is_writeable(self):
|
|
11
17
|
return False
|
|
12
18
|
|
|
13
19
|
def pre_save(self, data, model):
|
|
14
|
-
|
|
20
|
+
if self.config("utc", silent=True):
|
|
21
|
+
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
22
|
+
else:
|
|
23
|
+
now = self.datetime.datetime.now()
|
|
24
|
+
return {**data, self.name: now}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from .datetime_micro import DateTimeMicro
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class UpdatedMicro(DateTimeMicro):
|
|
5
|
+
my_configs = [
|
|
6
|
+
"date_format",
|
|
7
|
+
"default_date",
|
|
8
|
+
"utc",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
def __init__(self, di, datetime):
|
|
12
|
+
super().__init__(di)
|
|
13
|
+
self.datetime = datetime
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def is_writeable(self):
|
|
17
|
+
return False
|
|
18
|
+
|
|
19
|
+
def pre_save(self, data, model):
|
|
20
|
+
if self.config("utc", silent=True):
|
|
21
|
+
now = self.datetime.datetime.now(self.datetime.timezone.utc)
|
|
22
|
+
else:
|
|
23
|
+
now = self.datetime.datetime.now()
|
|
24
|
+
return {**data, self.name: now}
|
|
File without changes
|
|
File without changes
|