67 lines
2.1 KiB
Python
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)
|
|
|
|
|