mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-10-24 19:07:57 +00:00
55 lines
2.4 KiB
Python
55 lines
2.4 KiB
Python
"""
|
|
web_admin views file
|
|
"""
|
|
# django imports
|
|
from rest_framework.viewsets import GenericViewSet, mixins
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
|
|
# local imports
|
|
from account.utils import custom_response, custom_error_response
|
|
from web_admin.models import Article
|
|
from web_admin.serializers import ArticleSerializer
|
|
|
|
|
|
class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModelMixin,
|
|
mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.DestroyModelMixin):
|
|
serializer_class = ArticleSerializer
|
|
permission_classes = []
|
|
queryset = Article.objects.prefetch_related('article_cards',
|
|
'article_survey',
|
|
'article_survey__survey_options')
|
|
|
|
def create(self, request, *args, **kwargs):
|
|
serializer = self.serializer_class(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
serializer.save()
|
|
return custom_response("created")
|
|
|
|
def update(self, request, *args, **kwargs):
|
|
article = self.queryset.filter(id=kwargs['pk']).first()
|
|
serializer = self.serializer_class(article, data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
serializer.save()
|
|
return custom_response("updated")
|
|
|
|
def list(self, request, *args, **kwargs):
|
|
# queryset = Article.objects.prefetch_related('article_cards',
|
|
# 'article_survey',
|
|
# 'article_survey__survey_options')
|
|
paginator = self.pagination_class()
|
|
paginated_queryset = paginator.paginate_queryset(self.queryset, request)
|
|
serializer = self.serializer_class(paginated_queryset, many=True)
|
|
return custom_response(None, data=serializer.data)
|
|
|
|
def retrieve(self, request, *args, **kwargs):
|
|
queryset = self.queryset.filter(id=kwargs['pk'])
|
|
serializer = self.serializer_class(queryset, many=True)
|
|
return custom_response(None, data=serializer.data)
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
article = self.queryset.filter(id=kwargs['pk']).update(is_deleted=True)
|
|
if article:
|
|
return custom_response("deleted")
|
|
return custom_error_response("article doesn't exist", status.HTTP_400_BAD_REQUEST)
|