get menus method
This commit is contained in:
parent
a6fc88fdb9
commit
62eb5b0ccb
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.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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1268,7 +1268,7 @@ class Plate(TranslatedFieldsMixin, models.Model):
|
||||||
class MenuQuerySet(models.QuerySet):
|
class MenuQuerySet(models.QuerySet):
|
||||||
|
|
||||||
def with_base_related(self):
|
def with_base_related(self):
|
||||||
return self.prefetch_related('establishment')
|
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(
|
||||||
|
|
@ -1315,10 +1315,12 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
|
||||||
)
|
)
|
||||||
lunch = ArrayField(models.BooleanField(
|
lunch = ArrayField(models.BooleanField(
|
||||||
default=False,
|
default=False,
|
||||||
), size=7)
|
), size=7, default=default_menu_bool_array)
|
||||||
diner = ArrayField(models.BooleanField(
|
diner = ArrayField(models.BooleanField(
|
||||||
default=False,
|
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)
|
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||||
|
|
||||||
uploads = models.ManyToManyField(
|
uploads = models.ManyToManyField(
|
||||||
|
|
|
||||||
|
|
@ -696,3 +696,27 @@ class MenuGallerySerializer(serializers.ModelSerializer):
|
||||||
attrs['image'] = image
|
attrs['image'] = image
|
||||||
|
|
||||||
return attrs
|
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}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.with_base_related()
|
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',
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user