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:
commit
166b5f9c0c
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue