From cb2ef1c85816dc0a2413e1af75177fea388a77a8 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Tue, 9 Jun 2026 15:32:51 +0330 Subject: [PATCH] weekdays language handles statickly --- apps/course/models/course.py | 34 ++++++++++++++----------------- apps/course/serializers/course.py | 19 +++++++++++++++-- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/apps/course/models/course.py b/apps/course/models/course.py index 3c51f06..c468f86 100644 --- a/apps/course/models/course.py +++ b/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): 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) diff --git a/apps/course/serializers/course.py b/apps/course/serializers/course.py index ae89f82..7ff1e1e 100644 --- a/apps/course/serializers/course.py +++ b/apps/course/serializers/course.py @@ -2,7 +2,13 @@ from rest_framework import serializers # from dj_filer.admin 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.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.account.serializers import UserProfileSerializer from decimal import Decimal @@ -513,7 +519,16 @@ class CourseDetailSerializer(serializers.ModelSerializer): return [] 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): return self._extract_builder_list(obj.features)