mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 05:54:07 +01:00
Use ModelViewset for Todo and Add some fields before validate
This commit is contained in:
parent
5299fb2eb7
commit
a403e45f9f
@ -31,6 +31,10 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
||||
for event in events.get('items', []):
|
||||
if event.get('recurringEventId'):
|
||||
continue
|
||||
event['start_datetime'] = event.get('start').get('dateTime')
|
||||
event['end_datetime'] = event.get('end').get('dateTime')
|
||||
event.pop('start')
|
||||
event.pop('end')
|
||||
try:
|
||||
task = Todo.objects.get(google_calendar_id=event['id'])
|
||||
serializer = TodoUpdateSerializer(instance=task, data=event)
|
||||
|
||||
@ -1,37 +1,16 @@
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.generics import CreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView, DestroyAPIView
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from ..models import Todo
|
||||
from tasks.models import Todo
|
||||
from .serializers import TaskCreateSerializer, TaskGeneralSerializer
|
||||
|
||||
class TaskCreateView(CreateAPIView):
|
||||
queryset = Todo.objects.all()
|
||||
serializer_class = TaskCreateSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
|
||||
if serializer.is_valid():
|
||||
self.perform_create(serializer)
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class TaskRetrieveView(RetrieveAPIView):
|
||||
class TodoViewSet(viewsets.ModelViewSet):
|
||||
queryset = Todo.objects.all()
|
||||
serializer_class = TaskGeneralSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
|
||||
class TaskUpdateView(RetrieveUpdateAPIView):
|
||||
queryset = Todo.objects.all()
|
||||
serializer_class = TaskGeneralSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
|
||||
class TaskDeleteView(DestroyAPIView):
|
||||
queryset = Todo.objects.all()
|
||||
permission_classes = [IsAuthenticated]
|
||||
def get_serializer_class(self):
|
||||
# Can't add ManytoMany at creation time (Tags)
|
||||
if self.action == 'create':
|
||||
return TaskCreateSerializer
|
||||
return TaskGeneralSerializer
|
||||
@ -1,17 +1,17 @@
|
||||
from django.urls import path, include
|
||||
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .api import GoogleCalendarEventViewset
|
||||
from .tasks.views import TaskCreateView, TaskRetrieveView, TaskUpdateView, TaskDeleteView
|
||||
from .misc.views import TagViewSet
|
||||
|
||||
from tasks.api import GoogleCalendarEventViewset
|
||||
from tasks.tasks.views import TodoViewSet
|
||||
from tasks.misc.views import TagViewSet
|
||||
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'todo', TodoViewSet)
|
||||
router.register(r'tags', TagViewSet)
|
||||
router.register(r'calendar-events', GoogleCalendarEventViewset, basename='calendar-events')
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
path('tasks/create/', TaskCreateView.as_view(), name="add-task"),
|
||||
path('tasks/<int:pk>/', TaskRetrieveView.as_view(), name='retrieve-task'),
|
||||
path('tasks/<int:pk>/update/', TaskUpdateView.as_view(), name='update-task'),
|
||||
path('tasks/<int:pk>/delete/', TaskDeleteView.as_view(), name='delete-task'),
|
||||
]
|
||||
Loading…
Reference in New Issue
Block a user