Merge pull request #22037 from netbox-community/22031-add-prefix-to-vlan-field-id-expected-a-number-but-got-none

Fixes #22031: Fix error when adding a Prefix from a VLAN with no Tenant or Site
This commit is contained in:
bctiemann 2026-04-29 13:42:57 -04:00 committed by GitHub
commit 166b5f9c0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 7 deletions

View File

@ -1636,8 +1636,11 @@ class VLANView(generic.ObjectView):
actions.AddObject(
'ipam.prefix',
url_params={
'tenant': lambda ctx: ctx['object'].tenant.pk if ctx['object'].tenant else None,
'site': lambda ctx: ctx['object'].site.pk if ctx['object'].site else None,
'tenant': lambda ctx: ctx['object'].tenant_id,
'scope_type': lambda ctx: (
ContentType.objects.get_for_model(Site).pk if ctx['object'].site_id else None
),
'scope': lambda ctx: ctx['object'].site_id,
'vlan': lambda ctx: ctx['object'].pk,
},
label=_('Add a Prefix'),

View File

@ -92,14 +92,18 @@ class LinkAction(PanelAction):
"""
url = reverse(self.view_name, kwargs=self.view_kwargs)
if self.url_params:
# If the param value is callable, call it with the context and save the result.
url_params = {
k: v(context) if callable(v) else v for k, v in self.url_params.items()
}
url_params = {}
for key, value in self.url_params.items():
# If the param value is callable, call it with the context and save the result.
value = value(context) if callable(value) else value
# Omit parameters whose value resolved to None
if value is not None:
url_params[key] = value
# Set the return URL if not already set and an object is available.
if 'return_url' not in url_params and 'object' in context:
url_params['return_url'] = context['object'].get_absolute_url()
url = f'{url}?{urlencode(url_params)}'
if url_params:
url = f'{url}?{urlencode(url_params)}'
return url
def get_context(self, context):