This commit is contained in:
Zanthras 2016-07-16 02:48:29 +00:00 committed by GitHub
commit 1d2004bcc2
4 changed files with 19 additions and 1 deletions

View File

@ -61,7 +61,8 @@ urlpatterns = [
url(r'^interfaces/(?P<pk>\d+)/$', InterfaceDetailView.as_view(), name='interface_detail'),
url(r'^interfaces/(?P<pk>\d+)/graphs/$', GraphListView.as_view(), {'type': GRAPH_TYPE_INTERFACE},
name='interface_graphs'),
url(r'^interface-connections/(?P<pk>\d+)/$', InterfaceConnectionView.as_view(), name='interfaceconnection'),
url(r'^interface-connections/$', InterfaceConnectionListView.as_view(), name='interfaceconnection_list'),
url(r'^interface-connections/(?P<pk>\d+)/$', InterfaceConnectionView.as_view(), name='interfaceconnection_detail'),
# Miscellaneous
url(r'^related-connections/$', RelatedConnectionsView.as_view(), name='related_connections'),

View File

@ -326,6 +326,14 @@ class InterfaceConnectionView(generics.RetrieveUpdateDestroyAPIView):
queryset = InterfaceConnection.objects.all()
class InterfaceConnectionListView(generics.ListAPIView):
"""
Retrieve a list of all interface connections
"""
serializer_class = serializers.InterfaceConnectionSerializer
queryset = InterfaceConnection.objects.all()
#
# Device bays
#

View File

@ -66,6 +66,7 @@ class SiteListView(ObjectListView):
queryset = Site.objects.all()
filter = filters.SiteFilter
table = tables.SiteTable
sorting_attribute = 'name'
template_name = 'dcim/site_list.html'

View File

@ -1,3 +1,6 @@
from natsort import natsorted
from operator import attrgetter
from django_tables2 import RequestConfig
from django.contrib import messages
@ -25,6 +28,7 @@ class ObjectListView(View):
filter = None
filter_form = None
table = None
sorting_attribute = None
edit_permissions = []
template_name = None
redirect_on_single_result = True
@ -68,6 +72,10 @@ class ObjectListView(View):
# Provide a hook to tweak the queryset based on the request immediately prior to rendering the object list
self.queryset = self.alter_queryset(request)
# If the sorting attribute is set, sort the final result based on the provided attribute key
if self.sorting_attribute:
self.queryset = natsorted(self.queryset, key=attrgetter(self.sorting_attribute))
# Construct the table based on the user's permissions
table = self.table(self.queryset)
table.model = model