Added short translated weekday for timetable

This commit is contained in:
dormantman 2020-01-15 01:01:27 +03:00
parent d2c03b0f37
commit 67ab06022f
2 changed files with 35 additions and 14 deletions

View File

@ -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):

View File

@ -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"))