taiga-back/greenmine/base/users/serializers.py

40 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
from rest_framework import serializers
from .models import User, Role
class UserSerializer(serializers.ModelSerializer):
projects = serializers.SerializerMethodField('get_projects')
full_name = serializers.CharField(source='get_full_name', required=False)
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name', 'full_name', 'email',
'color', 'description', 'default_language', 'default_timezone',
'is_active', 'photo', 'projects', 'notify_level',
'notify_changes_by_me')
def get_projects(self, obj):
return [{"id": x.id, "name": x.name} for x in obj.projects.all()]
class RecoverySerializer(serializers.Serializer):
token = serializers.CharField(max_length=200)
password = serializers.CharField(min_length=6)
def validate_token(self, attrs, source):
token = attrs[source]
try:
user = User.objects.get(token=token)
except User.DoesNotExist:
raise serializers.ValidationError("invalid token")
return attrs
class RoleSerializer(serializers.ModelSerializer):
class Meta:
model = Role
fields = ('id', 'name', 'slug', 'permissions', 'computable')