aiteamutils 0.2.111__py3-none-any.whl → 0.2.112__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.
aiteamutils/validators.py
CHANGED
@@ -197,6 +197,8 @@ class Validator:
|
|
197
197
|
return None
|
198
198
|
if isinstance(value, date):
|
199
199
|
return value
|
200
|
+
if isinstance(value, datetime):
|
201
|
+
return value.date()
|
200
202
|
if value == "" or not value:
|
201
203
|
return None
|
202
204
|
try:
|
@@ -209,6 +211,32 @@ class Validator:
|
|
209
211
|
original_error=str(e)
|
210
212
|
)
|
211
213
|
|
214
|
+
@staticmethod
|
215
|
+
def validate_datetime(value: Any, field_name: str = "datetime") -> Optional[datetime]:
|
216
|
+
"""날짜+시간 형식 검증을 수행하는 메서드."""
|
217
|
+
if value is None:
|
218
|
+
return None
|
219
|
+
if isinstance(value, datetime):
|
220
|
+
return value
|
221
|
+
if isinstance(value, date):
|
222
|
+
return datetime.combine(value, datetime.min.time())
|
223
|
+
if value == "" or not value:
|
224
|
+
return None
|
225
|
+
try:
|
226
|
+
# ISO 형식 (YYYY-MM-DDTHH:MM:SS) 먼저 시도
|
227
|
+
try:
|
228
|
+
return datetime.fromisoformat(str(value))
|
229
|
+
except:
|
230
|
+
# 일반 날짜+시간 형식 시도
|
231
|
+
return datetime.strptime(str(value), '%Y-%m-%d %H:%M:%S')
|
232
|
+
except Exception as e:
|
233
|
+
raise CustomException(
|
234
|
+
error_code=ErrorCode.INVALID_DATETIME_FORMAT,
|
235
|
+
detail=f"{field_name}|{value}",
|
236
|
+
source_function="Validator.validate_datetime",
|
237
|
+
original_error=str(e)
|
238
|
+
)
|
239
|
+
|
212
240
|
def date_validator(*field_names: str):
|
213
241
|
"""날짜 필드 유효성 검사 데코레이터
|
214
242
|
Args:
|
@@ -232,4 +260,29 @@ def date_validator(*field_names: str):
|
|
232
260
|
)
|
233
261
|
setattr(cls, f'validate_{field_name}', validate)
|
234
262
|
return cls
|
263
|
+
return decorator
|
264
|
+
|
265
|
+
def datetime_validator(*field_names: str):
|
266
|
+
"""날짜+시간 필드 유효성 검사 데코레이터
|
267
|
+
Args:
|
268
|
+
field_names: 검증할 필드명들
|
269
|
+
"""
|
270
|
+
def decorator(cls):
|
271
|
+
for field_name in field_names:
|
272
|
+
@field_validator(field_name, mode='before')
|
273
|
+
@classmethod
|
274
|
+
def validate(cls, value: Any, info: Any) -> Any:
|
275
|
+
try:
|
276
|
+
return Validator.validate_datetime(value, field_name)
|
277
|
+
except CustomException as e:
|
278
|
+
raise e
|
279
|
+
except Exception as e:
|
280
|
+
raise CustomException(
|
281
|
+
error_code=ErrorCode.INVALID_DATETIME_FORMAT,
|
282
|
+
detail=f"{field_name}|{value}",
|
283
|
+
source_function=f"datetime_validator.{field_name}",
|
284
|
+
original_error=str(e)
|
285
|
+
)
|
286
|
+
setattr(cls, f'validate_{field_name}', validate)
|
287
|
+
return cls
|
235
288
|
return decorator
|
aiteamutils/version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
"""버전 정보"""
|
2
|
-
__version__ = "0.2.
|
2
|
+
__version__ = "0.2.112"
|
@@ -8,8 +8,8 @@ aiteamutils/database.py,sha256=SmE6JiyQoqCNlrV4AVxrp1tsrNryyZSQWJM0dHN4MQA,19696
|
|
8
8
|
aiteamutils/enums.py,sha256=7WLqlcJqQWtETAga2WAxNp3dJTQIAd2TW-4WzkoHHa8,2498
|
9
9
|
aiteamutils/exceptions.py,sha256=pgf3ersezObyl17wAO3I2fb8m9t2OzWDX1mSjwAWm2Y,16035
|
10
10
|
aiteamutils/security.py,sha256=McUl3t5Z5SyUDVUHymHdDkYyF4YSeg4g9fFMML4W6Kw,11630
|
11
|
-
aiteamutils/validators.py,sha256=
|
12
|
-
aiteamutils/version.py,sha256=
|
13
|
-
aiteamutils-0.2.
|
14
|
-
aiteamutils-0.2.
|
15
|
-
aiteamutils-0.2.
|
11
|
+
aiteamutils/validators.py,sha256=ca_e4wWlw3F_1CWfqAfgeo-BSPqq4rZCvf_Q6PGbEVE,11535
|
12
|
+
aiteamutils/version.py,sha256=2A5y8-q0jxFz71nC1LRHs_mJyKx9ISSHBjd6-MjXGFg,43
|
13
|
+
aiteamutils-0.2.112.dist-info/METADATA,sha256=tFOeXAKLk9jB2r6C5hTRvPbEXumu5TAPxk0loQ4TTkw,1719
|
14
|
+
aiteamutils-0.2.112.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
15
|
+
aiteamutils-0.2.112.dist-info/RECORD,,
|
File without changes
|