mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-06 00:32:08 +02:00
Yet more cleanup
This commit is contained in:
@@ -13,13 +13,9 @@ class CircuitCircuitTerminationPanel(panels.ObjectPanel):
|
||||
template_name = 'circuits/panels/circuit_circuit_termination.html'
|
||||
title = _('Termination')
|
||||
|
||||
def __init__(self, accessor=None, side=None, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
if accessor is not None:
|
||||
self.accessor = accessor
|
||||
if side is not None:
|
||||
self.side = side
|
||||
def __init__(self, side, accessor=None, **kwargs):
|
||||
super().__init__(accessor=accessor, **kwargs)
|
||||
self.side = side
|
||||
|
||||
def get_context(self, context):
|
||||
return {
|
||||
|
||||
@@ -118,19 +118,31 @@ class AddObject(LinkAction):
|
||||
url_params (dict): A dictionary of arbitrary URL parameters to append to the resolved URL
|
||||
"""
|
||||
def __init__(self, model, url_params=None, **kwargs):
|
||||
# Resolve the model class from its app.name label
|
||||
try:
|
||||
app_label, model_name = model.split('.')
|
||||
model = apps.get_model(app_label, model_name)
|
||||
except (ValueError, LookupError):
|
||||
# Validate the model label format
|
||||
if '.' not in model:
|
||||
raise ValueError(f"Invalid model label: {model}")
|
||||
view_name = get_viewname(model, 'add')
|
||||
self.model_label = model
|
||||
|
||||
kwargs.setdefault('label', _('Add'))
|
||||
kwargs.setdefault('button_icon', 'plus-thick')
|
||||
kwargs.setdefault('permissions', [get_permission_for_model(model, 'add')])
|
||||
|
||||
super().__init__(view_name=view_name, url_params=url_params, **kwargs)
|
||||
# Defer model resolution; view_name and permissions are resolved at render time
|
||||
super().__init__(view_name=None, url_params=url_params, **kwargs)
|
||||
|
||||
@property
|
||||
def model(self):
|
||||
try:
|
||||
return apps.get_model(self.model_label)
|
||||
except LookupError:
|
||||
raise ValueError(f"Invalid model label: {self.model_label}")
|
||||
|
||||
def get_url(self, context):
|
||||
self.view_name = get_viewname(self.model, 'add')
|
||||
return super().get_url(context)
|
||||
|
||||
def render(self, context):
|
||||
self.permissions = [get_permission_for_model(self.model, 'add')]
|
||||
return super().render(context)
|
||||
|
||||
|
||||
class CopyContent(PanelAction):
|
||||
|
||||
@@ -78,7 +78,7 @@ class Panel:
|
||||
Determines whether the panel should render on the page. (Default: True)
|
||||
|
||||
Parameters:
|
||||
context (dict): The template context
|
||||
context (dict): The panel's prepared context (the return value of get_context())
|
||||
"""
|
||||
return True
|
||||
|
||||
@@ -245,7 +245,7 @@ class CommentsPanel(ObjectPanel):
|
||||
ctx = super().get_context(context)
|
||||
return {
|
||||
**ctx,
|
||||
'comments': getattr(ctx['object'], self.field_name),
|
||||
'comments': getattr(ctx['object'], self.field_name, None),
|
||||
}
|
||||
|
||||
|
||||
@@ -270,7 +270,7 @@ class JSONPanel(ObjectPanel):
|
||||
ctx = super().get_context(context)
|
||||
return {
|
||||
**ctx,
|
||||
'data': getattr(ctx['object'], self.field_name),
|
||||
'data': getattr(ctx['object'], self.field_name, None),
|
||||
'field_name': self.field_name,
|
||||
}
|
||||
|
||||
@@ -372,10 +372,11 @@ class TextCodePanel(ObjectPanel):
|
||||
self.show_sync_warning = show_sync_warning
|
||||
|
||||
def get_context(self, context):
|
||||
ctx = super().get_context(context)
|
||||
return {
|
||||
**super().get_context(context),
|
||||
**ctx,
|
||||
'show_sync_warning': self.show_sync_warning,
|
||||
'value': getattr(context.get('object'), self.field_name, None),
|
||||
'value': getattr(ctx['object'], self.field_name, None),
|
||||
}
|
||||
|
||||
|
||||
@@ -391,6 +392,8 @@ class PluginContentPanel(Panel):
|
||||
self.method = method
|
||||
|
||||
def render(self, context):
|
||||
if not self.should_render(context):
|
||||
return ''
|
||||
obj = context.get('object')
|
||||
return _get_registered_content(obj, self.method, context)
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@ class WirelessLinkInterfacePanel(panels.ObjectPanel):
|
||||
self.title = title
|
||||
|
||||
def get_context(self, context):
|
||||
obj = context['object']
|
||||
ctx = super().get_context(context)
|
||||
return {
|
||||
**super().get_context(context),
|
||||
'interface': getattr(obj, self.interface_attr),
|
||||
**ctx,
|
||||
'interface': getattr(ctx['object'], self.interface_attr),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user