33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
|
from rest_framework import serializers
|
||
|
from django.contrib.auth.models import Group
|
||
|
|
||
|
from authentication.models import ExtendedUser
|
||
|
|
||
|
|
||
|
class UserSerializer(serializers.ModelSerializer):
|
||
|
permissions = serializers.SerializerMethodField()
|
||
|
groups = serializers.SlugRelatedField(many=True, read_only=True, slug_field='name')
|
||
|
|
||
|
class Meta:
|
||
|
model = ExtendedUser
|
||
|
fields = ('id', 'username', 'email', 'first_name', 'last_name', 'permissions', 'groups')
|
||
|
read_only_fields = ('id', 'username', 'email', 'first_name', 'last_name', 'permissions', 'groups')
|
||
|
|
||
|
def get_permissions(self, obj):
|
||
|
return list(set(obj.get_permissions()))
|
||
|
|
||
|
|
||
|
class GroupSerializer(serializers.ModelSerializer):
|
||
|
permissions = serializers.SerializerMethodField()
|
||
|
members = serializers.SerializerMethodField()
|
||
|
|
||
|
class Meta:
|
||
|
model = Group
|
||
|
fields = ('id', 'name', 'permissions', 'members')
|
||
|
|
||
|
def get_permissions(self, obj):
|
||
|
return ["*:" + p.codename for p in obj.permissions.all()]
|
||
|
|
||
|
def get_members(self, obj):
|
||
|
return [u.username for u in obj.user_set.all()]
|