from rest_framework import viewsets from .models import Contact, Relation, NetworkMap, NetworkMapMembership from .serializers import ( ContactSerializer, RelationSerializer, NetworkMapSerializer, NetworkMapMembershipSerializer, ) class ContactViewSet(viewsets.ModelViewSet): queryset = Contact.objects.all() serializer_class = ContactSerializer def get_queryset(self): qs = super().get_queryset() q = self.request.query_params.get('search', '') if q: qs = qs.filter(name__icontains=q) return qs class RelationViewSet(viewsets.ModelViewSet): queryset = Relation.objects.select_related('source', 'target').all() serializer_class = RelationSerializer class NetworkMapViewSet(viewsets.ModelViewSet): queryset = NetworkMap.objects.all() serializer_class = NetworkMapSerializer class NetworkMapMembershipViewSet(viewsets.ModelViewSet): serializer_class = NetworkMapMembershipSerializer def get_queryset(self): map_id = self.kwargs.get('map_pk') return NetworkMapMembership.objects.filter( map_id=map_id ).select_related('contact', 'map') def perform_create(self, serializer): map_id = self.kwargs.get('map_pk') serializer.save(map_id=map_id)