Arthur 3 سال پیش
والد
کامیت
43b3ce9ed1
2فایلهای تغییر یافته به همراه14 افزوده شده و 14 حذف شده
  1. 11 10
      netbox/dcim/views.py
  2. 3 4
      netbox/templates/dcim/rack_elevation_list.html

+ 11 - 10
netbox/dcim/views.py

@@ -589,17 +589,17 @@ class RackElevationListView(generic.ObjectListView):
         racks = filtersets.RackFilterSet(request.GET, self.queryset).qs
         racks = filtersets.RackFilterSet(request.GET, self.queryset).qs
         total_count = racks.count()
         total_count = racks.count()
 
 
-        # Determine ordering
+        ORDERING_CHOICES = {
+            'name': 'Name (A-Z)',
+            '-name': 'Name (Z-A)',
+            'facility_id': 'Facility ID (A-Z)',
+            '-facility_id': 'Facility ID (Z-A)',
+        }
         sort = request.GET.get('sort', "name")
         sort = request.GET.get('sort', "name")
-        if sort:
-            if sort == 'name':
-                racks = racks.order_by('name')
-            elif sort == '-name':
-                racks = racks.order_by('-name')
-            elif sort == 'facility':
-                racks = racks.order_by('facility_id')
-            elif sort == '-facility':
-                racks = racks.order_by('-facility_id')
+        if sort not in ORDERING_CHOICES:
+            sort = 'name'
+
+        racks = racks.order_by(sort)
 
 
         # Pagination
         # Pagination
         per_page = get_paginate_count(request)
         per_page = get_paginate_count(request)
@@ -622,6 +622,7 @@ class RackElevationListView(generic.ObjectListView):
             'page': page,
             'page': page,
             'total_count': total_count,
             'total_count': total_count,
             'sort': sort,
             'sort': sort,
+            'sort_choices': ORDERING_CHOICES,
             'rack_face': rack_face,
             'rack_face': rack_face,
             'filter_form': forms.RackElevationFilterForm(request.GET),
             'filter_form': forms.RackElevationFilterForm(request.GET),
         })
         })

+ 3 - 4
netbox/templates/dcim/rack_elevation_list.html

@@ -23,10 +23,9 @@
                 <i class="mdi mdi-sort"></i>&nbsp;Sort By ({{ sort }})
                 <i class="mdi mdi-sort"></i>&nbsp;Sort By ({{ sort }})
               </button>
               </button>
               <ul class="dropdown-menu dropdown-menu-end">
               <ul class="dropdown-menu dropdown-menu-end">
-                <li><a class="dropdown-item{% if sort == 'name' %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request sort='name' %}">Name (A-Z)</a></li>
-                <li><a class="dropdown-item{% if sort == '-name' %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request  sort='-name' %}">Name (Z-A)</a></li>
-                <li><a class="dropdown-item{% if sort == 'facility' %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request sort='facility' %}">Facility ID (A-Z)</a></li>
-                <li><a class="dropdown-item{% if sort == '-facility' %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request sort='-facility' %}">Facility ID (Z-A)</a></li>
+                {% for sort_key, sort_display_name in sort_choices.items %}
+                  <li><a class="dropdown-item{% if sort == sort_key %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request sort=sort_key %}">{{ sort_display_name }}</a></li>
+                {% endfor %}
               </ul>
               </ul>
             </div>
             </div>
         </div>
         </div>