mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 05:54:07 +01:00
Save all task from calendar in Todo model
This commit is contained in:
parent
3c7c966dea
commit
b3efc99d3d
@ -8,7 +8,7 @@ from rest_framework.permissions import IsAuthenticated
|
|||||||
|
|
||||||
from tasks.utils import get_service, generate_recurrence_rule
|
from tasks.utils import get_service, generate_recurrence_rule
|
||||||
from tasks.models import Todo, RecurrenceTask
|
from tasks.models import Todo, RecurrenceTask
|
||||||
from tasks.serializers import TodoUpdateSerializer, RecurrenceTaskUpdateSerializer
|
from tasks.serializers import TodoUpdateSerializer
|
||||||
|
|
||||||
class GoogleCalendarEventViewset(viewsets.ViewSet):
|
class GoogleCalendarEventViewset(viewsets.ViewSet):
|
||||||
"""Viewset for list or save Google Calendar Events."""
|
"""Viewset for list or save Google Calendar Events."""
|
||||||
@ -50,7 +50,11 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
|||||||
return events
|
return events
|
||||||
|
|
||||||
def _validate_serializer(self, serializer):
|
def _validate_serializer(self, serializer):
|
||||||
"""Validate serializer and return response."""
|
"""
|
||||||
|
Validate serializer and return response.
|
||||||
|
|
||||||
|
:param serializer: The serializer to validate.
|
||||||
|
"""
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return Response("Validate Successfully", status=200)
|
return Response("Validate Successfully", status=200)
|
||||||
@ -61,7 +65,6 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
|||||||
events = self._get_google_events(request)
|
events = self._get_google_events(request)
|
||||||
|
|
||||||
responses = []
|
responses = []
|
||||||
recurrence_task_ids = []
|
|
||||||
for event in events:
|
for event in events:
|
||||||
start_datetime = event.get('start', {}).get('dateTime')
|
start_datetime = event.get('start', {}).get('dateTime')
|
||||||
end_datetime = event.get('end', {}).get('dateTime')
|
end_datetime = event.get('end', {}).get('dateTime')
|
||||||
@ -71,25 +74,6 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
|||||||
event.pop('start')
|
event.pop('start')
|
||||||
event.pop('end')
|
event.pop('end')
|
||||||
|
|
||||||
if (event.get('recurringEventId') in recurrence_task_ids):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if (event.get('recurringEventId') is not None):
|
|
||||||
originalStartTime = event.get('originalStartTime', {}).get('dateTime')
|
|
||||||
rrule_text = generate_recurrence_rule(event['start_datetime'], event['end_datetime'], originalStartTime)
|
|
||||||
event['recurrence'] = rrule_text
|
|
||||||
event.pop('originalStartTime')
|
|
||||||
recurrence_task_ids.append(event['recurringEventId'])
|
|
||||||
|
|
||||||
try:
|
|
||||||
task = RecurrenceTask.objects.get(google_calendar_id=event['id'])
|
|
||||||
serializer = RecurrenceTaskUpdateSerializer(instance=task, data=event)
|
|
||||||
except RecurrenceTask.DoesNotExist:
|
|
||||||
serializer = RecurrenceTaskUpdateSerializer(data=event, user=request.user)
|
|
||||||
|
|
||||||
responses.append(self._validate_serializer(serializer))
|
|
||||||
continue
|
|
||||||
|
|
||||||
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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user