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.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(
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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