diff --git a/src/account/models.py b/src/account/models.py index 84a4c47a0a06bc9aaa6e5d1407665a608d309c0a..dfea06b79723ac49c2854545ac7616a34c2733ac 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -12,7 +12,11 @@ class GroupChoice(models.Model): ('HAT', 'HallgatĂłi TudĂĄsbĂĄzis'), ('N', 'None'), ) - choice = models.CharField(max_length=10, choices=TEAMS, default='N', unique=True) + choice = models.CharField( + max_length=10, + choices=TEAMS, + default='N', + unique=True) def __str__(self): return self.choice @@ -32,18 +36,20 @@ class Profile(models.Model): related_name='profile', on_delete=models.CASCADE ) - # TODO: Change the default to json render side + motivation_about = models.TextField(blank=True, default='') motivation_profession = models.TextField(blank=True, default='') motivation_exercise = models.TextField(blank=True, default='') nick = models.CharField(max_length=15, blank=True, default='') signed = models.BooleanField(default=False, null=False) - groups = models.ManyToManyField(GroupChoice, related_name='profiles', blank=True) + groups = models.ManyToManyField( + GroupChoice, related_name='profiles', blank=True) role = models.CharField(max_length=10, choices=ROLES, default='Applicant') @property def score(self): - return self.events_visitor.all().count()*10 + self.solution.filter(accepted=True).count()*50 + return self.events_visitor.all().count() * 10 + \ + self.solution.filter(accepted=True).count() * 50 @property def full_name(self): diff --git a/src/account/serializers.py b/src/account/serializers.py index 52ce77f49f28a5c06dfb03ecbd629ad6a5015201..0246dd2f544ab1d59b2da84c228f7e659f893c40 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -11,7 +11,10 @@ class ChoiceSerializer(serializers.ModelSerializer): class ProfileSerializer_User(serializers.ModelSerializer): - groups = serializers.SlugRelatedField(many=True, slug_field='choice', queryset=models.GroupChoice.objects.all()) + groups = serializers.SlugRelatedField( + many=True, + slug_field='choice', + queryset=models.GroupChoice.objects.all()) updated_at = serializers.DateTimeField(read_only=True) full_name = serializers.SerializerMethodField() @@ -36,17 +39,18 @@ class ProfileSerializer_User(serializers.ModelSerializer): def validate_updated_at(self, value): deadline = models.Deadline.get_solo().deadline if deadline is not None and value > deadline: - raise serializers.ValidationError("You cannot join after the deadline") + raise serializers.ValidationError( + "You cannot join after the deadline") return value def validate_role(self, value): modifier_role = CurrentUserMiddleware.get_current_user_profile().role if value != modifier_role: - raise serializers.ValidationError("You don't have permission change role") + raise serializers.ValidationError( + "You don't have permission change role") return value def validate_signed(self, value): - modifier = CurrentUserMiddleware.get_current_user_profile() if value is False: raise serializers.ValidationError("You cannot join without signed") return value @@ -63,8 +67,12 @@ class ProfileSerializer_User(serializers.ModelSerializer): def get_full_name(self, obj): return obj.full_name + class ProfileSerializer_Staff(serializers.ModelSerializer): - groups = serializers.SlugRelatedField(many=True, slug_field='choice', queryset=models.GroupChoice.objects.all()) + groups = serializers.SlugRelatedField( + many=True, + slug_field='choice', + queryset=models.GroupChoice.objects.all()) updated_at = serializers.DateTimeField(read_only=True) full_name = serializers.SerializerMethodField() @@ -89,7 +97,8 @@ class ProfileSerializer_Staff(serializers.ModelSerializer): def validate_updated_at(self, value): deadline = models.Deadline.get_solo().deadline if deadline is not None and value > deadline: - raise serializers.ValidationError("You cannot join after the deadline") + raise serializers.ValidationError( + "You cannot join after the deadline") return value def validate_role(self, value): @@ -108,4 +117,4 @@ class ProfileSerializer_Staff(serializers.ModelSerializer): return super().update(instance, validated_data) def get_full_name(self, obj): - return obj.full_name \ No newline at end of file + return obj.full_name diff --git a/src/document/serializers.py b/src/document/serializers.py index 9bf71bda58ccff44bb85a55141e121be895c2a55..7e24e70b6bd9e05d0172056753f489b3dc18d23c 100644 --- a/src/document/serializers.py +++ b/src/document/serializers.py @@ -12,11 +12,20 @@ class DocumentSerializer(serializers.ModelSerializer): class Meta: model = models.Document - fields = ('uploaded_by', 'uploaded_at', 'name', 'description', 'file', 'uploaded_by_name', 'solution', ) + fields = ( + 'uploaded_by', + 'uploaded_at', + 'name', + 'description', + 'file', + 'uploaded_by_name', + 'solution', + ) def to_representation(self, instance): data = super().to_representation(instance) - if not data['file']: data['file']= "" + if not data['file']: + data['file'] = "" return data def get_uploaded_by_name(self, obj): @@ -26,8 +35,11 @@ class DocumentSerializer(serializers.ModelSerializer): profile = CurrentUserMiddleware.get_current_user_profile() if value not in profile.solution.all(): raise serializers.ValidationError('You dont have permission!') - count = models.Document.objects.filter(uploaded_by=profile, solution=value).count() + count = models.Document.objects.filter( + uploaded_by=profile, solution=value).count() if count >= _max_count: - raise serializers.ValidationError('You cant upload more than ' + str(_max_count) + - ' document to one solution!') + raise serializers.ValidationError( + 'You cant upload more than ' + + str(_max_count) + + ' document to one solution!') return value diff --git a/src/homework/serializers.py b/src/homework/serializers.py index 06bb25fcd2e4959a45ddf96c81f49e63a6476a4a..1c7ec13725e7bf8f1472b33a4c0120293dc3071b 100755 --- a/src/homework/serializers.py +++ b/src/homework/serializers.py @@ -14,19 +14,28 @@ class TaskSerializer(serializers.ModelSerializer): def validate(self, data): if timezone.now() >= data['deadline']: - raise serializers.ValidationError('Please, enter appropriate deadline.') + raise serializers.ValidationError( + 'Please, enter appropriate deadline.') return data def create(self, validated_data): - profiles = Profile.objects.filter(role="Student").exclude(user__email='') + profiles = Profile.objects.filter( + role="Student").exclude( + user__email='') for profile in profiles: email.new_homework(profile.user, validated_data.get('deadline')) return self.Meta.model.objects.create(**validated_data) + class SolutionSerializer_Student(serializers.ModelSerializer): class Meta: model = models.Solution - read_only_fields = ('created_by', 'created_at', 'updated_at', 'ready', 'files') + read_only_fields = ( + 'created_by', + 'created_at', + 'updated_at', + 'ready', + 'files') fields = ( 'id', 'task', @@ -45,18 +54,22 @@ class SolutionSerializer_Student(serializers.ModelSerializer): return value def validate_accepted(self, value): - raise serializers.ValidationError("You don't have permission to modify accepted!") + raise serializers.ValidationError( + "You don't have permission to modify accepted!") def validate_corrected(self, value): - raise serializers.ValidationError("You don't have permission to modify corrected!") + raise serializers.ValidationError( + "You don't have permission to modify corrected!") def validate_note(self, value): if value != '': - raise serializers.ValidationError("You don't have permission to create note!") + raise serializers.ValidationError( + "You don't have permission to create note!") return value def update(self, instance, validated_data): - if instance.corrected is not True and validated_data.get('corrected', instance.corrected) is True: + if instance.corrected is not True and validated_data.get( + 'corrected', instance.corrected) is True: email.homework_corrected( instance.created_by.user, instance.task.title, @@ -66,13 +79,21 @@ class SolutionSerializer_Student(serializers.ModelSerializer): def create(self, validated_data): profile = CurrentUserMiddleware.get_current_user_profile() - models.Solution.objects.filter(created_by=profile, task=validated_data['task']).delete() + models.Solution.objects.filter( + created_by=profile, + task=validated_data['task']).delete() return super().create(validated_data) + class SolutionSerializer_Staff(serializers.ModelSerializer): class Meta: model = models.Solution - read_only_fields = ('created_by', 'created_at', 'updated_at', 'ready', 'files') + read_only_fields = ( + 'created_by', + 'created_at', + 'updated_at', + 'ready', + 'files') fields = ( 'id', 'task', @@ -100,7 +121,8 @@ class SolutionSerializer_Staff(serializers.ModelSerializer): return value def update(self, instance, validated_data): - if instance.corrected is not True and validated_data.get('corrected', instance.corrected) is True: + if instance.corrected is not True and validated_data.get( + 'corrected', instance.corrected) is True: email.homework_corrected( instance.created_by.user, instance.task.title, @@ -110,5 +132,7 @@ class SolutionSerializer_Staff(serializers.ModelSerializer): def create(self, validated_data): profile = CurrentUserMiddleware.get_current_user_profile() - models.Solution.objects.filter(created_by=profile, task=validated_data['task']).delete() - return super().create(validated_data) \ No newline at end of file + models.Solution.objects.filter( + created_by=profile, + task=validated_data['task']).delete() + return super().create(validated_data) diff --git a/src/homework/views.py b/src/homework/views.py index d6dfb940480998105a54257093dbb1dd4ca1ade8..fce43da9c8c315d38cbef91d700890bf8996e46a 100755 --- a/src/homework/views.py +++ b/src/homework/views.py @@ -8,7 +8,11 @@ from common import permissions class TasksViewSet(viewsets.ModelViewSet): serializer_class = serializers.TaskSerializer queryset = models.Task.objects.all() - permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, permissions.IsStaffOrStudent, ) + permission_classes = ( + permissions.IsStaffOrReadOnlyForAuthenticated, + permissions.IsStaffOrStudent, + ) + class SolutionsViewSet(viewsets.ModelViewSet): serializer_class = serializers.SolutionSerializer_Student diff --git a/src/stats/serializers.py b/src/stats/serializers.py index c8ba37d0c87a0f38c76f6df6ce28b4457ea312cf..975a7d9af573980c82fa3f9aebd7aaa864968baa 100644 --- a/src/stats/serializers.py +++ b/src/stats/serializers.py @@ -22,7 +22,8 @@ class StaffEventSerializer(serializers.ModelSerializer): if 'absent' in data and 'visitors' in 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.') + raise serializers.ValidationError( + 'You cant add a student to absent and visitor in the same time.') return data @@ -39,9 +40,11 @@ class NoteSerializer(serializers.ModelSerializer): def to_representation(self, instance): data = super().to_representation(instance) - if not data['event']: data['event']= "" - if not data['profile']: data['profile']= "" - + if not data['event']: + data['event'] = "" + if not data['profile']: + data['profile'] = "" + return data class Meta: @@ -54,5 +57,6 @@ class NoteSerializer(serializers.ModelSerializer): def validate(self, data): if data['profile'] is None and data['event'] is None: - raise serializers.ValidationError('You have to add profile or event') + raise serializers.ValidationError( + 'You have to add profile or event') return data