Files
crmApi/apps/reminder/views.py
T
2024-01-22 13:01:42 +03:30

67 lines
2.1 KiB
Python

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework import serializers
from rest_framework.response import Response
from rest_framework import status
from apps.reminder.models import Reminder as ReminderModel
from apps.reminder.services import create_or_edit_reminder_lead, delete_reminder_lead
from utils.tools import inline_serializer
from apps.reminder.selectors import reminder_list
# Create your views here.
class ReminderListApiView(APIView):
class OutputSerializer(serializers.ModelSerializer):
customer = inline_serializer(many=False, fields={
'id': serializers.IntegerField(),
'name_family': serializers.CharField(),
})
lead = inline_serializer(many=False, fields={
'id': serializers.IntegerField(),
'title': serializers.CharField(),
})
note = inline_serializer(many=False, fields={
'id': serializers.IntegerField(),
'desc': serializers.CharField(),
})
class Meta:
model = ReminderModel
fields = '__all__'
def get(self, request):
reminders = reminder_list(request=request)
output = self.OutputSerializer(reminders, many=True)
return Response(data=output.data, status=status.HTTP_200_OK)
class ReminderLeadCreateUpdateApiView(APIView):
class InputSerializers(serializers.Serializer):
lead_id = serializers.IntegerField(required=True)
datetime = serializers.DateTimeField(required=True)
desc = serializers.CharField(required=False, allow_null=True)
def post(self, request):
serializer = self.InputSerializers(data=request.data)
serializer.is_valid(raise_exception=True)
output = create_or_edit_reminder_lead(request, **serializer.validated_data)
return Response(data={'id': output.id}, status=status.HTTP_201_CREATED)
class ReminderLeadDeleteApiView(APIView):
def delete(self, request, lead_id):
output = delete_reminder_lead(request, lead_id=lead_id)
return Response(data={'status': 'removed'}, status=status.HTTP_200_OK)