diff --git a/apps/timetable/models.py b/apps/timetable/models.py index c9295b3b..62f3a3e9 100644 --- a/apps/timetable/models.py +++ b/apps/timetable/models.py @@ -1,6 +1,7 @@ +from datetime import datetime, time + from django.db import models from django.utils.translation import gettext_lazy as _ -from datetime import time, datetime from utils.models import ProjectBaseMixin @@ -24,7 +25,8 @@ class Timetable(ProjectBaseMixin): (THURSDAY, _('Thursday')), (FRIDAY, _('Friday')), (SATURDAY, _('Saturday')), - (SUNDAY, _('Sunday'))) + (SUNDAY, _('Sunday')) + ) weekday = models.PositiveSmallIntegerField(choices=WEEKDAYS_CHOICES, verbose_name=_('Week day')) @@ -61,11 +63,13 @@ class Timetable(ProjectBaseMixin): @property def closed_at_indexing(self): - return datetime.combine(time=self.closed_at, date=datetime(1970, 1, 1 + self.weekday).date()) if self.closed_at else None + return datetime.combine(time=self.closed_at, + date=datetime(1970, 1, 1 + self.weekday).date()) if self.closed_at else None @property def opening_at_indexing(self): - return datetime.combine(time=self.opening_at, date=datetime(1970, 1, 1 + self.weekday).date()) if self.opening_at else None + return datetime.combine(time=self.opening_at, + date=datetime(1970, 1, 1 + self.weekday).date()) if self.opening_at else None @property def opening_time(self): diff --git a/apps/timetable/serialziers.py b/apps/timetable/serialziers.py index 305be0ec..616abddf 100644 --- a/apps/timetable/serialziers.py +++ b/apps/timetable/serialziers.py @@ -1,4 +1,7 @@ """Serializer for app timetable""" + +import datetime + from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -11,8 +14,8 @@ class ScheduleRUDSerializer(serializers.ModelSerializer): NULLABLE_FIELDS = ['lunch_start', 'lunch_end', 'dinner_start', 'dinner_end', 'opening_at', 'closed_at'] - weekday_display = serializers.CharField(source='get_weekday_display', - read_only=True) + weekday_display = serializers.CharField(source='get_weekday_display', read_only=True) + weekday_display_short = serializers.SerializerMethodField(read_only=True) lunch_start = serializers.TimeField(required=False) lunch_end = serializers.TimeField(required=False) @@ -29,6 +32,7 @@ class ScheduleRUDSerializer(serializers.ModelSerializer): fields = [ 'id', 'weekday_display', + 'weekday_display_short', 'weekday', 'lunch_start', 'lunch_end', @@ -39,15 +43,21 @@ class ScheduleRUDSerializer(serializers.ModelSerializer): 'establishment_id' ] + def get_weekday_display_short(self, obj: Timetable): + """Translated short day of the week""" + monday = datetime.date(2020, 1, 6) + with_weekday = monday + datetime.timedelta(days=obj.weekday) + return _(with_weekday.strftime("%a")) + def validate(self, attrs): """Override validate method""" - establishment_pk = self.context.get('request')\ - .parser_context.get('view')\ - .kwargs.get('pk') + establishment_pk = self.context.get('request') \ + .parser_context.get('view') \ + .kwargs.get('pk') - establishment_slug = self.context.get('request')\ - .parser_context.get('view')\ - .kwargs.get('slug') + establishment_slug = self.context.get('request') \ + .parser_context.get('view') \ + .kwargs.get('slug') search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug} @@ -91,13 +101,20 @@ class ScheduleCreateSerializer(ScheduleRUDSerializer): class TimetableSerializer(serializers.ModelSerializer): """Serailzier for Timetable model.""" - weekday_display = serializers.CharField(source='get_weekday_display', - read_only=True) + weekday_display = serializers.CharField(source='get_weekday_display', read_only=True) + weekday_display_short = serializers.SerializerMethodField(read_only=True) class Meta: model = Timetable fields = ( 'id', 'weekday_display', + 'weekday_display_short', 'works_at_noon', ) + + def get_weekday_display_short(self, obj: Timetable): + """Translated short day of the week""" + monday = datetime.date(2020, 1, 6) + with_weekday = monday + datetime.timedelta(days=obj.weekday) + return _(with_weekday.strftime("%a"))