from rest_framework import generics from review import filters from review import models from review import serializers from review.serializers.back import ReviewBackSerializer from utils.methods import get_permission_classes from utils.permissions import ( IsReviewManager, IsRestaurantInspector, IsWineryWineInspector, IsArtisanInspector, IsProducerFoodInspector, IsDistilleryLiquorInspector, ) class PermissionMixinView: """Permission mixin view.""" permission_classes = get_permission_classes( IsReviewManager, IsRestaurantInspector, IsWineryWineInspector, IsArtisanInspector, IsProducerFoodInspector, IsDistilleryLiquorInspector, ) class ReviewMixinView: """Review mixin.""" queryset = models.Review.objects.with_base_related() class ReviewListView(PermissionMixinView, ReviewMixinView, generics.ListCreateAPIView): """Review list/create view. **GET** ``` Implement getting list for Review. ``` **POST** ``` Implement creating for Review. ``` status values: TO_INVESTIGATE = 0 TO_REVIEW = 1 READY = 2 """ serializer_class = ReviewBackSerializer filterset_class = filters.ReviewFilter class ReviewRUDView(PermissionMixinView, ReviewMixinView, generics.RetrieveUpdateDestroyAPIView): """Review RUD view. status values: TO_INVESTIGATE = 0 TO_REVIEW = 1 READY = 2 """ serializer_class = ReviewBackSerializer lookup_field = 'id' class InquiriesListView(PermissionMixinView, generics.ListCreateAPIView): """ Inquiries list create view. **GET** ``` Implement getting list for Inquires. ``` **POST** ``` Implement creating for Inquires. ``` """ serializer_class = serializers.InquiriesBaseSerializer queryset = models.Inquiries.objects.all() def get_queryset(self): review_id = self.kwargs.get('review_id') if review_id: return super().get_queryset().filter(review_id=review_id) return super().get_queryset() class InquiriesRUDView(PermissionMixinView, generics.RetrieveUpdateDestroyAPIView): """ Inquiries RUD view. **GET** ``` Implement getting Inquiries object. ``` **PUT** ``` Implement updating Inquiries. ``` **PATCH** ``` Implement partial updating Inquiries. ``` **DELETE** ``` Implement deleting Inquiries. ``` """ serializer_class = serializers.InquiriesBaseSerializer queryset = models.Inquiries.objects.all() lookup_field = 'id' class GridItemsListView(PermissionMixinView, generics.ListCreateAPIView): """ GridItems list/create view. **GET** ``` Implement getting list for GridItems. ``` **POST** ``` Implement creating for GridItems. ``` """ serializer_class = serializers.GridItemsBaseSerializer queryset = models.GridItems.objects.all() def get_queryset(self): inquiry_id = self.kwargs.get('inquiry_id') if inquiry_id: return super().get_queryset().filter(inquiry_id=inquiry_id) return super().get_queryset() class GridItemsRUDView(PermissionMixinView, generics.RetrieveUpdateDestroyAPIView): """ GridItems RUD view. **GET** ``` Implement getting GridItems object. ``` **PUT** ``` Implement updating GridItems. ``` **PATCH** ``` Implement partial updating GridItems. ``` **DELETE** ``` Implement deleting GridItems. ``` """ serializer_class = serializers.GridItemsBaseSerializer queryset = models.GridItems.objects.all() lookup_field = 'id'