37 lines
960 B
Python
37 lines
960 B
Python
"""passbook admin gorup API"""
|
|
from rest_framework.permissions import IsAdminUser
|
|
from rest_framework.serializers import ModelSerializer, Serializer
|
|
from rest_framework.viewsets import ModelViewSet
|
|
|
|
from passbook.core.models import Group
|
|
|
|
|
|
class RecursiveField(Serializer):
|
|
"""Recursive field for manytomanyfield"""
|
|
|
|
def to_representation(self, value):
|
|
serializer = self.parent.parent.__class__(value, context=self.context)
|
|
return serializer.data
|
|
|
|
def create(self):
|
|
raise NotImplementedError()
|
|
|
|
def update(self):
|
|
raise NotImplementedError()
|
|
|
|
class GroupSerializer(ModelSerializer):
|
|
"""Group Serializer"""
|
|
|
|
children = RecursiveField(many=True)
|
|
|
|
class Meta:
|
|
model = Group
|
|
fields = '__all__'
|
|
|
|
class GroupViewSet(ModelViewSet):
|
|
"""Group Viewset"""
|
|
|
|
permission_classes = [IsAdminUser]
|
|
serializer_class = GroupSerializer
|
|
queryset = Group.objects.filter(parent__isnull=True)
|