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)