Browse Source

weekdays language handles statickly

master
Mohsen Taba 1 month ago
parent
commit
cb2ef1c858
  1. 34
      apps/course/models/course.py
  2. 19
      apps/course/serializers/course.py

34
apps/course/models/course.py

@ -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): def normalize_weekday_to_key(day_value):
if not day_value: if not day_value:
return 'saturday' return 'saturday'
@ -426,31 +436,17 @@ class Course(models.Model):
for k, v in val.items(): for k, v in val.items():
raw_timings.append({"day": k, "time": str(v)}) raw_timings.append({"day": k, "time": str(v)})
en_timings = []
ru_timings = []
fa_timings = []
normalized_timings = []
for item in raw_timings: for item in raw_timings:
if isinstance(item, dict): if isinstance(item, dict):
day_key = normalize_weekday_to_key(item.get('day')) day_key = normalize_weekday_to_key(item.get('day'))
time_val = item.get('time') or item.get('timing') or '' 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) self.features = format_multilingual_field(self.features)
usd_price = Decimal(self.price or 0) usd_price = Decimal(self.price or 0)

19
apps/course/serializers/course.py

@ -2,7 +2,13 @@ from rest_framework import serializers
# from dj_filer.admin import get_thumbs # from dj_filer.admin import get_thumbs
from utils import get_thumbs from utils import get_thumbs
from apps.course.models import Course, CourseCategory, Attachment, Glossary, LessonCompletion, Participant, Lesson, CourseAttachment, CourseGlossary, CourseLesson from apps.course.models import Course, CourseCategory, Attachment, Glossary, LessonCompletion, Participant, Lesson, CourseAttachment, CourseGlossary, CourseLesson
from apps.course.models.course import get_localized_field, normalize_level, normalize_status
from apps.course.models.course import (
get_localized_field,
get_weekday_label,
normalize_level,
normalize_status,
normalize_weekday_to_key,
)
from apps.chat.models import RoomMessage from apps.chat.models import RoomMessage
from apps.account.serializers import UserProfileSerializer from apps.account.serializers import UserProfileSerializer
from decimal import Decimal from decimal import Decimal
@ -513,7 +519,16 @@ class CourseDetailSerializer(serializers.ModelSerializer):
return [] return []
def get_timing(self, obj): def get_timing(self, obj):
return self._extract_builder_list(obj.timing)
localized_rows = []
for item in self._extract_builder_list(obj.timing):
if not isinstance(item, dict):
continue
day_key = normalize_weekday_to_key(item.get('day'))
localized_rows.append({
"day": get_weekday_label(day_key, self._lang()),
"time": item.get('time') or item.get('timing') or "",
})
return localized_rows
def get_features(self, obj): def get_features(self, obj):
return self._extract_builder_list(obj.features) return self._extract_builder_list(obj.features)

Loading…
Cancel
Save