diff --git a/src/homework/models.py b/src/homework/models.py index 5a8b2026a6deb3909a5129278e4695b58bcf47ba..3f0933e367e8cfc766fc2dfdbca7b7da717fbc34 100644 --- a/src/homework/models.py +++ b/src/homework/models.py @@ -16,10 +16,6 @@ def validate_deadline(date): raise ValidationError(_('Date must be greater than now'), code='invalid') -# def validate_file_size(file): -# if file._size > __MAX_UPLOAD_SIZE: -# raise ValidationError(_('Please keep filesize under' + __MAX_UPLOAD_SIZE)) - class Task(models.Model): title = models.CharField(max_length=150) date = models.DateTimeField(auto_now_add=True, editable=False) @@ -34,17 +30,9 @@ class Task(models.Model): )], blank=True, ) - # files = myfields.RestrictedFileField( - # content_types=['image/png', 'image/jpeg', 'application/zip'], - # max_upload_size=MAX_UPLOAD_SIZE, - # blank=True, - # null=True, - # ) -# solution_file = models.BooleanField() -# -# def clean(self): -# if self.deadline <= timezone.now(): -# raise ValidationError(_('Invalid date'), code='invalid') + + def __str__(self): + return self.title class Solution(models.Model): @@ -62,8 +50,3 @@ class Solution(models.Model): blank=True, ) created_by = models.ForeignKey(User, on_delete=models.CASCADE) - # files = myfields.RestrictedFileField( - # content_types=['image/png', 'image/jpeg', 'application/zip'], - # max_upload_size=MAX_UPLOAD_SIZE, - # blank=True, - # ) diff --git a/src/homework/permissions.py b/src/homework/permissions.py index 659c3a60c87ea61abb684a8c0e6f91b568685431..0ef04b373b78fa42323606c1a33c54391d9ec60c 100644 --- a/src/homework/permissions.py +++ b/src/homework/permissions.py @@ -37,4 +37,3 @@ class IsStaffUser(BasePermission): def has_permission(self, request, view): return request.user.is_staff - \ No newline at end of file diff --git a/src/homework/serializers.py b/src/homework/serializers.py index 4ce68b43063f2a4b52158fbc2e78a074333653b8..6ca0659b7115fffd2ce6700f3b2ef2da808928ec 100644 --- a/src/homework/serializers.py +++ b/src/homework/serializers.py @@ -17,11 +17,11 @@ class SolutionSerializer(serializers.ModelSerializer): extra_kwargs = {'created_by': {'default': serializers.CurrentUserDefault()}} fields = ('task', 'date', 'accepted', 'files', 'created_by') - def validate(self, attrs): - task = attrs['task'] - date = attrs['date'] - - if task.deadline < date: - raise serializers.ValidationError("You cannot submit homework after the deadline") - - return attrs + # def validate(self, attrs): + # task = attrs['task'] + # date = attrs['date'] + # + # if task.deadline < date: + # raise serializers.ValidationError("You cannot submit homework after the deadline") + # + # return attrs diff --git a/src/homework/views.py b/src/homework/views.py index e4da4efbfa3c5314db257b1695fd4a769403311d..e778ca157d85558c9713cf1ce5a19287b9794342 100644 --- a/src/homework/views.py +++ b/src/homework/views.py @@ -4,6 +4,8 @@ from rest_framework import status from rest_framework.decorators import list_route from django.http import Http404 from django.shortcuts import get_object_or_404 +import datetime +from django.utils.timezone import utc from . import serializers from . import models @@ -21,24 +23,21 @@ class SolutionsViewSet(viewsets.ModelViewSet): queryset = models.Solution.objects.all() permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, ) - def create(self, request, *args, **kwargs): - serializer = self.get_serializer(data=request.data) - serializer.is_valid(raise_exception=True) - # serializer.validated_data['accepted'] = False - # task_id = serializer.validated_data.get('task') - # date = serializer.validated_data['date'] - # task = get_object_or_404(models.Task, pk=task_id) - # if task_id.deadline < date: - # return Http404("Deadline") - headers = self.get_success_headers(serializer.data) - return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) - - def get_queryset(self): - user = self.request.user - if user.has_perm(permissions.IsStaffUser): - return models.Solution.objects.all() - - @list_route(methods=['get']) - def me(self, request): - serializer = self.serializer_class(request.user.profile) #request ? - return Response(serializer.data) \ No newline at end of file + def perform_create(self, serializer): + serializer.validated_data['accepted'] = False + task = serializer.validated_data['task'] + # task = get_object_or_404(models.Task, pk=task_id.id) + now = datetime.datetime.utcnow().replace(tzinfo=utc) + if task.deadline < now: + raise Http404("Deadline") + serializer.save() + + # def get_queryset(self): + # user = self.request.user + # if user.has_perm(permissions.IsStaffUser): + # return models.Solution.objects.all() + # + # @list_route(methods=['get']) + # def me(self, request): + # serializer = self.serializer_class(request.user.profile) #request ? + # return Response(serializer.data) \ No newline at end of file