modified article publish and un-publish api, sonar issues, modification in create task api

This commit is contained in:
abutalib-kiwi
2023-09-07 13:49:06 +05:30
parent ffb99f5099
commit bc18c67527
4 changed files with 64 additions and 31 deletions

View File

@ -15,6 +15,7 @@ from notifications.utils import send_notification_multiple_user
from web_admin.models import Article, ArticleCard, SurveyOption, ArticleSurvey, DefaultArticleCardImage
from web_admin.utils import pop_id, get_image_url
from junior.models import JuniorArticlePoints, JuniorArticle
USER = get_user_model()
@ -90,10 +91,9 @@ class ArticleSerializer(serializers.ModelSerializer):
"""
article_cards = attrs.get('article_cards', None)
article_survey = attrs.get('article_survey', None)
if article_cards is None or len(article_cards) > int(MAX_ARTICLE_CARD):
if not 0 < len(article_cards) <= int(MAX_ARTICLE_CARD):
raise serializers.ValidationError({'details': ERROR_CODE['2039']})
if article_survey is None or len(article_survey) < int(MIN_ARTICLE_SURVEY) or int(
MAX_ARTICLE_SURVEY) < len(article_survey):
if not int(MIN_ARTICLE_SURVEY) <= len(article_survey) <= int(MAX_ARTICLE_SURVEY):
raise serializers.ValidationError({'details': ERROR_CODE['2040']})
return attrs
@ -185,6 +185,28 @@ class ArticleSerializer(serializers.ModelSerializer):
return instance
class ArticleStatusChangeSerializer(serializers.ModelSerializer):
"""
Article status change serializer
"""
class Meta:
"""
meta class
"""
model = Article
fields = ('is_published', )
def update(self, instance, validated_data):
"""
:param instance: article object
:param validated_data:
:return:
"""
instance.is_published = validated_data['is_published']
instance.save()
return instance
class DefaultArticleCardImageSerializer(serializers.ModelSerializer):
"""
Article Card serializer
@ -221,6 +243,7 @@ class DefaultArticleCardImageSerializer(serializers.ModelSerializer):
card_image = DefaultArticleCardImage.objects.create(**validated_data)
return card_image
class ArticleListSerializer(serializers.ModelSerializer):
"""
serializer for article API
@ -234,13 +257,14 @@ class ArticleListSerializer(serializers.ModelSerializer):
meta class
"""
model = Article
fields = ('id', 'title', 'description','image', 'total_points', 'is_completed')
fields = ('id', 'title', 'description', 'image', 'total_points', 'is_completed')
def get_image(self, obj):
"""article image"""
if obj.article_cards.first():
return obj.article_cards.first().image_url
return None
def get_total_points(self, obj):
"""total points of article"""
return obj.article_survey.all().count() * NUMBER['five']
@ -253,6 +277,7 @@ class ArticleListSerializer(serializers.ModelSerializer):
return junior_article.is_completed
return False
class ArticleQuestionSerializer(serializers.ModelSerializer):
"""
article survey serializer
@ -263,7 +288,6 @@ class ArticleQuestionSerializer(serializers.ModelSerializer):
correct_answer = serializers.SerializerMethodField('get_correct_answer')
attempted_answer = serializers.SerializerMethodField('get_attempted_answer')
def get_is_attempt(self, obj):
"""attempt question or not"""
context_data = self.context.get('user')
@ -295,6 +319,7 @@ class ArticleQuestionSerializer(serializers.ModelSerializer):
model = ArticleSurvey
fields = ('id', 'question', 'options', 'points', 'is_attempt', 'correct_answer', 'attempted_answer')
class StartAssessmentSerializer(serializers.ModelSerializer):
"""
serializer for article API
@ -310,6 +335,7 @@ class StartAssessmentSerializer(serializers.ModelSerializer):
if data:
return data.current_que_page if data.current_que_page < total_count else data.current_que_page - 1
return NUMBER['zero']
class Meta(object):
"""
meta class
@ -318,7 +344,6 @@ class StartAssessmentSerializer(serializers.ModelSerializer):
fields = ('article_survey', 'current_page')
class ArticleCardlistSerializer(serializers.ModelSerializer):
"""
Article Card serializer