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.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(

View File

@ -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}
}

View File

@ -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',

View File

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