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:
dormantman 2020-01-30 22:25:25 +03:00
commit fbed631f40
5 changed files with 88 additions and 12 deletions

View 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'),
),
]

View File

@ -31,7 +31,7 @@ from timetable.models import Timetable
from utils.methods import transform_into_readable_str from utils.methods import transform_into_readable_str
from utils.models import ( from utils.models import (
BaseAttributes, FavoritesMixin, FileMixin, GalleryMixin, HasTagsMixin, IntermediateGalleryModelMixin, 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): class MenuQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('establishment', 'uploads')
def with_schedule_plates_establishment(self): def with_schedule_plates_establishment(self):
return self.select_related( return self.select_related(
'establishment', 'establishment',
@ -1309,6 +1313,14 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
verbose_name=_('Establishment schedule'), verbose_name=_('Establishment schedule'),
related_name='menus', 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) old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
uploads = models.ManyToManyField( uploads = models.ManyToManyField(

View File

@ -1,17 +1,15 @@
from functools import lru_cache 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 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 import models, serializers as model_serializers
from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee
from gallery.models import Image from gallery.models import Image
from location.serializers import AddressDetailSerializer, TranslatedField from location.serializers import AddressDetailSerializer, TranslatedField
from main.models import Currency from main.models import Currency
from main.serializers import AwardSerializer from main.serializers import AwardSerializer
from rest_framework import serializers
from utils.decorators import with_base_attributes from utils.decorators import with_base_attributes
from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField from utils.serializers import ImageBaseSerializer, ProjectModelSerializer, TimeZoneChoiceField
@ -719,3 +717,27 @@ class MenuFilesSerializers(ProjectModelSerializer):
instance = models.MenuFiles.objects.create(**validated_data) instance = models.MenuFiles.objects.create(**validated_data)
menu.uploads.add(instance) menu.uploads.add(instance)
return 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}
}

View File

@ -157,12 +157,15 @@ class EstablishmentScheduleCreateView(generics.CreateAPIView):
class MenuListCreateView(generics.ListCreateAPIView): class MenuListCreateView(generics.ListCreateAPIView):
"""Menu list create view.""" """Menu list create view."""
serializer_class = serializers.MenuSerializers serializer_class = serializers.MenuBackOfficeSerializer
queryset = models.Menu.objects.all() queryset = models.Menu.objects.with_base_related()
permission_classes = get_permission_classes( # permission_classes = get_permission_classes(
IsEstablishmentManager, # IsEstablishmentManager,
IsEstablishmentAdministrator, # IsEstablishmentAdministrator,
) # )
from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, )
filter_backends = (DjangoFilterBackend,) filter_backends = (DjangoFilterBackend,)
filterset_fields = ( filterset_fields = (
'establishment', 'establishment',

View File

@ -507,3 +507,7 @@ class TypeDefaultImageMixin:
def preview_image_url(self): def preview_image_url(self):
if hasattr(self, 'default_image') and self.default_image: if hasattr(self, 'default_image') and self.default_image:
return self.default_image.get_image_url(thumbnail_key='type_preview') return self.default_image.get_image_url(thumbnail_key='type_preview')
def default_menu_bool_array():
return [False] * 7