Merge branch 'feature/menus-for-dima' of https://gl.id-east.ru/gm/gm-backend into feature/menus-for-dima
Conflicts: apps/establishment/serializers/back.py
This commit is contained in:
commit
fbed631f40
35
apps/establishment/migrations/0091_auto_20200130_1905.py
Normal file
35
apps/establishment/migrations/0091_auto_20200130_1905.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# Generated by Django 2.2.7 on 2020-01-30 19:05
|
||||
|
||||
import django.contrib.postgres.fields
|
||||
from django.db import migrations, models
|
||||
import utils.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('establishment', '0090_auto_20200130_1849'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='menu',
|
||||
name='diner',
|
||||
field=django.contrib.postgres.fields.ArrayField(base_field=models.BooleanField(default=False), default=utils.models.default_menu_bool_array, size=7),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='menu',
|
||||
name='last_update',
|
||||
field=models.DateField(auto_now=True, verbose_name='Date updated'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='menu',
|
||||
name='lunch',
|
||||
field=django.contrib.postgres.fields.ArrayField(base_field=models.BooleanField(default=False), default=utils.models.default_menu_bool_array, size=7),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='menu',
|
||||
name='price',
|
||||
field=models.DecimalField(decimal_places=2, default=0, max_digits=14, verbose_name='price'),
|
||||
),
|
||||
]
|
||||
|
|
@ -31,7 +31,7 @@ from timetable.models import Timetable
|
|||
from utils.methods import transform_into_readable_str
|
||||
from utils.models import (
|
||||
BaseAttributes, FavoritesMixin, FileMixin, GalleryMixin, HasTagsMixin, IntermediateGalleryModelMixin,
|
||||
ProjectBaseMixin, TJSONField, TranslatedFieldsMixin, TypeDefaultImageMixin, URLImageMixin,
|
||||
ProjectBaseMixin, TJSONField, TranslatedFieldsMixin, TypeDefaultImageMixin, URLImageMixin, default_menu_bool_array
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -1266,6 +1266,10 @@ class Plate(TranslatedFieldsMixin, models.Model):
|
|||
|
||||
|
||||
class MenuQuerySet(models.QuerySet):
|
||||
|
||||
def with_base_related(self):
|
||||
return self.prefetch_related('establishment', 'uploads')
|
||||
|
||||
def with_schedule_plates_establishment(self):
|
||||
return self.select_related(
|
||||
'establishment',
|
||||
|
|
@ -1309,6 +1313,14 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
|
|||
verbose_name=_('Establishment schedule'),
|
||||
related_name='menus',
|
||||
)
|
||||
lunch = ArrayField(models.BooleanField(
|
||||
default=False,
|
||||
), size=7, default=default_menu_bool_array)
|
||||
diner = ArrayField(models.BooleanField(
|
||||
default=False,
|
||||
), size=7, default=default_menu_bool_array)
|
||||
last_update = models.DateField(auto_now=True, verbose_name=_('Date updated'))
|
||||
price = models.DecimalField(_('price'), max_digits=14, decimal_places=2, default=0)
|
||||
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||
|
||||
uploads = models.ManyToManyField(
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
from functools import lru_cache
|
||||
|
||||
from django.db.models import F
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from account.serializers.common import UserShortSerializer
|
||||
from django.db.models import F
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from establishment import models, serializers as model_serializers
|
||||
from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee
|
||||
from gallery.models import Image
|
||||
from location.serializers import AddressDetailSerializer, TranslatedField
|
||||
from main.models import Currency
|
||||
from main.serializers import AwardSerializer
|
||||
from rest_framework import serializers
|
||||
from utils.decorators import with_base_attributes
|
||||
from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField
|
||||
|
||||
|
|
@ -719,3 +717,27 @@ class MenuFilesSerializers(ProjectModelSerializer):
|
|||
instance = models.MenuFiles.objects.create(**validated_data)
|
||||
menu.uploads.add(instance)
|
||||
return instance
|
||||
|
||||
|
||||
class MenuBackOfficeSerializer(serializers.ModelSerializer):
|
||||
name = serializers.CharField(read_only=True, source='category_translated')
|
||||
drinks_included = serializers.BooleanField(source='is_drinks_included')
|
||||
establishment_id = serializers.IntegerField(source='establishment.id')
|
||||
establishment_slug = serializers.CharField(source='establishment.slug')
|
||||
|
||||
class Meta:
|
||||
model = models.Menu
|
||||
fields = [
|
||||
'id',
|
||||
'name',
|
||||
'establishment_id',
|
||||
'establishment_slug',
|
||||
'price',
|
||||
'drinks_included',
|
||||
'diner',
|
||||
'lunch',
|
||||
'last_update',
|
||||
]
|
||||
extra_kwargs = {
|
||||
'last_update': {'read_only': True}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,12 +157,15 @@ class EstablishmentScheduleCreateView(generics.CreateAPIView):
|
|||
|
||||
class MenuListCreateView(generics.ListCreateAPIView):
|
||||
"""Menu list create view."""
|
||||
serializer_class = serializers.MenuSerializers
|
||||
queryset = models.Menu.objects.all()
|
||||
permission_classes = get_permission_classes(
|
||||
IsEstablishmentManager,
|
||||
IsEstablishmentAdministrator,
|
||||
)
|
||||
serializer_class = serializers.MenuBackOfficeSerializer
|
||||
queryset = models.Menu.objects.with_base_related()
|
||||
# permission_classes = get_permission_classes(
|
||||
# IsEstablishmentManager,
|
||||
# IsEstablishmentAdministrator,
|
||||
# )
|
||||
from rest_framework.permissions import AllowAny
|
||||
permission_classes = (AllowAny, )
|
||||
|
||||
filter_backends = (DjangoFilterBackend,)
|
||||
filterset_fields = (
|
||||
'establishment',
|
||||
|
|
|
|||
|
|
@ -507,3 +507,7 @@ class TypeDefaultImageMixin:
|
|||
def preview_image_url(self):
|
||||
if hasattr(self, 'default_image') and self.default_image:
|
||||
return self.default_image.get_image_url(thumbnail_key='type_preview')
|
||||
|
||||
|
||||
def default_menu_bool_array():
|
||||
return [False] * 7
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user