Просмотр исходного кода

17460 make ModuleType / DeviceType bulk buttons consistent (#17463)

* 17460 make ModuleType / DeviceType bulk buttons consistent

* 17460 refactor moduletype/devicetype to use standardized object_children

* 17460 refactor moduletype/devicetype to use standardized object_children

* 17460 refactor moduletype/devicetype to use standardized object_children
Arthur Hanson 1 год назад
Родитель
Сommit
476194f0aa

+ 1 - 14
netbox/templates/dcim/devicetype/component_templates.html

@@ -18,21 +18,8 @@
             <button type="submit" name="_rename"
                     {% formaction %}="{% url bulk_rename_view %}?return_url={{ return_url }}"
                     class="btn btn-outline-warning">
-                <i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
+                <i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename Selected
             </button>
         {% endif %}
     {% endwith %}
 {% endblock bulk_edit_controls %}
-
-{% block bulk_extra_controls %}
-    {{ block.super }}
-    {% if request.user|can_add:child_model %}
-        <div class="bulk-button-group">
-            <a href="{% url table.Meta.model|viewname:"add" %}?device_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary">
-                <i class="mdi mdi-plus-thick" aria-hidden="true"></i>
-                {% trans "Add" %} {{ title }}
-            </a>
-        </div>
-    {% endif %}
-{% endblock bulk_extra_controls %}
-

+ 2 - 0
netbox/templates/dcim/inc/devicetype_breadcrumbs.html

@@ -0,0 +1,2 @@
+
+<li class="breadcrumb-item"><a href="{% url 'dcim:devicetype_list' %}?manufacturer_id={{ object.manufacturer.pk }}">{{ object.manufacturer }}</a></li>

+ 38 - 0
netbox/templates/dcim/inc/moduletype_buttons.html

@@ -0,0 +1,38 @@
+{% load buttons %}
+{% load helpers %}
+{% load i18n %}
+
+
+{% if perms.dcim.change_devicetype %}
+  <div class="dropdown">
+    <button type="button" class="btn btn-primary dropdown-toggle"data-bs-toggle="dropdown" aria-expanded="false">
+      <i class="mdi mdi-plus-thick" aria-hidden="true"></i> {% trans "Add Components" %}
+    </button>
+    <ul class="dropdown-menu">
+      {% if perms.dcim.add_consoleporttemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:consoleporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_consoleports' pk=object.pk %}">{% trans "Console Ports" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_consoleserverporttemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:consoleserverporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_consoleserverports' pk=object.pk %}">{% trans "Console Server Ports" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_powerporttemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:powerporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_powerports' pk=object.pk %}">{% trans "Power Ports" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_poweroutlettemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:poweroutlettemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_poweroutlets' pk=object.pk %}">{% trans "Power Outlets" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_interfacetemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:interfacetemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_interfaces' pk=object.pk %}">{% trans "Interfaces" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_frontporttemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:frontporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_frontports' pk=object.pk %}">{% trans "Front Ports" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_rearporttemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:rearporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_rearports' pk=object.pk %}">{% trans "Rear Ports" %}</a></li>
+      {% endif %}
+      {% if perms.dcim.add_modulebaytemplate %}
+        <li><a class="dropdown-item" href="{% url 'dcim:modulebaytemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_modulebays' pk=object.pk %}">{% trans "Module Bays" %}</a></li>
+      {% endif %}
+    </ul>
+  </div>
+{% endif %}

+ 12 - 1
netbox/templates/dcim/moduletype.html

@@ -1,9 +1,20 @@
-{% extends 'dcim/moduletype/base.html' %}
+{% extends 'generic/object.html' %}
 {% load buttons %}
 {% load helpers %}
 {% load plugins %}
 {% load i18n %}
 
+{% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %}
+
+{% block breadcrumbs %}
+  {{ block.super }}
+  {%  include 'dcim/inc/devicetype_breadcrumbs.html' %}
+{% endblock %}
+
+{% block extra_controls %}
+  {%  include 'dcim/inc/moduletype_buttons.html' %}
+{% endblock %}
+
 {% block content %}
   <div class="row">
     <div class="col col-md-6">

+ 0 - 48
netbox/templates/dcim/moduletype/base.html

@@ -1,48 +0,0 @@
-{% extends 'generic/object.html' %}
-{% load buttons %}
-{% load helpers %}
-{% load plugins %}
-{% load i18n %}
-
-{% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %}
-
-{% block breadcrumbs %}
-  {{ block.super }}
-  <li class="breadcrumb-item"><a href="{% url 'dcim:moduletype_list' %}?manufacturer_id={{ object.manufacturer.pk }}">{{ object.manufacturer }}</a></li>
-{% endblock %}
-
-{% block extra_controls %}
-  {% if perms.dcim.change_devicetype %}
-    <div class="dropdown">
-      <button type="button" class="btn btn-primary dropdown-toggle"data-bs-toggle="dropdown" aria-expanded="false">
-        <i class="mdi mdi-plus-thick" aria-hidden="true"></i> {% trans "Add Components" %}
-      </button>
-      <ul class="dropdown-menu">
-        {% if perms.dcim.add_consoleporttemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:consoleporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_consoleports' pk=object.pk %}">{% trans "Console Ports" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_consoleserverporttemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:consoleserverporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_consoleserverports' pk=object.pk %}">{% trans "Console Server Ports" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_powerporttemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:powerporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_powerports' pk=object.pk %}">{% trans "Power Ports" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_poweroutlettemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:poweroutlettemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_poweroutlets' pk=object.pk %}">{% trans "Power Outlets" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_interfacetemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:interfacetemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_interfaces' pk=object.pk %}">{% trans "Interfaces" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_frontporttemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:frontporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_frontports' pk=object.pk %}">{% trans "Front Ports" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_rearporttemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:rearporttemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_rearports' pk=object.pk %}">{% trans "Rear Ports" %}</a></li>
-        {% endif %}
-        {% if perms.dcim.add_modulebaytemplate %}
-          <li><a class="dropdown-item" href="{% url 'dcim:modulebaytemplate_add' %}?module_type={{ object.pk }}&return_url={% url 'dcim:moduletype_modulebays' pk=object.pk %}">{% trans "Module Bays" %}</a></li>
-        {% endif %}
-      </ul>
-    </div>
-  {% endif %}
-{% endblock %}

+ 33 - 40
netbox/templates/dcim/moduletype/component_templates.html

@@ -1,44 +1,37 @@
-{% extends 'dcim/moduletype/base.html' %}
+{% extends 'generic/object_children.html' %}
 {% load render_table from django_tables2 %}
 {% load helpers %}
 {% load i18n %}
 
-{% block content %}
-  {% if perms.dcim.change_moduletype %}
-    <form method="post">
-        {% csrf_token %}
-        <div class="card">
-            <div class="htmx-container table-responsive" id="object_list">
-              {% include 'htmx/table.html' %}
-            </div>
-            <div class="card-footer d-print-none">
-                {% if table.rows %}
-                    <button type="submit" name="_edit" {% formaction %}="{% url table.Meta.model|viewname:"bulk_rename" %}?return_url={{ return_url }}" class="btn btn-warning">
-                        <span class="mdi mdi-pencil-outline" aria-hidden="true"></span> {% trans "Rename" %}
-                    </button>
-                    <button type="submit" name="_edit" {% formaction %}="{% url table.Meta.model|viewname:"bulk_edit" %}?return_url={{ return_url }}" class="btn btn-warning">
-                        <span class="mdi mdi-pencil" aria-hidden="true"></span> {% trans "Edit" %}
-                    </button>
-                    <button type="submit" name="_delete" {% formaction %}="{% url table.Meta.model|viewname:"bulk_delete" %}?return_url={{ return_url }}" class="btn btn-danger">
-                        <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> {% trans "Delete" %}
-                    </button>
-                {% endif %}
-                <div class="float-end">
-                    <a href="{% url table.Meta.model|viewname:"add" %}?module_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary">
-                        <i class="mdi mdi-plus-thick" aria-hidden="true"></i>
-                        {% trans "Add" %} {{ title }}
-                    </a>
-                </div>
-                <div class="clearfix"></div>
-            </div>
-        </div>
-    </form>
-  {% else %}
-    <div class="card">
-      <h2 class="card-header">{{ title }}</h2>
-      <div class="htmx-container table-responsive" id="object_list">
-        {% include 'htmx/table.html' %}
-      </div>
-    </div>
-  {% endif %}
-{% endblock content %}
+{% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %}
+
+{% block breadcrumbs %}
+  {{ block.super }}
+  {%  include 'dcim/inc/devicetype_breadcrumbs.html' %}
+{% endblock %}
+
+{% block extra_controls %}
+  {%  include 'dcim/inc/moduletype_buttons.html' %}
+{% endblock %}
+
+{% block bulk_edit_controls %}
+    {% with bulk_edit_view=child_model|validated_viewname:"bulk_edit" %}
+        {% if 'bulk_edit' in actions and bulk_edit_view %}
+            <button type="submit" name="_edit"
+                    {% formaction %}="{% url bulk_edit_view %}?device={{ object.pk }}&return_url={{ return_url }}"
+                    class="btn btn-warning">
+                <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
+            </button>
+        {% endif %}
+    {% endwith %}
+    {% with bulk_rename_view=child_model|validated_viewname:"bulk_rename" %}
+        {% if 'bulk_rename' in actions and bulk_rename_view %}
+            <button type="submit" name="_rename"
+                    {% formaction %}="{% url bulk_rename_view %}?return_url={{ return_url }}"
+                    class="btn btn-outline-warning">
+                <i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename Selected
+            </button>
+        {% endif %}
+    {% endwith %}
+{% endblock bulk_edit_controls %}
+