Exemplo n.º 1
0
class InviteSerializer(DispatchModelSerializer):
    """Serializes the Invite model."""

    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())])

    person = ForeignKeyField(
        model=Person,
        serializer=PersonSerializer(),
        validators=[UniqueValidator(queryset=User.objects.all())])

    permissions = serializers.CharField(required=False, allow_blank=True)

    expiration_date = serializers.DateTimeField(read_only=True)

    class Meta:
        model = Invite
        fields = ('id', 'email', 'person', 'permissions', 'expiration_date')

    def create(self, validated_data):
        instance = Invite()
        return self.update(instance, validated_data)

    def update(self, instance, validated_data):
        send_invitation(validated_data['email'], instance.id)
        return super(InviteSerializer, self).update(instance, validated_data)
Exemplo n.º 2
0
class UserSerializer(DispatchModelSerializer):
    """Serializes the User model."""

    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())]
    )
    person = ForeignKeyField(
        model=Person,
        serializer=PersonSerializer(),
        validators=[UniqueValidator(queryset=User.objects.all())]
    )
    password_a = serializers.CharField(
        required=False,
        allow_blank=True,
        write_only=True,
        validators=[PasswordValidator(confirm_field='password_b')]
    )
    password_b = serializers.CharField(required=False, allow_blank=True, write_only=True)

    permissions = serializers.CharField(source='get_permissions', read_only=True)

    permission_level = serializers.CharField(required=False, allow_null=True, write_only=True)

    user_id = serializers.IntegerField(source='get_user_id', read_only=True)

    class Meta:
        model = User
        fields = (
            'id',
            'email',
            'person',
            'password_a',
            'password_b',
            'permissions',
            'permission_level',
            'user_id'
        )

    def create(self, validated_data):
        instance = User.objects.create_user(validated_data['email'], validated_data['password_a'], validated_data['permission_level'])
        return self.update(instance, validated_data)

    def update(self, instance, validated_data):
        instance.email = validated_data.get('email', instance.email)
        instance.person = validated_data.get('person', instance.person)

        if validated_data.get('password_a'):
            instance.set_password(validated_data['password_a'])

        instance.save()

        permissions = validated_data.get('permission_level')
        instance.modify_permissions(permissions)

        return instance