refactor
This commit is contained in:
1 parent
6f36db63a1
commit
250cdbab7f
42 files changed
+96363
-11699
No files matched your search
@@ -0,0 +1,49 @@
|
||||
"""توابع و ابزارهای مشترک لایهٔ ویوها."""
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
from django.utils import timezone
|
||||
from persiantools.jdatetime import JalaliDate
|
||||
from persiantools import digits
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class InventoryException(Exception):
|
||||
"""خطای اختصاصی برای کنترل موجودی انبار"""
|
||||
pass
|
||||
|
||||
|
||||
def _safe_int(value, default=0):
|
||||
"""تابع امن برای تبدیل مقادیر دریافتی از جاوااسکریپت به عدد"""
|
||||
if value is None:
|
||||
return default
|
||||
try:
|
||||
clean_val = str(value).strip()
|
||||
return int(clean_val) if clean_val else default
|
||||
except (ValueError, TypeError):
|
||||
return default
|
||||
|
||||
|
||||
def _parse_jalali_date(date_str):
|
||||
"""تبدیل امن تاریخ ارسالی از pDatepicker به میلادی"""
|
||||
if not date_str or not str(date_str).strip():
|
||||
return None
|
||||
try:
|
||||
clean_date = digits.fa_to_en(digits.ar_to_fa(str(date_str).strip()))
|
||||
y, m, d = map(int, clean_date.split("/"))
|
||||
return JalaliDate(y, m, d).to_gregorian()
|
||||
except Exception as e:
|
||||
logger.warning(f"Error parsing Jalali date '{date_str}': {e}")
|
||||
return None
|
||||
|
||||
|
||||
def _parse_timestamp(ts_value):
|
||||
"""تبدیل یونیکس تایماستمپهای ارسالی از جاوااسکریپت"""
|
||||
if not ts_value:
|
||||
return None
|
||||
try:
|
||||
# تبدیل میلیثانیه جاوااسکریپت به ثانیه پایتون
|
||||
return datetime.datetime.fromtimestamp(int(ts_value) / 1000.0, tz=timezone.get_current_timezone())
|
||||
except (ValueError, TypeError):
|
||||
return None
|
||||
Reference in new issue
Block a user