FAQ list and creation

This commit is contained in:
jain
2023-08-17 15:48:26 +05:30
parent f74302df04
commit 3f6c9a2d99
8 changed files with 119 additions and 40 deletions

View File

@ -163,6 +163,8 @@ SUCCESS_CODE = {
"3043": "Read article card successfully", "3043": "Read article card successfully",
# remove guardian code request # remove guardian code request
"3044": "Remove guardian code request successfully", "3044": "Remove guardian code request successfully",
# create faq
"3045": "Create FAQ data"
} }
"""status code error""" """status code error"""

View File

@ -3,8 +3,9 @@
from django.contrib import admin from django.contrib import admin
"""Import Django app""" """Import Django app"""
from .models import (Junior, JuniorPoints, JuniorGuardianRelationship, JuniorArticlePoints, JuniorArticle, from .models import (Junior, JuniorPoints, JuniorGuardianRelationship, JuniorArticlePoints, JuniorArticle,
JuniorArticleCard) JuniorArticleCard, FAQ)
# Register your models here. # Register your models here.
admin.site.register(FAQ)
@admin.register(JuniorArticle) @admin.register(JuniorArticle)
class JuniorArticleAdmin(admin.ModelAdmin): class JuniorArticleAdmin(admin.ModelAdmin):
"""Junior Admin""" """Junior Admin"""

View File

