mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-19 14:04:07 +01:00
Rename Serializer and Skip Reccurence task mapping for now
This commit is contained in:
parent
4100b10167
commit
6f47b10749
@ -7,8 +7,8 @@ from rest_framework.response import Response
|
|||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
from tasks.utils import get_service
|
from tasks.utils import get_service
|
||||||
from tasks.models import Todo
|
from tasks.models import Todo, RecurrenceTask
|
||||||
from tasks.serializers import TaskUpdateSerializer
|
from tasks.serializers import TodoUpdateSerializer, RecurrenceTaskUpdateSerializer
|
||||||
|
|
||||||
|
|
||||||
class GoogleCalendarEventViewset(viewsets.ViewSet):
|
class GoogleCalendarEventViewset(viewsets.ViewSet):
|
||||||
@ -17,28 +17,30 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.current_time = datetime.now(tz=timezone.utc).isoformat()
|
self.current_time = datetime.now(tz=timezone.utc).isoformat()
|
||||||
self.event_fields = 'items(id,summary,description,created,updated,start,end)'
|
self.event_fields = 'items(id,summary,description,created,recurringEventId,updated,start,end)'
|
||||||
|
|
||||||
def _validate_serializer(self, serializer):
|
def _validate_serializer(self, serializer):
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return Response("Task Sync Successfully", status=200)
|
return Response("Validate Successfully", status=200)
|
||||||
return Response(serializer.errors, status=400)
|
return Response(serializer.errors, status=400)
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
service = get_service(request)
|
service = get_service(request)
|
||||||
events = service.events().list(calendarId='primary', fields=self.event_fields).execute()
|
events = service.events().list(calendarId='primary', fields=self.event_fields).execute()
|
||||||
for event in events.get('items', []):
|
for event in events.get('items', []):
|
||||||
|
if event.get('recurringEventId'):
|
||||||
|
continue
|
||||||
try:
|
try:
|
||||||
task = Todo.objects.get(google_calendar_id=event['id'])
|
task = Todo.objects.get(google_calendar_id=event['id'])
|
||||||
serializer = TaskUpdateSerializer(instance=task, data=event)
|
serializer = TodoUpdateSerializer(instance=task, data=event)
|
||||||
return self._validate_serializer(serializer)
|
return self._validate_serializer(serializer)
|
||||||
except Todo.DoesNotExist:
|
except Todo.DoesNotExist:
|
||||||
serializer = TaskUpdateSerializer(data=event, user=request.user)
|
serializer = TodoUpdateSerializer(data=event, user=request.user)
|
||||||
return self._validate_serializer(serializer)
|
return self._validate_serializer(serializer)
|
||||||
|
|
||||||
def list(self, request, days=7):
|
def list(self, request, days=7):
|
||||||
max_time = (datetime.now(tz=timezone.utc) + timedelta(days=3)).isoformat()
|
max_time = (datetime.now(tz=timezone.utc) + timedelta(days=days)).isoformat()
|
||||||
|
|
||||||
service = get_service(request)
|
service = get_service(request)
|
||||||
events = []
|
events = []
|
||||||
@ -49,11 +51,11 @@ class GoogleCalendarEventViewset(viewsets.ViewSet):
|
|||||||
calendarId='primary',
|
calendarId='primary',
|
||||||
timeMin=self.current_time,
|
timeMin=self.current_time,
|
||||||
timeMax=max_time,
|
timeMax=max_time,
|
||||||
maxResults=20,
|
maxResults=200,
|
||||||
singleEvents=True,
|
singleEvents=True,
|
||||||
orderBy='startTime',
|
orderBy='startTime',
|
||||||
pageToken=next_page_token,
|
pageToken=next_page_token,
|
||||||
fields='items(id,summary,description,created,updated,start,end)',
|
fields='items(id,summary,description,created,recurringEventId,updated,start,end)',
|
||||||
)
|
)
|
||||||
|
|
||||||
page_results = query.execute()
|
page_results = query.execute()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.utils.dateparse import parse_datetime
|
from django.utils.dateparse import parse_datetime
|
||||||
from .models import Todo
|
from .models import Todo, RecurrenceTask
|
||||||
|
|
||||||
|
|
||||||
class GoogleCalendarEventSerializer(serializers.Serializer):
|
class GoogleCalendarEventSerializer(serializers.Serializer):
|
||||||
@ -10,7 +10,7 @@ class GoogleCalendarEventSerializer(serializers.Serializer):
|
|||||||
description = serializers.CharField(required=False)
|
description = serializers.CharField(required=False)
|
||||||
|
|
||||||
|
|
||||||
class TaskUpdateSerializer(serializers.ModelSerializer):
|
class TodoUpdateSerializer(serializers.ModelSerializer):
|
||||||
id = serializers.CharField(source="google_calendar_id")
|
id = serializers.CharField(source="google_calendar_id")
|
||||||
summary = serializers.CharField(source="title")
|
summary = serializers.CharField(source="title")
|
||||||
description = serializers.CharField(source="notes", required=False)
|
description = serializers.CharField(source="notes", required=False)
|
||||||
@ -26,10 +26,36 @@ class TaskUpdateSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.user = kwargs.pop('user', None)
|
self.user = kwargs.pop('user', None)
|
||||||
super(TaskUpdateSerializer, self).__init__(*args, **kwargs)
|
super(TodoUpdateSerializer, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
validated_data['user'] = self.user
|
validated_data['user'] = self.user
|
||||||
task = Todo.objects.create(**validated_data)
|
task = Todo.objects.create(**validated_data)
|
||||||
|
|
||||||
return task
|
return task
|
||||||
|
|
||||||
|
|
||||||
|
class RecurrenceTaskUpdateSerializer(serializers.ModelSerializer):
|
||||||
|
id = serializers.CharField(source="google_calendar_id")
|
||||||
|
summary = serializers.CharField(source="title")
|
||||||
|
description = serializers.CharField(source="notes", required=False)
|
||||||
|
created = serializers.DateTimeField(source="creation_date")
|
||||||
|
updated = serializers.DateTimeField(source="last_update")
|
||||||
|
recurrence = serializers.DateTimeField(source="recurrence_rule")
|
||||||
|
start_datetime = serializers.DateTimeField(source="start_event", required=False)
|
||||||
|
end_datetime = serializers.DateTimeField(source="end_event", required=False)
|
||||||
|
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = RecurrenceTask
|
||||||
|
fields = ('id', 'summary', 'description', 'created', 'updated', 'recurrence', 'start_datetime', 'end_datetime')
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.user = kwargs.pop('user', None)
|
||||||
|
super(RecurrenceTaskUpdateSerializer, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
validated_data['user'] = self.user
|
||||||
|
task = RecurrenceTask.objects.create(**validated_data)
|
||||||
|
|
||||||
|
return task
|
||||||
@ -5,7 +5,7 @@ from django.test import TestCase
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from tasks.tests.utils import create_test_user, login_user
|
from tasks.tests.utils import create_test_user, login_user
|
||||||
from tasks.serializers import TaskUpdateSerializer
|
from tasks.serializers import TodoUpdateSerializer
|
||||||
from tasks.models import Todo
|
from tasks.models import Todo
|
||||||
|
|
||||||
class TaskUpdateSerializerTest(TestCase):
|
class TaskUpdateSerializerTest(TestCase):
|
||||||
@ -25,7 +25,7 @@ class TaskUpdateSerializerTest(TestCase):
|
|||||||
'end_datetie': self.end_time,
|
'end_datetie': self.end_time,
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer = TaskUpdateSerializer(data=data, user=self.user)
|
serializer = TodoUpdateSerializer(data=data, user=self.user)
|
||||||
self.assertTrue(serializer.is_valid())
|
self.assertTrue(serializer.is_valid())
|
||||||
serializer.is_valid()
|
serializer.is_valid()
|
||||||
task = serializer.save()
|
task = serializer.save()
|
||||||
@ -44,7 +44,7 @@ class TaskUpdateSerializerTest(TestCase):
|
|||||||
'end_datetie': self.end_time,
|
'end_datetie': self.end_time,
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer = TaskUpdateSerializer(instance=task, data=data)
|
serializer = TodoUpdateSerializer(instance=task, data=data)
|
||||||
self.assertTrue(serializer.is_valid())
|
self.assertTrue(serializer.is_valid())
|
||||||
updated_task = serializer.save()
|
updated_task = serializer.save()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user