views.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from rest_framework import generics
  2. from django.http import Http404
  3. from django.shortcuts import get_object_or_404
  4. from circuits.models import Provider
  5. from dcim.models import Site, Interface
  6. from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_PROVIDER, GRAPH_TYPE_SITE
  7. from .serializers import GraphSerializer
  8. class GraphListView(generics.ListAPIView):
  9. """
  10. Returns a list of relevant graphs
  11. """
  12. serializer_class = GraphSerializer
  13. def get_serializer_context(self):
  14. cls = {
  15. GRAPH_TYPE_INTERFACE: Interface,
  16. GRAPH_TYPE_PROVIDER: Provider,
  17. GRAPH_TYPE_SITE: Site,
  18. }
  19. context = super(GraphListView, self).get_serializer_context()
  20. context.update({'graphed_object': get_object_or_404(cls[self.kwargs.get('type')], pk=self.kwargs['pk'])})
  21. return context
  22. def get_queryset(self):
  23. graph_type = self.kwargs.get('type', None)
  24. if not graph_type:
  25. raise Http404()
  26. queryset = Graph.objects.filter(type=graph_type)
  27. return queryset