Merge branch 'feature/standart-weekdays' into 'develop'
Feature/standart weekdays See merge request gm/gm-backend!210
This commit is contained in:
commit
ffb11b8233
|
|
@ -153,6 +153,7 @@ class EstablishmentDocument(Document):
|
||||||
'id': fields.IntegerField(attr='id'),
|
'id': fields.IntegerField(attr='id'),
|
||||||
'weekday': fields.IntegerField(attr='weekday'),
|
'weekday': fields.IntegerField(attr='weekday'),
|
||||||
'weekday_display': fields.KeywordField(attr='get_weekday_display'),
|
'weekday_display': fields.KeywordField(attr='get_weekday_display'),
|
||||||
|
'weekday_display_short': fields.KeywordField(attr='weekday_display_short'),
|
||||||
'closed_at': fields.KeywordField(attr='closed_at_str'),
|
'closed_at': fields.KeywordField(attr='closed_at_str'),
|
||||||
'opening_at': fields.KeywordField(attr='opening_at_str'),
|
'opening_at': fields.KeywordField(attr='opening_at_str'),
|
||||||
'closed_at_indexing': fields.DateField(),
|
'closed_at_indexing': fields.DateField(),
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet):
|
||||||
params_type = query_params.get('product_type')
|
params_type = query_params.get('product_type')
|
||||||
|
|
||||||
week_days = tuple(map(_, ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")))
|
week_days = tuple(map(_, ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")))
|
||||||
|
short_week_days = tuple(map(_, ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")))
|
||||||
flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now', 'works_at_weekday')
|
flags = ('toque_number', 'wine_region', 'works_noon', 'works_evening', 'works_now', 'works_at_weekday')
|
||||||
filter_flags = {flag_name: False for flag_name in flags}
|
filter_flags = {flag_name: False for flag_name in flags}
|
||||||
additional_flags = []
|
additional_flags = []
|
||||||
|
|
@ -155,7 +156,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet):
|
||||||
"filters": [{
|
"filters": [{
|
||||||
"id": weekday,
|
"id": weekday,
|
||||||
"index_name": week_days[weekday].lower(),
|
"index_name": week_days[weekday].lower(),
|
||||||
"label_translated": week_days[weekday]
|
"label_translated": short_week_days[weekday],
|
||||||
} for weekday in range(7)]
|
} for weekday in range(7)]
|
||||||
}
|
}
|
||||||
result_list.append(works_noon)
|
result_list.append(works_noon)
|
||||||
|
|
@ -170,7 +171,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet):
|
||||||
"filters": [{
|
"filters": [{
|
||||||
"id": weekday,
|
"id": weekday,
|
||||||
"index_name": week_days[weekday].lower(),
|
"index_name": week_days[weekday].lower(),
|
||||||
"label_translated": week_days[weekday]
|
"label_translated": short_week_days[weekday],
|
||||||
} for weekday in range(7)]
|
} for weekday in range(7)]
|
||||||
}
|
}
|
||||||
result_list.append(works_evening)
|
result_list.append(works_evening)
|
||||||
|
|
@ -193,7 +194,7 @@ class FiltersTagCategoryViewSet(TagCategoryViewSet):
|
||||||
"filters": [{
|
"filters": [{
|
||||||
"id": weekday,
|
"id": weekday,
|
||||||
"index_name": week_days[weekday].lower(),
|
"index_name": week_days[weekday].lower(),
|
||||||
"label_translated": week_days[weekday]
|
"label_translated": short_week_days[weekday],
|
||||||
} for weekday in range(7)]
|
} for weekday in range(7)]
|
||||||
}
|
}
|
||||||
result_list.append(works_at_weekday)
|
result_list.append(works_at_weekday)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
|
from datetime import datetime, time, date, timedelta
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from datetime import time, datetime
|
|
||||||
|
|
||||||
from utils.models import ProjectBaseMixin
|
from utils.models import ProjectBaseMixin
|
||||||
|
|
||||||
|
|
@ -24,7 +25,8 @@ class Timetable(ProjectBaseMixin):
|
||||||
(THURSDAY, _('Thursday')),
|
(THURSDAY, _('Thursday')),
|
||||||
(FRIDAY, _('Friday')),
|
(FRIDAY, _('Friday')),
|
||||||
(SATURDAY, _('Saturday')),
|
(SATURDAY, _('Saturday')),
|
||||||
(SUNDAY, _('Sunday')))
|
(SUNDAY, _('Sunday'))
|
||||||
|
)
|
||||||
|
|
||||||
weekday = models.PositiveSmallIntegerField(choices=WEEKDAYS_CHOICES, verbose_name=_('Week day'))
|
weekday = models.PositiveSmallIntegerField(choices=WEEKDAYS_CHOICES, verbose_name=_('Week day'))
|
||||||
|
|
||||||
|
|
@ -51,6 +53,13 @@ class Timetable(ProjectBaseMixin):
|
||||||
f'works_at_noon - {self.works_at_noon}, ' \
|
f'works_at_noon - {self.works_at_noon}, ' \
|
||||||
f'works_at_afternoon: {self.works_at_afternoon})'
|
f'works_at_afternoon: {self.works_at_afternoon})'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def weekday_display_short(self):
|
||||||
|
"""Translated short day of the week"""
|
||||||
|
monday = date(2020, 1, 6)
|
||||||
|
with_weekday = monday + timedelta(days=self.weekday)
|
||||||
|
return _(with_weekday.strftime("%a"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def closed_at_str(self):
|
def closed_at_str(self):
|
||||||
return str(self.closed_at) if self.closed_at else None
|
return str(self.closed_at) if self.closed_at else None
|
||||||
|
|
@ -61,11 +70,13 @@ class Timetable(ProjectBaseMixin):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def closed_at_indexing(self):
|
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
|
@property
|
||||||
def opening_at_indexing(self):
|
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
|
@property
|
||||||
def opening_time(self):
|
def opening_time(self):
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
"""Serializer for app timetable"""
|
"""Serializer for app timetable"""
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
|
@ -11,8 +14,8 @@ class ScheduleRUDSerializer(serializers.ModelSerializer):
|
||||||
NULLABLE_FIELDS = ['lunch_start', 'lunch_end', 'dinner_start',
|
NULLABLE_FIELDS = ['lunch_start', 'lunch_end', 'dinner_start',
|
||||||
'dinner_end', 'opening_at', 'closed_at']
|
'dinner_end', 'opening_at', 'closed_at']
|
||||||
|
|
||||||
weekday_display = serializers.CharField(source='get_weekday_display',
|
weekday_display = serializers.CharField(source='get_weekday_display', read_only=True)
|
||||||
read_only=True)
|
weekday_display_short = serializers.CharField(read_only=True)
|
||||||
|
|
||||||
lunch_start = serializers.TimeField(required=False)
|
lunch_start = serializers.TimeField(required=False)
|
||||||
lunch_end = serializers.TimeField(required=False)
|
lunch_end = serializers.TimeField(required=False)
|
||||||
|
|
@ -29,6 +32,7 @@ class ScheduleRUDSerializer(serializers.ModelSerializer):
|
||||||
fields = [
|
fields = [
|
||||||
'id',
|
'id',
|
||||||
'weekday_display',
|
'weekday_display',
|
||||||
|
'weekday_display_short',
|
||||||
'weekday',
|
'weekday',
|
||||||
'lunch_start',
|
'lunch_start',
|
||||||
'lunch_end',
|
'lunch_end',
|
||||||
|
|
@ -41,13 +45,13 @@ class ScheduleRUDSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
"""Override validate method"""
|
"""Override validate method"""
|
||||||
establishment_pk = self.context.get('request')\
|
establishment_pk = self.context.get('request') \
|
||||||
.parser_context.get('view')\
|
.parser_context.get('view') \
|
||||||
.kwargs.get('pk')
|
.kwargs.get('pk')
|
||||||
|
|
||||||
establishment_slug = self.context.get('request')\
|
establishment_slug = self.context.get('request') \
|
||||||
.parser_context.get('view')\
|
.parser_context.get('view') \
|
||||||
.kwargs.get('slug')
|
.kwargs.get('slug')
|
||||||
|
|
||||||
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug}
|
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug}
|
||||||
|
|
||||||
|
|
@ -91,13 +95,14 @@ class ScheduleCreateSerializer(ScheduleRUDSerializer):
|
||||||
|
|
||||||
class TimetableSerializer(serializers.ModelSerializer):
|
class TimetableSerializer(serializers.ModelSerializer):
|
||||||
"""Serailzier for Timetable model."""
|
"""Serailzier for Timetable model."""
|
||||||
weekday_display = serializers.CharField(source='get_weekday_display',
|
weekday_display = serializers.CharField(source='get_weekday_display', read_only=True)
|
||||||
read_only=True)
|
weekday_display_short = serializers.CharField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Timetable
|
model = Timetable
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
'weekday_display',
|
'weekday_display',
|
||||||
|
'weekday_display_short',
|
||||||
'works_at_noon',
|
'works_at_noon',
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user