from rest_framework import generics from comment import models from comment.serializers import CommentBaseSerializer from utils.methods import get_permission_classes from utils.permissions import IsModerator class CommentLstView(generics.ListCreateAPIView): """ Comment list create view. By id, type, object. **GET** ``` Implement getting Comment list. ``` **POST** ``` Implement creating Comment. ``` """ def get_queryset(self): from product.models import Product from establishment.models import Establishment allowed = { "product": Product.__name__.lower(), "establishment": Establishment.__name__.lower() } qs = models.Comment.objects.with_base_related() if "object" not in self.kwargs and "type" not in self.kwargs: qs = qs.filter(status=models.Comment.WAITING) if "object" in self.kwargs: qs = qs.by_object_id(self.kwargs["object"]) if "type" in self.kwargs and self.kwargs["type"] in allowed: model = allowed[self.kwargs["type"]] qs = qs.by_content_type(self.kwargs["type"], model) return qs.order_by('-created') serializer_class = CommentBaseSerializer queryset = models.Comment.objects.all() permission_classes = get_permission_classes(IsModerator) class CommentRUDView(generics.RetrieveUpdateDestroyAPIView): """ Comment RUD view. By id, type, object. **GET** ``` Implement getting Comment object. ``` **PUT** ``` Implement updating Comment. ``` **PATCH** ``` Implement partial updating Comment. ``` **DELETE** ``` Implement deleting Comment. ``` """ serializer_class = CommentBaseSerializer queryset = models.Comment.objects.all() permission_classes = get_permission_classes(IsModerator) lookup_field = 'id'