@ -0,0 +1,39 @@
# Generated by Django 4.2.2 on 2023-08-17 09:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('junior', '0025_alter_juniorarticle_junior'),
]
operations = [
migrations.CreateModel(
name='FAQ',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('question', models.IntegerField(max_length=100)),
('description', models.CharField(max_length=500)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': 'FAQ',
'verbose_name_plural': 'FAQ',
},
),
migrations.AlterModelOptions(
name='juniorarticle',
options={'verbose_name': 'Junior Article', 'verbose_name_plural': 'Junior Article'},
),
migrations.AlterModelOptions(
name='juniorarticlecard',
options={'verbose_name': 'Junior Article Card', 'verbose_name_plural': 'Junior Article Card'},
),
migrations.AlterModelOptions(
name='juniorarticlepoints',
options={'verbose_name': 'Junior Article Points', 'verbose_name_plural': 'Junior Article Points'},
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2.2 on 2023-08-17 09:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('junior', '0026_faq_alter_juniorarticle_options_and_more'),
]
operations = [
migrations.AlterField(
model_name='faq',
name='question',
field=models.CharField(max_length=100),
),
]

View File

@ -223,7 +223,7 @@ class JuniorArticleCard(models.Model):
class FAQ(models.Model): class FAQ(models.Model):
"""FAQ model""" """FAQ model"""
# Total earned points""" # Total earned points"""
questions = models.IntegerField(max_length=100) question = models.CharField(max_length=100)
# referral points""" # referral points"""
description = models.CharField(max_length=500) description = models.CharField(max_length=500)
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
@ -237,4 +237,4 @@ class FAQ(models.Model):
def __str__(self): def __str__(self):
"""Return email id""" """Return email id"""
return f'{self.questions}' return f'{self.question}'

View File

@ -12,7 +12,7 @@ from rest_framework_simplejwt.tokens import RefreshToken
# local imports # local imports
from account.utils import send_otp_email, generate_code from account.utils import send_otp_email, generate_code
from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship, JuniorArticlePoints from junior.models import Junior, JuniorPoints, JuniorGuardianRelationship, JuniorArticlePoints, FAQ
from guardian.tasks import generate_otp from guardian.tasks import generate_otp
from base.messages import ERROR_CODE, SUCCESS_CODE from base.messages import ERROR_CODE, SUCCESS_CODE
from base.constants import (PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, NUMBER, JUN, ZOD, EXPIRED, from base.constants import (PENDING, IN_PROGRESS, REJECTED, REQUESTED, COMPLETED, NUMBER, JUN, ZOD, EXPIRED,
@ -508,3 +508,17 @@ class RemoveGuardianCodeSerializer(serializers.ModelSerializer):
instance.guardian_code_status = str(NUMBER['one']) instance.guardian_code_status = str(NUMBER['one'])
instance.save() instance.save()
return instance return instance
class FAQSerializer(serializers.ModelSerializer):
# FAQ Serializer
class Meta(object):
# meta info
model = FAQ
fields = ('id', 'question', 'description')
def create(self, validated_data):
# validate data
print("validated_data===>",validated_data)
faq = FAQ.objects.bulk_create(**validated_data)
return faq

View File

@ -36,7 +36,7 @@ from junior.models import (Junior, JuniorPoints, JuniorGuardianRelationship, Jun
from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer, from .serializers import (CreateJuniorSerializer, JuniorDetailListSerializer, AddJuniorSerializer,
RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer, RemoveJuniorSerializer, CompleteTaskSerializer, JuniorPointsSerializer,
AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer, AddGuardianSerializer, StartTaskSerializer, ReAssignTaskSerializer,
RemoveGuardianCodeSerializer) RemoveGuardianCodeSerializer, FAQSerializer)
from guardian.models import Guardian, JuniorTask from guardian.models import Guardian, JuniorTask
from guardian.serializers import TaskDetailsSerializer, TaskDetailsjuniorSerializer from guardian.serializers import TaskDetailsSerializer, TaskDetailsjuniorSerializer
from base.messages import ERROR_CODE, SUCCESS_CODE from base.messages import ERROR_CODE, SUCCESS_CODE
@ -658,26 +658,28 @@ class FAQViewSet(GenericViewSet, mixins.CreateModelMixin,
mixins.ListModelMixin): mixins.ListModelMixin):
"""FAQ view set""" """FAQ view set"""
serializer_class = ArticleSerializer serializer_class = FAQSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
http_method_names = ['get', 'post'] http_method_names = ['get', 'post']
def get_queryset(self): def get_queryset(self):
queryset = FAQ.objects.all() return FAQ.objects.all()
return queryset
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
""" """
article create api method faq create api method
:param request: :param request:
:param args: :param args:
:param kwargs: :param kwargs:
:return: success message :return: success message
""" """
serializer = self.serializer_class(data=request.data) obj_data = [FAQ(**item) for item in request.data]
serializer.is_valid(raise_exception=True) try:
serializer.save() FAQ.objects.bulk_create(obj_data)
return custom_response(SUCCESS_CODE["3027"]) return custom_response(SUCCESS_CODE["3045"], response_status=status.HTTP_200_OK)
except Exception as e:
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
""" """
@ -691,5 +693,8 @@ class FAQViewSet(GenericViewSet, mixins.CreateModelMixin,
paginator = self.pagination_class() paginator = self.pagination_class()
paginated_queryset = paginator.paginate_queryset(queryset, request) paginated_queryset = paginator.paginate_queryset(queryset, request)
serializer = self.serializer_class(paginated_queryset, many=True) serializer = self.serializer_class(paginated_queryset, many=True)
return custom_response(None, data=serializer.data) return custom_response(None, data=serializer.data, response_status=status.HTTP_200_OK)

View File

@ -180,32 +180,32 @@ AUTH_PASSWORD_VALIDATORS = [
# database query logs settings # database query logs settings
# Allows us to check db hits # Allows us to check db hits
# useful to optimize db query and hit # useful to optimize db query and hit
LOGGING = { # LOGGING = {
"version": 1, # "version": 1,
"filters": { # "filters": {
"require_debug_true": { # "require_debug_true": {
"()": "django.utils.log.RequireDebugTrue" # "()": "django.utils.log.RequireDebugTrue"
} # }
}, # },
"handlers": { # "handlers": {
"console": { # "console": {
"level": "DEBUG", # "level": "DEBUG",
"filters": [ # "filters": [
"require_debug_true" # "require_debug_true"
], # ],
"class": "logging.StreamHandler" # "class": "logging.StreamHandler"
} # }
}, # },
# database logger # # database logger
"loggers": { # "loggers": {
"django.db.backends": { # "django.db.backends": {
"level": "DEBUG", # "level": "DEBUG",
"handlers": [ # "handlers": [
"console" # "console"
] # ]
} # }
} # }
} # }
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/ # https://docs.djangoproject.com/en/3.0/topics/i18n/