Skip to content
Snippets Groups Projects
serializers.py 2.03 KiB
Newer Older
from rest_framework import serializers
Bodor Máté's avatar
Bodor Máté committed
from account import models
from common.middleware import CurrentUserMiddleware
Bodor Máté's avatar
Bodor Máté committed
class ChoiceSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.GroupChoice
        fields = ('choice', 'profile')
class ProfileSerializer(serializers.ModelSerializer):
    groups = serializers.SlugRelatedField(many=True, slug_field='choice', queryset=models.GroupChoice.objects.all())
    updated_at = serializers.DateTimeField(read_only=True)
    signed = serializers.BooleanField()
    full_name = serializers.SerializerMethodField()
Bodor Máté's avatar
Bodor Máté committed
        model = models.Profile
        fields = (
            'id',
            'join_date',
            'updated_at',
            'nick',
            'signed',
            'groups',
            'motivation_about',
            'motivation_profession',
            'motivation_exercise',
Bodor Máté's avatar
Bodor Máté committed
            'full_name',
            'role',
    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")
        return value

    def validate_role(self, value):
        modifier_role = CurrentUserMiddleware.get_current_user_profile().role
        if value != modifier_role and modifier_role != "Staff":
            raise serializers.ValidationError("You don't have permission change role")
        return value

    def validate_signed(self, value):
Bodor Máté's avatar
Bodor Máté committed
        modifier = CurrentUserMiddleware.get_current_user_profile()
        if value is False and modifier.role != "Staff":
            raise serializers.ValidationError("You cannot join without signed")
        return value

    def validate_id(self, value):
        modifier= CurrentUserMiddleware.get_current_user_profile()
        if value != modifier.id and modifier.role != "Staff":
            raise serializers.ValidationError("You don't have permission")
        return value

    def get_full_name(self, obj):
        return obj.full_name