mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-16 18:36:18 +00:00
added admin permission
This commit is contained in:
@ -1,33 +1,55 @@
|
||||
"""
|
||||
web_admin serializers file
|
||||
"""
|
||||
# django imports
|
||||
from rest_framework import serializers
|
||||
from django.conf import settings
|
||||
|
||||
# local imports
|
||||
from base.messages import ERROR_CODE
|
||||
from web_admin.models import Article, ArticleCard, SurveyOption, ArticleSurvey
|
||||
from web_admin.utils import pop_id
|
||||
|
||||
|
||||
class ArticleCardSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Article Card serializer
|
||||
"""
|
||||
id = serializers.IntegerField(required=False)
|
||||
|
||||
class Meta:
|
||||
"""
|
||||
meta class
|
||||
"""
|
||||
model = ArticleCard
|
||||
fields = ('id', 'title', 'description')
|
||||
|
||||
|
||||
class SurveyOptionSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
survey option serializer
|
||||
"""
|
||||
id = serializers.IntegerField(required=False)
|
||||
|
||||
class Meta:
|
||||
"""
|
||||
meta class
|
||||
"""
|
||||
model = SurveyOption
|
||||
fields = ('id', 'option', 'is_answer')
|
||||
|
||||
|
||||
class ArticleSurveySerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
article survey serializer
|
||||
"""
|
||||
id = serializers.IntegerField(required=False)
|
||||
survey_options = SurveyOptionSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
"""
|
||||
meta class
|
||||
"""
|
||||
model = ArticleSurvey
|
||||
fields = ('id', 'question', 'points', 'survey_options')
|
||||
|
||||
@ -46,12 +68,27 @@ class ArticleSerializer(serializers.ModelSerializer):
|
||||
model = Article
|
||||
fields = ('id', 'title', 'description', 'article_cards', 'article_survey')
|
||||
|
||||
def validate(self, attrs):
|
||||
"""
|
||||
to validate request data
|
||||
:param attrs:
|
||||
:return: validated attrs
|
||||
"""
|
||||
article_cards = attrs.get('article_cards', None)
|
||||
article_survey = attrs.get('article_survey', None)
|
||||
if article_cards is None or len(article_cards) > int(settings.MAX_ARTICLE_CARD):
|
||||
raise serializers.ValidationError({'details': ERROR_CODE['2039']})
|
||||
if article_survey is None or len(article_survey) < int(settings.MIN_ARTICLE_SURVEY) or int(
|
||||
settings.MAX_ARTICLE_SURVEY) < len(article_survey):
|
||||
raise serializers.ValidationError({'details': ERROR_CODE['2040']})
|
||||
return attrs
|
||||
|
||||
def create(self, validated_data):
|
||||
"""
|
||||
to create article.
|
||||
ID in post data dict is for update api.
|
||||
:param validated_data:
|
||||
:return: success message
|
||||
:return: article object
|
||||
"""
|
||||
article_cards = validated_data.pop('article_cards')
|
||||
article_survey = validated_data.pop('article_survey')
|
||||
@ -73,6 +110,12 @@ class ArticleSerializer(serializers.ModelSerializer):
|
||||
return article
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
"""
|
||||
to update article and related table
|
||||
:param instance:
|
||||
:param validated_data:
|
||||
:return: article object
|
||||
"""
|
||||
article_cards = validated_data.pop('article_cards')
|
||||
article_survey = validated_data.pop('article_survey')
|
||||
instance.title = validated_data.get('title', instance.title)
|
||||
|
Reference in New Issue
Block a user