Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. INPUT - request
  2.  
  3. {
  4. "task_id": "1",
  5. "dates": ["2018-01-02"],
  6. "hours_from": "15:00",
  7. "hours_to": "12:00"
  8. }
  9.  
  10. MODELS
  11.  
  12. class Day(models.Model):
  13. user = models.ForeignKey('auth.User',
  14. on_delete=models.PROTECT,
  15. related_name='created_events')
  16. date = models.DateField(default=timezone.now)
  17. creation_date = models.DateTimeField(default=timezone.now)
  18.  
  19.  
  20. class Event(Day):
  21. task = models.ForeignKey(Task,
  22. on_delete=models.PROTECT,
  23. related_name='related_events')
  24. hour_from = models.TimeField(default=timezone.now)
  25.  
  26. hour_to = models.TimeField(default=timezone.now)
  27.  
  28. task_name = models.CharField(max_length=64, null=True, blank=True)
  29.  
  30.  
  31. SERIALIZER
  32. class EventSerializer(serializers.ModelSerializer):
  33.  
  34. hour_from = serializers.TimeField()
  35. hour_to = serializers.TimeField()
  36.  
  37. def validate(self, data):
  38. """
  39. Check that the start is before the stop.
  40. """
  41.  
  42. if data['hour_from'] > data['hour_to']:
  43. raise serializers.ValidationError("finish must occur after start")
  44. return data
  45.  
  46. class Meta:
  47. model = Event
  48. fields = ('task_id', 'task_name', 'date', 'hour_from', 'hour_to', 'user')
  49.  
  50.  
  51. VIEWS
  52. class EventViewSet(LoggingMixin, viewsets.ModelViewSet):
  53. queryset = Event.objects.all()
  54. serializer_class = EventSerializer
  55.  
  56. def get_queryset(self):
  57. user = self.request.user
  58. events_by_user = Event.objects.filter(user=user)
  59. today = datetime.date.today()
  60. data = events_by_user.filter(date__year=today.year,
  61. date__month=today.month)
  62. return data
  63.  
  64. def create(self, request):
  65. time_from = request.data.__getitem__('hours_from')
  66. hours_from = datetime.datetime.strptime(time_from, '%H:%M').time()
  67. time_to = request.data.__getitem__('hours_to')
  68. hours_to = datetime.datetime.strptime(time_to, '%H:%M').time()
  69. user = request.user
  70. dates = request.data['dates']
  71. task_pk = int(request.data.__getitem__('task_id'))
  72. task = Task.objects.filter(pk=task_pk)[0]
  73. task_name = Task.objects.filter(pk=task_pk).get()
  74. created_events = []
  75. for i in dates:
  76. date = datetime.datetime.strptime(i, "%Y-%m-%d").date()
  77. event = Event.objects.create(
  78. user=user,
  79. task=task,
  80. date=date,
  81. hour_from=hours_from,
  82. hour_to=hours_to,
  83. task_name=task_name
  84. )
  85. created_events.append(event)
  86. events = EventSerializer(created_events, many=True).data
  87. return Response(events, status=status.HTTP_201_CREATED)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement