Refactor to_jalali function for improved clarity and type handling

This commit is contained in:
marzban-dev
2026-05-10 23:25:17 +03:30
parent b6f4b88adb
commit 9041366720
+17 -11
View File
@@ -1,17 +1,23 @@
from datetime import date, datetime
import jdatetime import jdatetime
from django.utils import timezone from django.utils import timezone
def to_jalali(dt): def to_jalali(value):
if not dt: if not value:
return None return None
dt = timezone.localtime(dt) # Keep already-converted Jalali values untouched.
if isinstance(value, (jdatetime.datetime, jdatetime.date)):
return value
return jdatetime.datetime.fromgregorian( if isinstance(value, datetime):
year=dt.year, if timezone.is_naive(value):
month=dt.month, value = timezone.make_aware(value, timezone.get_current_timezone())
day=dt.day, value = timezone.localtime(value)
hour=dt.hour, return jdatetime.datetime.fromgregorian(datetime=value)
minute=dt.minute,
second=dt.second, if isinstance(value, date):
) return jdatetime.date.fromgregorian(date=value)
raise TypeError(f"Unsupported type for to_jalali: {type(value)!r}")