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()]