Added rud finding
This commit is contained in:
parent
a6db15ed50
commit
19cf1b07d6
|
|
@ -733,7 +733,7 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
|
|||
now_at_est_tz = datetime.now(tz=self.tz)
|
||||
current_week = now_at_est_tz.weekday()
|
||||
schedule_for_today = self.schedule.filter(weekday=current_week).first()
|
||||
if schedule_for_today is None or schedule_for_today.opening_time is None or schedule_for_today.ending_time is\
|
||||
if schedule_for_today is None or schedule_for_today.opening_time is None or schedule_for_today.ending_time is \
|
||||
None:
|
||||
return False
|
||||
time_at_est_tz = now_at_est_tz.time()
|
||||
|
|
@ -747,9 +747,9 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
|
|||
@property
|
||||
def tags_indexing(self):
|
||||
return [{
|
||||
'id': tag.metadata.id,
|
||||
'label': tag.metadata.label
|
||||
} for tag in self.tags.all()]
|
||||
'id': tag.metadata.id,
|
||||
'label': tag.metadata.label
|
||||
} for tag in self.tags.all()]
|
||||
|
||||
@property
|
||||
def last_published_review(self):
|
||||
|
|
@ -1286,6 +1286,9 @@ class MenuQuerySet(models.QuerySet):
|
|||
"""Search by category."""
|
||||
return self.filter(category__icontains=value)
|
||||
|
||||
def with_dishes(self):
|
||||
return self.filter(~Q(dishes=None))
|
||||
|
||||
|
||||
class Menu(TranslatedFieldsMixin, BaseAttributes):
|
||||
"""Menu model."""
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from rest_framework import serializers
|
|||
|
||||
from account.serializers.common import UserShortSerializer
|
||||
from establishment import models, serializers as model_serializers
|
||||
from establishment.models import ContactPhone, EstablishmentEmployee, ContactEmail
|
||||
from establishment.models import ContactEmail, ContactPhone, EstablishmentEmployee
|
||||
from establishment.serializers import MenuDishSerializer
|
||||
from gallery.models import Image
|
||||
from location.models import Address
|
||||
|
|
@ -599,6 +599,30 @@ class MenuDishesSerializer(ProjectModelSerializer):
|
|||
]
|
||||
|
||||
|
||||
class MenuDishesCreateSerializer(ProjectModelSerializer):
|
||||
"""Menu dishes create serializer"""
|
||||
|
||||
menu_id = serializers.IntegerField(write_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.MenuDish
|
||||
fields = [
|
||||
'id',
|
||||
'name',
|
||||
'category',
|
||||
'price',
|
||||
'signature',
|
||||
'menu_id'
|
||||
]
|
||||
|
||||
def create(self, validated_data):
|
||||
menu_id = validated_data.pop('menu_id')
|
||||
menu = get_object_or_404(models.Menu, pk=menu_id)
|
||||
instance = models.MenuDish.objects.create(**validated_data)
|
||||
menu.dishes.add(instance)
|
||||
return instance
|
||||
|
||||
|
||||
class MenuDishesRUDSerializers(ProjectModelSerializer):
|
||||
"""for dessert, main_course and starter category"""
|
||||
|
||||
|
|
@ -614,4 +638,3 @@ class MenuDishesRUDSerializers(ProjectModelSerializer):
|
|||
'establishment_slug',
|
||||
'dishes',
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ class MenuDishSerializer(ProjectModelSerializer):
|
|||
'id',
|
||||
'name',
|
||||
'category',
|
||||
'category_translated',
|
||||
'price',
|
||||
'signature'
|
||||
]
|
||||
|
|
|
|||
|
|
@ -31,7 +31,9 @@ urlpatterns = [
|
|||
path('slug/<slug:slug>/admin/', views.EstablishmentAdminView.as_view(),
|
||||
name='establishment-admin-list'),
|
||||
path('menus/dishes/', views.MenuDishesListView.as_view(), name='menu-dishes-list'),
|
||||
path('menus/dishes/create/', views.MenuDishesCreateView.as_view(), name='menu-dishes-create'),
|
||||
path('menus/dishes/<int:pk>/', views.MenuDishesRUDView.as_view(), name='menu-dishes-rud'),
|
||||
path('menus/dishes/slug/<slug:slug>/', views.MenuDishesRUDView.as_view(), name='menu-dishes-rud'),
|
||||
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
||||
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
||||
path('menus/slug/<slug:slug>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
"""Establishment app views."""
|
||||
|
||||
from django.db.models.query_utils import Q
|
||||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import generics, permissions
|
||||
|
|
@ -14,6 +15,20 @@ from utils.permissions import IsCountryAdmin, IsEstablishmentManager, IsWineryRe
|
|||
from utils.views import CreateDestroyGalleryViewMixin
|
||||
|
||||
|
||||
class MenuRUDMixinViews:
|
||||
"""Menu mixin"""
|
||||
|
||||
def get_object(self):
|
||||
instance = self.get_queryset().filter(
|
||||
Q(establishment__slug=self.kwargs.get('slug')) | Q(establishment__id=self.kwargs.get('pk'))
|
||||
).first()
|
||||
|
||||
if instance is None:
|
||||
raise Http404
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
class EstablishmentMixinViews:
|
||||
"""Establishment mixin."""
|
||||
|
||||
|
|
@ -121,7 +136,7 @@ class MenuListCreateView(generics.ListCreateAPIView):
|
|||
permission_classes = [IsWineryReviewer | IsEstablishmentManager]
|
||||
filter_backends = (DjangoFilterBackend,)
|
||||
filterset_fields = (
|
||||
'establishment',
|
||||
'establishment__id',
|
||||
'establishment__slug',
|
||||
)
|
||||
|
||||
|
|
@ -129,8 +144,10 @@ class MenuListCreateView(generics.ListCreateAPIView):
|
|||
return super().get_queryset().prefetch_related('establishment')
|
||||
|
||||
|
||||
class MenuRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||
class MenuRUDView(MenuRUDMixinViews, generics.RetrieveUpdateDestroyAPIView):
|
||||
"""Menu RUD view."""
|
||||
|
||||
lookup_field = None
|
||||
serializer_class = serializers.MenuRUDSerializers
|
||||
queryset = models.Menu.objects.all()
|
||||
permission_classes = [IsWineryReviewer | IsEstablishmentManager]
|
||||
|
|
@ -469,13 +486,23 @@ class EstablishmentAdminView(generics.ListAPIView):
|
|||
class MenuDishesListView(generics.ListAPIView):
|
||||
"""Menu (dessert, main_course, starter) list create view."""
|
||||
serializer_class = serializers.MenuDishesSerializer
|
||||
queryset = models.Menu.objects.all()
|
||||
queryset = models.Menu.objects.with_dishes()
|
||||
permission_classes = [IsWineryReviewer | IsEstablishmentManager]
|
||||
filter_class = filters.MenuDishesBackFilter
|
||||
|
||||
|
||||
class MenuDishesRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||
class MenuDishesRUDView(MenuRUDMixinViews, generics.RetrieveUpdateDestroyAPIView):
|
||||
"""Menu (dessert, main_course, starter) RUD view."""
|
||||
|
||||
lookup_field = None
|
||||
serializer_class = serializers.MenuDishesRUDSerializers
|
||||
queryset = models.Menu.objects.all()
|
||||
queryset = models.Menu.objects.with_dishes()
|
||||
permission_classes = [IsWineryReviewer | IsEstablishmentManager]
|
||||
|
||||
|
||||
class MenuDishesCreateView(generics.CreateAPIView):
|
||||
"""Menu (dessert, main_course, starter) list create view."""
|
||||
serializer_class = serializers.MenuDishesCreateSerializer
|
||||
queryset = models.MenuDish.objects.all()
|
||||
permission_classes = [IsWineryReviewer | IsEstablishmentManager]
|
||||
filter_class = filters.MenuDishesBackFilter
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user