mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 14:04: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', []):
|
for event in events.get('items', []):
|
||||||
if event.get('recurringEventId'):
|
if event.get('recurringEventId'):
|
||||||
continue
|
continue
|
||||||
|
event['start_datetime'] = event.get('start').get('dateTime')
|
||||||
|
event['end_datetime'] = event.get('end').get('dateTime')
|
||||||
|
event.pop('start')
|
||||||
|
event.pop('end')
|
||||||
try:
|
try:
|
||||||
task = Todo.objects.get(google_calendar_id=event['id'])
|
task = Todo.objects.get(google_calendar_id=event['id'])
|
||||||
serializer = TodoUpdateSerializer(instance=task, data=event)
|
serializer = TodoUpdateSerializer(instance=task, data=event)
|
||||||
|
|||||||
@ -1,37 +1,16 @@
|
|||||||
from rest_framework import status
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework.generics import CreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView, DestroyAPIView
|
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from ..models import Todo
|
from tasks.models import Todo
|
||||||
from .serializers import TaskCreateSerializer, TaskGeneralSerializer
|
from .serializers import TaskCreateSerializer, TaskGeneralSerializer
|
||||||
|
|
||||||
class TaskCreateView(CreateAPIView):
|
|
||||||
queryset = Todo.objects.all()
|
|
||||||
serializer_class = TaskCreateSerializer
|
|
||||||
permission_classes = [IsAuthenticated]
|
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
class TodoViewSet(viewsets.ModelViewSet):
|
||||||
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):
|
|
||||||
queryset = Todo.objects.all()
|
queryset = Todo.objects.all()
|
||||||
serializer_class = TaskGeneralSerializer
|
serializer_class = TaskGeneralSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
|
def get_serializer_class(self):
|
||||||
class TaskUpdateView(RetrieveUpdateAPIView):
|
# Can't add ManytoMany at creation time (Tags)
|
||||||
queryset = Todo.objects.all()
|
if self.action == 'create':
|
||||||
serializer_class = TaskGeneralSerializer
|
return TaskCreateSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
return TaskGeneralSerializer
|
||||||
|
|
||||||
|
|
||||||
class TaskDeleteView(DestroyAPIView):
|
|
||||||
queryset = Todo.objects.all()
|
|
||||||
permission_classes = [IsAuthenticated]
|
|
||||||
@ -1,17 +1,17 @@
|
|||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
|
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
from .api import GoogleCalendarEventViewset
|
|
||||||
from .tasks.views import TaskCreateView, TaskRetrieveView, TaskUpdateView, TaskDeleteView
|
from tasks.api import GoogleCalendarEventViewset
|
||||||
from .misc.views import TagViewSet
|
from tasks.tasks.views import TodoViewSet
|
||||||
|
from tasks.misc.views import TagViewSet
|
||||||
|
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
|
router.register(r'todo', TodoViewSet)
|
||||||
router.register(r'tags', TagViewSet)
|
router.register(r'tags', TagViewSet)
|
||||||
router.register(r'calendar-events', GoogleCalendarEventViewset, basename='calendar-events')
|
router.register(r'calendar-events', GoogleCalendarEventViewset, basename='calendar-events')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include(router.urls)),
|
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