list, view, edit api for article

This commit is contained in:
abutalib-kiwi
2023-07-14 18:47:07 +05:30
parent a4d9997580
commit 45410fa0ca
6 changed files with 136 additions and 26 deletions

View File

@ -7,17 +7,48 @@ 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):
class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModelMixin,
mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.DestroyModelMixin):
serializer_class = ArticleSerializer
permission_classes = []
queryset = Article.objects.all()
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 Response({'message': "created"}, status=status.HTTP_201_CREATED)
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)