mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-26 08:34:55 +00:00
modified yml file, default article card image upload api,
This commit is contained in:
@ -3,6 +3,7 @@ services:
|
|||||||
nginx:
|
nginx:
|
||||||
image: nginx:latest
|
image: nginx:latest
|
||||||
container_name: nginx
|
container_name: nginx
|
||||||
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
@ -13,6 +14,7 @@ services:
|
|||||||
web:
|
web:
|
||||||
build: .
|
build: .
|
||||||
container_name: django
|
container_name: django
|
||||||
|
restart: always
|
||||||
command: bash -c "pip install -r requirements.txt && python manage.py collectstatic --noinput && python manage.py migrate && gunicorn zod_bank.wsgi -b 0.0.0.0:8000 -t 300 --log-level=info"
|
command: bash -c "pip install -r requirements.txt && python manage.py collectstatic --noinput && python manage.py migrate && gunicorn zod_bank.wsgi -b 0.0.0.0:8000 -t 300 --log-level=info"
|
||||||
volumes:
|
volumes:
|
||||||
- .:/usr/src/app
|
- .:/usr/src/app
|
||||||
|
|||||||
@ -5,7 +5,7 @@ web_admin admin file
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from web_admin.models import Article, ArticleCard, ArticleSurvey, SurveyOption
|
from web_admin.models import Article, ArticleCard, ArticleSurvey, SurveyOption, DefaultArticleCardImage
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Article)
|
@admin.register(Article)
|
||||||
@ -17,7 +17,7 @@ class ArticleAdmin(admin.ModelAdmin):
|
|||||||
@admin.register(ArticleCard)
|
@admin.register(ArticleCard)
|
||||||
class ArticleCardAdmin(admin.ModelAdmin):
|
class ArticleCardAdmin(admin.ModelAdmin):
|
||||||
"""Article Card Admin"""
|
"""Article Card Admin"""
|
||||||
list_display = ['id', 'article', 'title', 'description', 'image']
|
list_display = ['id', 'article', 'title', 'description', 'image_url']
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ArticleSurvey)
|
@admin.register(ArticleSurvey)
|
||||||
@ -30,3 +30,9 @@ class ArticleSurveyAdmin(admin.ModelAdmin):
|
|||||||
class SurveyOptionAdmin(admin.ModelAdmin):
|
class SurveyOptionAdmin(admin.ModelAdmin):
|
||||||
"""Survey Option Admin"""
|
"""Survey Option Admin"""
|
||||||
list_display = ['id', 'survey', 'option', 'is_answer']
|
list_display = ['id', 'survey', 'option', 'is_answer']
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(DefaultArticleCardImage)
|
||||||
|
class DefaultArticleCardImagesAdmin(admin.ModelAdmin):
|
||||||
|
"""Default Article Card Images Option Admin"""
|
||||||
|
list_display = ['image_name', 'image_url']
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
# Generated by Django 4.2.2 on 2023-07-24 14:15
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('web_admin', '0002_alter_articlecard_image'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='DefaultArticleCardImage',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('image_name', models.CharField(max_length=20)),
|
||||||
|
('image_url', models.URLField()),
|
||||||
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('updated_at', models.DateTimeField(auto_now=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='articlecard',
|
||||||
|
old_name='image',
|
||||||
|
new_name='image_url',
|
||||||
|
),
|
||||||
|
]
|
||||||
@ -28,7 +28,7 @@ class ArticleCard(models.Model):
|
|||||||
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='article_cards')
|
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='article_cards')
|
||||||
title = models.CharField(max_length=255)
|
title = models.CharField(max_length=255)
|
||||||
description = models.TextField()
|
description = models.TextField()
|
||||||
image = models.URLField(null=True, blank=True, default=None)
|
image_url = models.URLField(null=True, blank=True, default=None)
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
@ -65,3 +65,17 @@ class SurveyOption(models.Model):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Return title"""
|
"""Return title"""
|
||||||
return f'{self.id} | {self.survey}'
|
return f'{self.id} | {self.survey}'
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultArticleCardImage(models.Model):
|
||||||
|
"""
|
||||||
|
Default images upload in oss bucket
|
||||||
|
"""
|
||||||
|
image_name = models.CharField(max_length=20)
|
||||||
|
image_url = models.URLField()
|
||||||
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
"""return image_name as an object"""
|
||||||
|
return self.image_name
|
||||||
|
|||||||
@ -3,14 +3,18 @@ web_admin serializers file
|
|||||||
"""
|
"""
|
||||||
# django imports
|
# django imports
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
from base.constants import ARTICLE_SURVEY_POINTS, MAX_ARTICLE_CARD, MIN_ARTICLE_SURVEY, MAX_ARTICLE_SURVEY
|
from base.constants import ARTICLE_SURVEY_POINTS, MAX_ARTICLE_CARD, MIN_ARTICLE_SURVEY, MAX_ARTICLE_SURVEY, NUMBER, \
|
||||||
|
USER_TYPE
|
||||||
# local imports
|
# local imports
|
||||||
from base.messages import ERROR_CODE
|
from base.messages import ERROR_CODE
|
||||||
from guardian.utils import upload_image_to_alibaba
|
from guardian.utils import upload_image_to_alibaba
|
||||||
from web_admin.models import Article, ArticleCard, SurveyOption, ArticleSurvey
|
from web_admin.models import Article, ArticleCard, SurveyOption, ArticleSurvey, DefaultArticleCardImage
|
||||||
from web_admin.utils import pop_id
|
from web_admin.utils import pop_id
|
||||||
|
|
||||||
|
USER = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
class ArticleCardSerializer(serializers.ModelSerializer):
|
class ArticleCardSerializer(serializers.ModelSerializer):
|
||||||
"""
|
"""
|
||||||
@ -18,23 +22,25 @@ class ArticleCardSerializer(serializers.ModelSerializer):
|
|||||||
"""
|
"""
|
||||||
id = serializers.IntegerField(required=False)
|
id = serializers.IntegerField(required=False)
|
||||||
image = serializers.FileField(required=False)
|
image = serializers.FileField(required=False)
|
||||||
|
image_url = serializers.URLField(required=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""
|
"""
|
||||||
meta class
|
meta class
|
||||||
"""
|
"""
|
||||||
model = ArticleCard
|
model = ArticleCard
|
||||||
fields = ('id', 'title', 'description', 'image')
|
fields = ('id', 'title', 'description', 'image', 'image_url')
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
image = validated_data.get('image', '')
|
if 'image' in validated_data and validated_data['image'] is not None:
|
||||||
|
image = validated_data.pop('image')
|
||||||
filename = f"article/{image.name}"
|
filename = f"article/{image.name}"
|
||||||
# upload image on ali baba
|
# upload image on ali baba
|
||||||
validated_data['image'] = upload_image_to_alibaba(image, filename)
|
validated_data['image_url'] = upload_image_to_alibaba(image, filename)
|
||||||
|
|
||||||
article_card = ArticleCard.objects.create(article_id='1', **validated_data)
|
article_card = ArticleCard.objects.create(article_id='1', **validated_data)
|
||||||
return article_card
|
return article_card
|
||||||
|
|
||||||
|
|
||||||
class SurveyOptionSerializer(serializers.ModelSerializer):
|
class SurveyOptionSerializer(serializers.ModelSerializer):
|
||||||
"""
|
"""
|
||||||
survey option serializer
|
survey option serializer
|
||||||
@ -81,7 +87,6 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
"""
|
"""
|
||||||
to validate request data
|
to validate request data
|
||||||
:param attrs:
|
|
||||||
:return: validated attrs
|
:return: validated attrs
|
||||||
"""
|
"""
|
||||||
article_cards = attrs.get('article_cards', None)
|
article_cards = attrs.get('article_cards', None)
|
||||||
@ -97,7 +102,6 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
"""
|
"""
|
||||||
to create article.
|
to create article.
|
||||||
ID in post data dict is for update api.
|
ID in post data dict is for update api.
|
||||||
:param validated_data:
|
|
||||||
:return: article object
|
:return: article object
|
||||||
"""
|
"""
|
||||||
article_cards = validated_data.pop('article_cards')
|
article_cards = validated_data.pop('article_cards')
|
||||||
@ -107,6 +111,11 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
for card in article_cards:
|
for card in article_cards:
|
||||||
card = pop_id(card)
|
card = pop_id(card)
|
||||||
|
if 'image' in card and card['image'] is not None:
|
||||||
|
image = card.pop('image')
|
||||||
|
filename = f"article/{image.name}"
|
||||||
|
# upload image on ali baba
|
||||||
|
card['image_url'] = upload_image_to_alibaba(image, filename)
|
||||||
ArticleCard.objects.create(article=article, **card)
|
ArticleCard.objects.create(article=article, **card)
|
||||||
|
|
||||||
for survey in article_survey:
|
for survey in article_survey:
|
||||||
@ -122,8 +131,7 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
"""
|
"""
|
||||||
to update article and related table
|
to update article and related table
|
||||||
:param instance:
|
:param instance: article object,
|
||||||
:param validated_data:
|
|
||||||
:return: article object
|
:return: article object
|
||||||
"""
|
"""
|
||||||
article_cards = validated_data.pop('article_cards')
|
article_cards = validated_data.pop('article_cards')
|
||||||
@ -139,10 +147,19 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
card = ArticleCard.objects.get(id=card_id, article=instance)
|
card = ArticleCard.objects.get(id=card_id, article=instance)
|
||||||
card.title = card_data.get('title', card.title)
|
card.title = card_data.get('title', card.title)
|
||||||
card.description = card_data.get('description', card.description)
|
card.description = card_data.get('description', card.description)
|
||||||
card.image = card_data.get('image', card.image)
|
if 'image' in card_data and card_data['image'] is not None:
|
||||||
|
image = card_data.pop('image')
|
||||||
|
filename = f"article/{image.name}"
|
||||||
|
# upload image on ali baba
|
||||||
|
card.image_url = upload_image_to_alibaba(image, filename)
|
||||||
card.save()
|
card.save()
|
||||||
else:
|
else:
|
||||||
card_data = pop_id(card_data)
|
card_data = pop_id(card_data)
|
||||||
|
if 'image' in card_data and card_data['image'] is not None:
|
||||||
|
image = card_data.pop('image')
|
||||||
|
filename = f"article/{image.name}"
|
||||||
|
# upload image on ali baba
|
||||||
|
card_data['image_url'] = upload_image_to_alibaba(image, filename)
|
||||||
ArticleCard.objects.create(article=instance, **card_data)
|
ArticleCard.objects.create(article=instance, **card_data)
|
||||||
|
|
||||||
# Update or create survey sections
|
# Update or create survey sections
|
||||||
@ -170,3 +187,93 @@ class ArticleSerializer(serializers.ModelSerializer):
|
|||||||
SurveyOption.objects.create(survey=survey, **option_data)
|
SurveyOption.objects.create(survey=survey, **option_data)
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultArticleCardImageSerializer(serializers.ModelSerializer):
|
||||||
|
"""
|
||||||
|
Article Card serializer
|
||||||
|
"""
|
||||||
|
image = serializers.FileField(required=False)
|
||||||
|
image_url = serializers.URLField(required=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
"""
|
||||||
|
meta class
|
||||||
|
"""
|
||||||
|
model = DefaultArticleCardImage
|
||||||
|
fields = ('image_name', 'image', 'image_url')
|
||||||
|
|
||||||
|
def validate(self, attrs):
|
||||||
|
"""
|
||||||
|
to validate data
|
||||||
|
:return: validated data
|
||||||
|
"""
|
||||||
|
if 'image' not in attrs and attrs.get('image') is None:
|
||||||
|
raise serializers.ValidationError({'details': 'insert image'})
|
||||||
|
return attrs
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
"""
|
||||||
|
to create and upload image
|
||||||
|
:return: card_image object
|
||||||
|
"""
|
||||||
|
image = validated_data.pop('image')
|
||||||
|
filename = f"article/{image.name}"
|
||||||
|
if image and image.size == NUMBER['zero']:
|
||||||
|
raise serializers.ValidationError(ERROR_CODE['2035'])
|
||||||
|
# upload image on ali baba
|
||||||
|
validated_data['image_url'] = upload_image_to_alibaba(image, filename)
|
||||||
|
|
||||||
|
card_image = DefaultArticleCardImage.objects.create(**validated_data)
|
||||||
|
return card_image
|
||||||
|
|
||||||
|
|
||||||
|
class UserManagementListSerializer(serializers.ModelSerializer):
|
||||||
|
"""
|
||||||
|
user management serializer
|
||||||
|
"""
|
||||||
|
name = serializers.SerializerMethodField()
|
||||||
|
phone_number = serializers.SerializerMethodField()
|
||||||
|
user_type = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
"""
|
||||||
|
meta class
|
||||||
|
"""
|
||||||
|
model = USER
|
||||||
|
fields = ('name', 'email', 'phone_number', 'user_type', 'is_active')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_name(obj):
|
||||||
|
"""
|
||||||
|
:param obj: user object
|
||||||
|
:return: full name
|
||||||
|
"""
|
||||||
|
return (obj.first_name + obj.last_name) if obj.last_name else obj.first_name
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_phone_number(obj):
|
||||||
|
"""
|
||||||
|
:param obj: user object
|
||||||
|
:return: user phone number
|
||||||
|
"""
|
||||||
|
if profile := obj.guardian_profile.all().first():
|
||||||
|
return profile.phone
|
||||||
|
elif profile := obj.junior_profile.all().first():
|
||||||
|
return profile.phone
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_user_type(obj):
|
||||||
|
"""
|
||||||
|
:param obj: user object
|
||||||
|
:return: user type
|
||||||
|
"""
|
||||||
|
if obj.guardian_profile.all().first():
|
||||||
|
return dict(USER_TYPE).get('2')
|
||||||
|
elif obj.junior_profile.all().first():
|
||||||
|
return dict(USER_TYPE).get('1')
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,14 @@ from django.urls import path, include
|
|||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from web_admin.views import ArticleViewSet
|
from web_admin.views import ArticleViewSet, DefaultArticleCardImagesViewSet, UserManagementViewSet
|
||||||
|
|
||||||
# initiate router
|
# initiate router
|
||||||
router = routers.SimpleRouter()
|
router = routers.SimpleRouter()
|
||||||
|
|
||||||
router.register('article', ArticleViewSet, basename='article')
|
router.register('article', ArticleViewSet, basename='article')
|
||||||
|
router.register('default-card-images', DefaultArticleCardImagesViewSet, basename='default-card-images')
|
||||||
|
router.register('user', UserManagementViewSet, basename='user')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('api/v1/', include(router.urls)),
|
path('api/v1/', include(router.urls)),
|
||||||
|
|||||||
@ -3,18 +3,22 @@ web_admin views file
|
|||||||
"""
|
"""
|
||||||
# django imports
|
# django imports
|
||||||
from rest_framework.viewsets import GenericViewSet, mixins
|
from rest_framework.viewsets import GenericViewSet, mixins
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework.filters import OrderingFilter, SearchFilter
|
from rest_framework.filters import OrderingFilter, SearchFilter
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated, AllowAny
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from account.utils import custom_response, custom_error_response
|
from account.utils import custom_response, custom_error_response
|
||||||
|
from base.constants import USER_TYPE
|
||||||
from base.messages import SUCCESS_CODE, ERROR_CODE
|
from base.messages import SUCCESS_CODE, ERROR_CODE
|
||||||
from web_admin.models import Article, ArticleCard, ArticleSurvey
|
from web_admin.models import Article, ArticleCard, ArticleSurvey, DefaultArticleCardImage
|
||||||
from web_admin.permission import AdminPermission
|
from web_admin.permission import AdminPermission
|
||||||
from web_admin.serializers import ArticleSerializer, ArticleCardSerializer
|
from web_admin.serializers import (ArticleSerializer, ArticleCardSerializer, DefaultArticleCardImageSerializer,
|
||||||
|
UserManagementListSerializer)
|
||||||
|
|
||||||
|
USER = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModelMixin,
|
class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModelMixin,
|
||||||
@ -137,7 +141,7 @@ class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModel
|
|||||||
return custom_error_response(ERROR_CODE["2043"], response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(ERROR_CODE["2043"], response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@action(methods=['post'], url_name='test-add-card', url_path='test-add-card',
|
@action(methods=['post'], url_name='test-add-card', url_path='test-add-card',
|
||||||
detail=False, serializer_class=ArticleCardSerializer)
|
detail=False, serializer_class=ArticleCardSerializer, permission_classes=[AllowAny])
|
||||||
def add_card(self, request):
|
def add_card(self, request):
|
||||||
"""
|
"""
|
||||||
:param request:
|
:param request:
|
||||||
@ -147,3 +151,73 @@ class ArticleViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.UpdateModel
|
|||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return custom_response(SUCCESS_CODE["3000"])
|
return custom_response(SUCCESS_CODE["3000"])
|
||||||
|
|
||||||
|
@action(methods=['get'], url_name='test-list-card', url_path='test-list-card',
|
||||||
|
detail=False, serializer_class=ArticleCardSerializer, permission_classes=[AllowAny])
|
||||||
|
def list_card(self, request):
|
||||||
|
"""
|
||||||
|
:param request:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
queryset = ArticleCard.objects.all()
|
||||||
|
serializer = self.serializer_class(queryset, many=True)
|
||||||
|
return custom_response(None, serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultArticleCardImagesViewSet(GenericViewSet, mixins.CreateModelMixin, mixins.ListModelMixin):
|
||||||
|
"""
|
||||||
|
api to upload and list default article card images
|
||||||
|
"""
|
||||||
|
serializer_class = DefaultArticleCardImageSerializer
|
||||||
|
permission_classes = [IsAuthenticated, AdminPermission]
|
||||||
|
queryset = DefaultArticleCardImage.objects.all()
|
||||||
|
|
||||||
|
def create(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
api method to upload default article card images
|
||||||
|
:param request:
|
||||||
|
:return: success message
|
||||||
|
"""
|
||||||
|
serializer = self.serializer_class(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
serializer.save()
|
||||||
|
return custom_response(SUCCESS_CODE["3000"])
|
||||||
|
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
api method to list default article card images
|
||||||
|
:param request:
|
||||||
|
:return: default article card images
|
||||||
|
"""
|
||||||
|
queryset = self.queryset
|
||||||
|
serializer = self.serializer_class(queryset, many=True)
|
||||||
|
return custom_response(None, data=serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin):
|
||||||
|
"""
|
||||||
|
api to manage (list, view, edit) user
|
||||||
|
"""
|
||||||
|
serializer_class = UserManagementListSerializer
|
||||||
|
permission_classes = []
|
||||||
|
queryset = USER.objects.prefetch_related(
|
||||||
|
'guardian_profile', 'junior_profile')
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
if self.request.query_params.get('user_type') == dict(USER_TYPE).get('2'):
|
||||||
|
return self.queryset.filter(junior_profile__isnull=True)
|
||||||
|
elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'):
|
||||||
|
return self.queryset.filter(guardian_profile__isnull=True)
|
||||||
|
else:
|
||||||
|
return self.queryset
|
||||||
|
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
api method to list all the user
|
||||||
|
:param request:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
queryset = self.get_queryset()
|
||||||
|
serializer = self.serializer_class(queryset, many=True)
|
||||||
|
return custom_response(None, data=serializer.data)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user