Added short translated weekday for timetable
This commit is contained in:
parent
d2c03b0f37
commit
67ab06022f
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user