diff --git a/peeringdb_api/views.py b/peeringdb_api/views.py index 8134edf..cc3e5e8 100644 --- a/peeringdb_api/views.py +++ b/peeringdb_api/views.py @@ -1,8 +1,9 @@ from django.db.models import IntegerField, QuerySet from django.http import JsonResponse +from django.views.generic.detail import BaseDetailView from django.views.generic.list import BaseListView -from peeringdb_api.serializer import serialize_many +from peeringdb_api.serializer import serialize, serialize_many def format_for_field(field, value): @@ -30,3 +31,9 @@ class PeeringDBListView(BaseListView): queryset = queryset.filter(**{k: value}) return JsonResponse({'data': serialize_many(queryset)}) + + +class PeeringDBDetailView(BaseDetailView): + def get(self, request, *args, **kwargs): + obj = self.get_object() + return JsonResponse({'data': [serialize(obj)]}) diff --git a/peeringdb_mirror/urls.py b/peeringdb_mirror/urls.py index 0e871ac..f3f48d5 100644 --- a/peeringdb_mirror/urls.py +++ b/peeringdb_mirror/urls.py @@ -1,7 +1,7 @@ from django.urls import path from django_peeringdb import models -from peeringdb_api.views import PeeringDBListView +from peeringdb_api.views import PeeringDBDetailView, PeeringDBListView urlpatterns = [ path('api/org', PeeringDBListView.as_view(model=models.Organization)), @@ -17,4 +17,18 @@ urlpatterns = [ path('api/netfac', PeeringDBListView.as_view(model=models.NetworkFacility)), path('api/netixlan', PeeringDBListView.as_view(model=models.NetworkIXLan)), path('api/poc', PeeringDBListView.as_view(model=models.NetworkContact)), + + path('api/org/', PeeringDBDetailView.as_view(model=models.Organization)), + path('api/fac/', PeeringDBDetailView.as_view(model=models.Facility)), + path('api/net/', PeeringDBDetailView.as_view(model=models.Network)), + path('api/ix/', PeeringDBDetailView.as_view(model=models.InternetExchange)), + path('api/campus/', PeeringDBDetailView.as_view(model=models.Campus)), + path('api/carrier/', PeeringDBDetailView.as_view(model=models.Carrier)), + path('api/carrierfac/', PeeringDBDetailView.as_view(model=models.CarrierFacility)), + path('api/ixfac/', PeeringDBDetailView.as_view(model=models.InternetExchangeFacility)), + path('api/ixlan/', PeeringDBDetailView.as_view(model=models.IXLan)), + path('api/ixpfx/', PeeringDBDetailView.as_view(model=models.IXLanPrefix)), + path('api/netfac/', PeeringDBDetailView.as_view(model=models.NetworkFacility)), + path('api/netixlan/', PeeringDBDetailView.as_view(model=models.NetworkIXLan)), + path('api/poc/', PeeringDBDetailView.as_view(model=models.NetworkContact)), ]