From ab9067b65018e560cba3849e1bbe0218c75f39af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu> Date: Wed, 23 Jan 2019 17:17:27 +0100 Subject: [PATCH] Validate document --- src/document/models.py | 2 +- src/document/serializers.py | 6 +++++- src/homework/serializers.py | 1 + src/stats/serializers.py | 10 ++++++++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/document/models.py b/src/document/models.py index d86febb..0c25cf0 100644 --- a/src/document/models.py +++ b/src/document/models.py @@ -23,7 +23,7 @@ class Document(models.Model): ], blank=True, ) - solution = models.ForeignKey(Solution, related_name='files', on_delete=models.DO_NOTHING, blank=True, null=True) + solution = models.ForeignKey(Solution, related_name='files', on_delete=models.CASCADE) def __str__(self): return self.name diff --git a/src/document/serializers.py b/src/document/serializers.py index 00f7f78..4f6bbad 100644 --- a/src/document/serializers.py +++ b/src/document/serializers.py @@ -1,9 +1,10 @@ from rest_framework import serializers - from common.serializers import CurrentUserProfileDefault from . import models from common.middleware import CurrentUserMiddleware +_max_count = 5 + class DocumentSerializer(serializers.ModelSerializer): uploaded_by = serializers.HiddenField(default=CurrentUserProfileDefault()) @@ -20,4 +21,7 @@ class DocumentSerializer(serializers.ModelSerializer): profile = CurrentUserMiddleware.get_current_user_profile() if data['solution'] not in profile.solution.all(): raise serializers.ValidationError('You dont have permission!') + count = models.Document.objects.filter(uploaded_by=profile, solution=data['solution']).count() + if count >= _max_count: + raise serializers.ValidationError('You cant upload more than ' + str(_max_count) + ' document to one solution!') return data diff --git a/src/homework/serializers.py b/src/homework/serializers.py index 9d89c5e..a8de6ad 100755 --- a/src/homework/serializers.py +++ b/src/homework/serializers.py @@ -28,6 +28,7 @@ class SolutionSerializer(serializers.ModelSerializer): model = models.Solution read_only_fields = ('created_by', 'created_at', 'updated_at', 'ready', 'files') fields = ( + 'id', 'task', 'created_at', 'updated_at', diff --git a/src/stats/serializers.py b/src/stats/serializers.py index 42db8a8..f840e87 100644 --- a/src/stats/serializers.py +++ b/src/stats/serializers.py @@ -18,12 +18,18 @@ class StaffEventSerializer(serializers.ModelSerializer): def get_visitor_number(self, obj): return obj.visitors.all().count() + def validate(self, data): + for i in data['absent']: + if i in data['visitors']: + raise serializers.ValidationError('You cant add a student to absent and visitor in the same time.') + return data + class StudentEventSerializer(serializers.ModelSerializer): class Meta: model = models.Event - fields = ('name', 'date', 'description', ) - read_only_fields = ('name', 'date', 'description', ) + fields = ('id', 'name', 'date', 'description', ) + read_only_fields = ('id', 'name', 'date', 'description', ) class NoteSerializer(serializers.ModelSerializer): -- GitLab