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