1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

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

This commit is contained in:
Jeremy Stretch
2016-05-12 14:45:32 -04:00
parent 21b3fbd50f
commit 39be01051d
5 changed files with 8 additions and 13 deletions

View File

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

View File

@ -175,13 +175,13 @@ def rack_site_choices():
def rack_group_choices(): def rack_group_choices():
group_choices = RackGroup.objects.select_related('site').annotate(rack_count=Count('racks')) 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): class RackFilterForm(forms.Form, BootstrapMixin):
site = forms.MultipleChoiceField(required=False, choices=rack_site_choices, site = forms.MultipleChoiceField(required=False, choices=rack_site_choices,
widget=forms.SelectMultiple(attrs={'size': 8})) 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})) widget=forms.SelectMultiple(attrs={'size': 8}))

View File

@ -143,7 +143,7 @@ class RackGroup(models.Model):
return '{} - {}'.format(self.site.name, self.name) return '{} - {}'.format(self.site.name, self.name)
def get_absolute_url(self): 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): class Rack(models.Model):

View File

@ -51,11 +51,12 @@ class SiteTable(tables.Table):
class RackGroupTable(tables.Table): class RackGroupTable(tables.Table):
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') 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') slug = tables.Column(verbose_name='Slug')
class Meta: class Meta:
model = RackGroup model = RackGroup
fields = ('name', 'site', 'slug') fields = ('name', 'site', 'rack_count', 'slug')
empty_text = "No rack groups were found." empty_text = "No rack groups were found."
attrs = { attrs = {
'class': 'table table-hover', 'class': 'table table-hover',
@ -68,7 +69,7 @@ class RackGroupBulkEditTable(RackGroupTable):
class Meta(RackGroupTable.Meta): class Meta(RackGroupTable.Meta):
model = None # django_tables2 bugfix 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): class DeviceRoleTable(tables.Table):
name = tables.LinkColumn(verbose_name='Name') 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') slug = tables.Column(verbose_name='Slug')
color = tables.Column(verbose_name='Color') color = tables.Column(verbose_name='Color')

View File

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