Newer
Older
from rest_framework import serializers
from common import email
class ChoiceSerializer(serializers.ModelSerializer):
class Meta:
model = models.GroupChoice
fields = ('choice', 'profile')
class ProfileSerializer_User(serializers.ModelSerializer):
groups = serializers.SlugRelatedField(
many=True,
slug_field='choice',
queryset=models.GroupChoice.objects.all())
updated_at = serializers.DateTimeField(read_only=True)
Chif Gergo
committed
class Meta:
read_only_fields = ('id', 'join_date', 'updated_at', 'full_name', )
fields = (
'id',
'join_date',
'updated_at',
'nick',
'signed',
'groups',
'motivation_about',
'motivation_profession',
'motivation_exercise',
raise serializers.ValidationError(
"You cannot join after the deadline")
return value
def validate_role(self, value):
modifier_role = self.context['request'].user.profile.role
"You don't have permission to change role")
return value
def validate_signed(self, value):
raise serializers.ValidationError("You cannot join without signed")
return value
def update(self, instance, validated_data):
new_role = validated_data.get('role', instance.role)
if instance.role != new_role:
if new_role == 'Student':
if new_role == 'Denied':
return super().update(instance, validated_data)
def get_full_name(self, obj):
return obj.full_name
if obj.homework_bits is None:
return obj.events_visited
class ProfileSerializer_Staff(serializers.ModelSerializer):
groups = serializers.SlugRelatedField(
many=True,
slug_field='choice',
queryset=models.GroupChoice.objects.all())
updated_at = serializers.DateTimeField(read_only=True)
full_name = serializers.SerializerMethodField()
class Meta:
model = models.Profile
read_only_fields = ('id', 'join_date', 'updated_at', 'full_name', )
fields = (
'id',
'join_date',
'updated_at',
'nick',
'signed',
'groups',
'motivation_about',
'motivation_profession',
'motivation_exercise',
'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):
return value
def validate_signed(self, value):
return value
def update(self, instance, validated_data):
new_role = validated_data.get('role', instance.role)
if instance.role != new_role:
if new_role == 'Student':
email.admitted(instance.user)
if new_role == 'Denied':
email.denied(instance.user)
return super().update(instance, validated_data)
def get_full_name(self, obj):
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
class MonitoringSerializer(serializers.ModelSerializer):
full_name = serializers.SerializerMethodField()
email = serializers.SerializerMethodField()
class Meta:
model = models.Profile
read_only_fields = (
'full_name',
'email',
'events_visited',
'homework_bits',
)
fields = (
'full_name',
'email',
'events_visited',
'homework_bits',
)
def get_full_name(self, obj):
return obj.full_name
def get_email(self, obj):
return obj.user.email