Parcourir la source

Changed RackGroup URL/filter from slug to PK (slugs are not unique across sites)

Jeremy Stretch il y a 9 ans
Parent
commit
39be01051d
5 fichiers modifiés avec 8 ajouts et 13 suppressions
  1. 0 6
      netbox/dcim/filters.py
  2. 2 2
      netbox/dcim/forms.py
  3. 1 1
      netbox/dcim/models.py
  4. 4 3
      netbox/dcim/tables.py
  5. 1 1
      netbox/dcim/views.py

+ 0 - 6
netbox/dcim/filters.py

@@ -45,12 +45,6 @@ class RackFilter(django_filters.FilterSet):
         queryset=RackGroup.objects.all(),
         label='Group (ID)',
     )
-    group = django_filters.ModelMultipleChoiceFilter(
-        name='group',
-        queryset=RackGroup.objects.all(),
-        to_field_name='slug',
-        label='Group (slug)',
-    )
 
     class Meta:
         model = Rack

+ 2 - 2
netbox/dcim/forms.py

@@ -175,13 +175,13 @@ def rack_site_choices():
 
 def rack_group_choices():
     group_choices = RackGroup.objects.select_related('site').annotate(rack_count=Count('racks'))
-    return [(g.slug, '{} ({})'.format(g, g.rack_count)) for g in group_choices]
+    return [(g.pk, '{} ({})'.format(g, g.rack_count)) for g in group_choices]
 
 
 class RackFilterForm(forms.Form, BootstrapMixin):
     site = forms.MultipleChoiceField(required=False, choices=rack_site_choices,
                                      widget=forms.SelectMultiple(attrs={'size': 8}))
-    group = forms.MultipleChoiceField(required=False, choices=rack_group_choices,
+    group_id = forms.MultipleChoiceField(required=False, choices=rack_group_choices,
                                       widget=forms.SelectMultiple(attrs={'size': 8}))
 
 

+ 1 - 1
netbox/dcim/models.py

@@ -143,7 +143,7 @@ class RackGroup(models.Model):
         return '{} - {}'.format(self.site.name, self.name)
 
     def get_absolute_url(self):
-        return "{}?group={}".format(reverse('dcim:rack_list'), self.slug)
+        return "{}?group_id={}".format(reverse('dcim:rack_list'), self.pk)
 
 
 class Rack(models.Model):

+ 4 - 3
netbox/dcim/tables.py

@@ -51,11 +51,12 @@ class SiteTable(tables.Table):
 class RackGroupTable(tables.Table):
     name = tables.LinkColumn(verbose_name='Name')
     site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
+    rack_count = tables.Column(verbose_name='Racks')
     slug = tables.Column(verbose_name='Slug')
 
     class Meta:
         model = RackGroup
-        fields = ('name', 'site', 'slug')
+        fields = ('name', 'site', 'rack_count', 'slug')
         empty_text = "No rack groups were found."
         attrs = {
             'class': 'table table-hover',
@@ -68,7 +69,7 @@ class RackGroupBulkEditTable(RackGroupTable):
 
     class Meta(RackGroupTable.Meta):
         model = None  # django_tables2 bugfix
-        fields = ('pk', 'name', 'site', 'slug', 'edit')
+        fields = ('pk', 'name', 'site', 'rack_count', 'slug', 'edit')
 
 
 #
@@ -234,7 +235,7 @@ class InterfaceTemplateBulkDeleteTable(InterfaceTemplateTable):
 
 class DeviceRoleTable(tables.Table):
     name = tables.LinkColumn(verbose_name='Name')
-    device_count = tables.Column(accessor=Accessor('device_count'), verbose_name='Devices')
+    device_count = tables.Column(verbose_name='Devices')
     slug = tables.Column(verbose_name='Slug')
     color = tables.Column(verbose_name='Color')
 

+ 1 - 1
netbox/dcim/views.py

@@ -134,7 +134,7 @@ class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):
 #
 
 class RackGroupListView(ObjectListView):
-    queryset = RackGroup.objects.all()
+    queryset = RackGroup.objects.annotate(rack_count=Count('racks'))
     filter = RackGroupFilter
     filter_form = RackGroupFilterForm
     table = RackGroupTable