mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-04 16:37:15 +02:00
Misc cleanup for layouts
This commit is contained in:
@@ -192,8 +192,14 @@ class DataFileView(generic.ObjectView):
|
||||
layout.Column(
|
||||
panels.DataFilePanel(),
|
||||
panels.DataFileContentPanel(),
|
||||
PluginContentPanel('left_page'),
|
||||
),
|
||||
),
|
||||
layout.Row(
|
||||
layout.Column(
|
||||
PluginContentPanel('full_width_page'),
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ from netbox.ui.panels import (
|
||||
CommentsPanel,
|
||||
ContextTablePanel,
|
||||
ObjectsTablePanel,
|
||||
PluginContentPanel,
|
||||
RelatedObjectsPanel,
|
||||
TemplatePanel,
|
||||
)
|
||||
@@ -55,11 +56,13 @@ class VRFView(GetRelatedModelsMixin, generic.ObjectView):
|
||||
layout.Column(
|
||||
panels.VRFPanel(),
|
||||
TagsPanel(),
|
||||
PluginContentPanel('left_page'),
|
||||
),
|
||||
layout.Column(
|
||||
RelatedObjectsPanel(),
|
||||
CustomFieldsPanel(),
|
||||
CommentsPanel(),
|
||||
PluginContentPanel('right_page'),
|
||||
),
|
||||
),
|
||||
layout.Row(
|
||||
@@ -70,6 +73,11 @@ class VRFView(GetRelatedModelsMixin, generic.ObjectView):
|
||||
ContextTablePanel('export_targets_table', title=_('Export route targets')),
|
||||
),
|
||||
),
|
||||
layout.Row(
|
||||
layout.Column(
|
||||
PluginContentPanel('full_width_page'),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
def get_extra_context(self, request, instance):
|
||||
@@ -169,10 +177,12 @@ class RouteTargetView(generic.ObjectView):
|
||||
layout.Column(
|
||||
panels.RouteTargetPanel(),
|
||||
TagsPanel(),
|
||||
PluginContentPanel('left_page'),
|
||||
),
|
||||
layout.Column(
|
||||
CustomFieldsPanel(),
|
||||
CommentsPanel(),
|
||||
PluginContentPanel('right_page'),
|
||||
),
|
||||
),
|
||||
layout.Row(
|
||||
@@ -207,6 +217,11 @@ class RouteTargetView(generic.ObjectView):
|
||||
),
|
||||
),
|
||||
),
|
||||
layout.Row(
|
||||
layout.Column(
|
||||
PluginContentPanel('full_width_page'),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -21,10 +21,16 @@ class Layout:
|
||||
"""
|
||||
def __init__(self, *rows):
|
||||
for i, row in enumerate(rows):
|
||||
if type(row) is not Row:
|
||||
if not isinstance(row, Row):
|
||||
raise TypeError(f"Row {i} must be a Row instance, not {type(row)}.")
|
||||
self.rows = rows
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.rows)
|
||||
|
||||
def __repr__(self):
|
||||
return f"Layout({len(self.rows)} rows)"
|
||||
|
||||
|
||||
class Row:
|
||||
"""
|
||||
@@ -35,10 +41,16 @@ class Row:
|
||||
"""
|
||||
def __init__(self, *columns):
|
||||
for i, column in enumerate(columns):
|
||||
if type(column) is not Column:
|
||||
if not isinstance(column, Column):
|
||||
raise TypeError(f"Column {i} must be a Column instance, not {type(column)}.")
|
||||
self.columns = columns
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.columns)
|
||||
|
||||
def __repr__(self):
|
||||
return f"Row({len(self.columns)} columns)"
|
||||
|
||||
|
||||
class Column:
|
||||
"""
|
||||
@@ -53,6 +65,12 @@ class Column:
|
||||
raise TypeError(f"Panel {i} must be an instance of a Panel, not {type(panel)}.")
|
||||
self.panels = panels
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.panels)
|
||||
|
||||
def __repr__(self):
|
||||
return f"Column({len(self.panels)} panels)"
|
||||
|
||||
|
||||
#
|
||||
# Common layouts
|
||||
|
||||
@@ -124,11 +124,11 @@ Context:
|
||||
|
||||
{% block content %}
|
||||
{# Render panel layout declared on view class #}
|
||||
{% for row in layout.rows %}
|
||||
{% for row in layout %}
|
||||
<div class="row">
|
||||
{% for column in row.columns %}
|
||||
{% for column in row %}
|
||||
<div class="col">
|
||||
{% for panel in column.panels %}
|
||||
{% for panel in column %}
|
||||
{% render panel %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user