get menus method

This commit is contained in:
Kuroshini 2020-01-30 22:06:56 +03:00
parent a6fc88fdb9
commit 62eb5b0ccb
5 changed files with 77 additions and 9 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
)
@ -1268,7 +1268,7 @@ class Plate(TranslatedFieldsMixin, models.Model):
class MenuQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('establishment')
return self.prefetch_related('establishment', 'uploads')
def with_schedule_plates_establishment(self):
return self.select_related(
@ -1315,10 +1315,12 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
)
lunch = ArrayField(models.BooleanField(
default=False,
), size=7)
), size=7, default=default_menu_bool_array)
diner = ArrayField(models.BooleanField(
default=False,
), size=7)
), 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

@ -696,3 +696,27 @@ class MenuGallerySerializer(serializers.ModelSerializer):
attrs['image'] = image
return attrs
class MenuBackOfficeSerializer(serializers.ModelSerializer):
name = serializers.CharField(read_only=True, source='category_translated')
drinks_included = serializers.BooleanField(source='is_drinks_included')
class Meta:
model = models.Menu
fields = [
'id',
'name',
'establishment_id',
'establishment_slug',
'price',
'drinks_included',
'dinner',
'lunch',
'last_update',
]
extra_kwargs = {
'establishment_id': {'read_only': True, 'source': 'establishment.id'},
'establishment_slug': {'read_only': True, 'source': 'establishment.slug'},
'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
serializer_class = serializers.MenuBackOfficeSerializer
queryset = models.Menu.objects.with_base_related()
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator,
)
# 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