diff --git a/src/document/models.py b/src/document/models.py index d86febb2d868fea16983aa4ced5dfe6a1bfd9ede..0c25cf008eca5bc0c14ba8b781e3ff554713816f 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 00f7f789dcb28231c76884cf9e2e49501181a0c7..4f6bbad68c108d3a48a4b8b9ccd3d079d84782d4 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 9d89c5eeb2ed207f0b700efd7e6647e93d7f09a9..a8de6ad3699f26b4a600ee2f2b291dbf11cc011c 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 42db8a865bd95c17c1a0df79c377b4ffa6ae2183..f840e878df76491028c3bbb28c7c9625aabd6ee4 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):