|
|
|
@ -221,6 +221,16 @@ WEEKDAY_TRANSLATIONS = { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
def get_weekday_label(day_key, lang='en'): |
|
|
|
normalized_lang = (lang or 'en').lower() |
|
|
|
if normalized_lang.startswith('fa'): |
|
|
|
lang_key = 'fa' |
|
|
|
elif normalized_lang.startswith('ru'): |
|
|
|
lang_key = 'ru' |
|
|
|
else: |
|
|
|
lang_key = 'en' |
|
|
|
return WEEKDAY_TRANSLATIONS.get(day_key, {}).get(lang_key, day_key) |
|
|
|
|
|
|
|
def normalize_weekday_to_key(day_value): |
|
|
|
if not day_value: |
|
|
|
return 'saturday' |
|
|
|
@ -426,31 +436,17 @@ class Course(models.Model): |
|
|
|
for k, v in val.items(): |
|
|
|
raw_timings.append({"day": k, "time": str(v)}) |
|
|
|
|
|
|
|
en_timings = [] |
|
|
|
ru_timings = [] |
|
|
|
fa_timings = [] |
|
|
|
normalized_timings = [] |
|
|
|
for item in raw_timings: |
|
|
|
if isinstance(item, dict): |
|
|
|
day_key = normalize_weekday_to_key(item.get('day')) |
|
|
|
time_val = item.get('time') or item.get('timing') or '' |
|
|
|
en_timings.append({ |
|
|
|
"day": WEEKDAY_TRANSLATIONS.get(day_key, {}).get('en', item.get('day', '')), |
|
|
|
"time": time_val |
|
|
|
}) |
|
|
|
ru_timings.append({ |
|
|
|
"day": WEEKDAY_TRANSLATIONS.get(day_key, {}).get('ru', item.get('day', '')), |
|
|
|
"time": time_val |
|
|
|
}) |
|
|
|
fa_timings.append({ |
|
|
|
"day": WEEKDAY_TRANSLATIONS.get(day_key, {}).get('fa', item.get('day', '')), |
|
|
|
"time": time_val |
|
|
|
normalized_timings.append({ |
|
|
|
"day": day_key, |
|
|
|
"time": str(time_val).strip(), |
|
|
|
}) |
|
|
|
|
|
|
|
self.timing = [ |
|
|
|
{"language_code": "fa", "title": json.dumps(fa_timings)}, |
|
|
|
{"language_code": "en", "title": json.dumps(en_timings)}, |
|
|
|
{"language_code": "ru", "title": json.dumps(ru_timings)}, |
|
|
|
] |
|
|
|
self.timing = normalized_timings |
|
|
|
self.features = format_multilingual_field(self.features) |
|
|
|
|
|
|
|
usd_price = Decimal(self.price or 0) |
|
|
|
|