Refactor to_jalali function for improved clarity and type handling
This commit is contained in:
@@ -1,17 +1,23 @@
|
||||
from datetime import date, datetime
|
||||
|
||||
import jdatetime
|
||||
from django.utils import timezone
|
||||
|
||||
def to_jalali(dt):
|
||||
if not dt:
|
||||
def to_jalali(value):
|
||||
if not value:
|
||||
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(
|
||||
year=dt.year,
|
||||
month=dt.month,
|
||||
day=dt.day,
|
||||
hour=dt.hour,
|
||||
minute=dt.minute,
|
||||
second=dt.second,
|
||||
)
|
||||
if isinstance(value, datetime):
|
||||
if timezone.is_naive(value):
|
||||
value = timezone.make_aware(value, timezone.get_current_timezone())
|
||||
value = timezone.localtime(value)
|
||||
return jdatetime.datetime.fromgregorian(datetime=value)
|
||||
|
||||
if isinstance(value, date):
|
||||
return jdatetime.date.fromgregorian(date=value)
|
||||
|
||||
raise TypeError(f"Unsupported type for to_jalali: {type(value)!r}")
|
||||
|
||||
Reference in New Issue
Block a user