Quellcode durchsuchen

Closes #8747: Rename ObjectListView action_buttons to actions

jeremystretch vor 4 Jahren
Ursprung
Commit
0953bba0a3

+ 8 - 8
docs/plugins/development/templates.md

@@ -126,14 +126,14 @@ This template is used by the `ObjectListView` generic view to display a filterab
 
 
 #### Context
 #### Context
 
 
-| Name             | Required | Description                                                           |
-|------------------|----------|-----------------------------------------------------------------------|
-| `model`          | Yes      | The object class                                                      |
-| `table`          | Yes      | The table class used for rendering the list of objects                |
-| `permissions`    | Yes      | A mapping of add, change, and delete permissions for the current user |
-| `action_buttons` | Yes      | A list of buttons to display (options are `add`, `import`, `export`)  |
-| `filter_form`    | -        | The bound filterset form for filtering the objects list               |
-| `return_url`     | -        | The return URL to pass when submitting a bulk operation form          |
+| Name          | Required | Description                                                                                 |
+|---------------|----------|---------------------------------------------------------------------------------------------|
+| `model`       | Yes      | The object class                                                                            |
+| `table`       | Yes      | The table class used for rendering the list of objects                                      |
+| `permissions` | Yes      | A mapping of add, change, and delete permissions for the current user                       |
+| `actions`     | Yes      | A list of buttons to display (`add`, `import`, `export`, `bulk_edit`, and/or `bulk_delete`) |
+| `filter_form` | -        | The bound filterset form for filtering the objects list                                     |
+| `return_url`  | -        | The return URL to pass when submitting a bulk operation form                                |
 
 
 ### bulk_import.html
 ### bulk_import.html
 
 

+ 14 - 14
netbox/dcim/views.py

@@ -1812,7 +1812,7 @@ class ConsolePortListView(generic.ObjectListView):
     filterset = filtersets.ConsolePortFilterSet
     filterset = filtersets.ConsolePortFilterSet
     filterset_form = forms.ConsolePortFilterForm
     filterset_form = forms.ConsolePortFilterForm
     table = tables.ConsolePortTable
     table = tables.ConsolePortTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class ConsolePortView(generic.ObjectView):
 class ConsolePortView(generic.ObjectView):
@@ -1871,7 +1871,7 @@ class ConsoleServerPortListView(generic.ObjectListView):
     filterset = filtersets.ConsoleServerPortFilterSet
     filterset = filtersets.ConsoleServerPortFilterSet
     filterset_form = forms.ConsoleServerPortFilterForm
     filterset_form = forms.ConsoleServerPortFilterForm
     table = tables.ConsoleServerPortTable
     table = tables.ConsoleServerPortTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class ConsoleServerPortView(generic.ObjectView):
 class ConsoleServerPortView(generic.ObjectView):
@@ -1930,7 +1930,7 @@ class PowerPortListView(generic.ObjectListView):
     filterset = filtersets.PowerPortFilterSet
     filterset = filtersets.PowerPortFilterSet
     filterset_form = forms.PowerPortFilterForm
     filterset_form = forms.PowerPortFilterForm
     table = tables.PowerPortTable
     table = tables.PowerPortTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class PowerPortView(generic.ObjectView):
 class PowerPortView(generic.ObjectView):
@@ -1989,7 +1989,7 @@ class PowerOutletListView(generic.ObjectListView):
     filterset = filtersets.PowerOutletFilterSet
     filterset = filtersets.PowerOutletFilterSet
     filterset_form = forms.PowerOutletFilterForm
     filterset_form = forms.PowerOutletFilterForm
     table = tables.PowerOutletTable
     table = tables.PowerOutletTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class PowerOutletView(generic.ObjectView):
 class PowerOutletView(generic.ObjectView):
@@ -2048,7 +2048,7 @@ class InterfaceListView(generic.ObjectListView):
     filterset = filtersets.InterfaceFilterSet
     filterset = filtersets.InterfaceFilterSet
     filterset_form = forms.InterfaceFilterForm
     filterset_form = forms.InterfaceFilterForm
     table = tables.InterfaceTable
     table = tables.InterfaceTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class InterfaceView(generic.ObjectView):
 class InterfaceView(generic.ObjectView):
@@ -2170,7 +2170,7 @@ class FrontPortListView(generic.ObjectListView):
     filterset = filtersets.FrontPortFilterSet
     filterset = filtersets.FrontPortFilterSet
     filterset_form = forms.FrontPortFilterForm
     filterset_form = forms.FrontPortFilterForm
     table = tables.FrontPortTable
     table = tables.FrontPortTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class FrontPortView(generic.ObjectView):
 class FrontPortView(generic.ObjectView):
@@ -2237,7 +2237,7 @@ class RearPortListView(generic.ObjectListView):
     filterset = filtersets.RearPortFilterSet
     filterset = filtersets.RearPortFilterSet
     filterset_form = forms.RearPortFilterForm
     filterset_form = forms.RearPortFilterForm
     table = tables.RearPortTable
     table = tables.RearPortTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class RearPortView(generic.ObjectView):
 class RearPortView(generic.ObjectView):
@@ -2296,7 +2296,7 @@ class ModuleBayListView(generic.ObjectListView):
     filterset = filtersets.ModuleBayFilterSet
     filterset = filtersets.ModuleBayFilterSet
     filterset_form = forms.ModuleBayFilterForm
     filterset_form = forms.ModuleBayFilterForm
     table = tables.ModuleBayTable
     table = tables.ModuleBayTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class ModuleBayView(generic.ObjectView):
 class ModuleBayView(generic.ObjectView):
@@ -2352,7 +2352,7 @@ class DeviceBayListView(generic.ObjectListView):
     filterset = filtersets.DeviceBayFilterSet
     filterset = filtersets.DeviceBayFilterSet
     filterset_form = forms.DeviceBayFilterForm
     filterset_form = forms.DeviceBayFilterForm
     table = tables.DeviceBayTable
     table = tables.DeviceBayTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class DeviceBayView(generic.ObjectView):
 class DeviceBayView(generic.ObjectView):
@@ -2474,7 +2474,7 @@ class InventoryItemListView(generic.ObjectListView):
     filterset = filtersets.InventoryItemFilterSet
     filterset = filtersets.InventoryItemFilterSet
     filterset_form = forms.InventoryItemFilterForm
     filterset_form = forms.InventoryItemFilterForm
     table = tables.InventoryItemTable
     table = tables.InventoryItemTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class InventoryItemView(generic.ObjectView):
 class InventoryItemView(generic.ObjectView):
@@ -2707,7 +2707,7 @@ class CableListView(generic.ObjectListView):
     filterset = filtersets.CableFilterSet
     filterset = filtersets.CableFilterSet
     filterset_form = forms.CableFilterForm
     filterset_form = forms.CableFilterForm
     table = tables.CableTable
     table = tables.CableTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class CableView(generic.ObjectView):
 class CableView(generic.ObjectView):
@@ -2874,7 +2874,7 @@ class ConsoleConnectionsListView(generic.ObjectListView):
     filterset_form = forms.ConsoleConnectionFilterForm
     filterset_form = forms.ConsoleConnectionFilterForm
     table = tables.ConsoleConnectionTable
     table = tables.ConsoleConnectionTable
     template_name = 'dcim/connections_list.html'
     template_name = 'dcim/connections_list.html'
-    action_buttons = ('export',)
+    actions = ('export',)
 
 
     def get_extra_context(self, request):
     def get_extra_context(self, request):
         return {
         return {
@@ -2888,7 +2888,7 @@ class PowerConnectionsListView(generic.ObjectListView):
     filterset_form = forms.PowerConnectionFilterForm
     filterset_form = forms.PowerConnectionFilterForm
     table = tables.PowerConnectionTable
     table = tables.PowerConnectionTable
     template_name = 'dcim/connections_list.html'
     template_name = 'dcim/connections_list.html'
-    action_buttons = ('export',)
+    actions = ('export',)
 
 
     def get_extra_context(self, request):
     def get_extra_context(self, request):
         return {
         return {
@@ -2902,7 +2902,7 @@ class InterfaceConnectionsListView(generic.ObjectListView):
     filterset_form = forms.InterfaceConnectionFilterForm
     filterset_form = forms.InterfaceConnectionFilterForm
     table = tables.InterfaceConnectionTable
     table = tables.InterfaceConnectionTable
     template_name = 'dcim/connections_list.html'
     template_name = 'dcim/connections_list.html'
-    action_buttons = ('export',)
+    actions = ('export',)
 
 
     def get_extra_context(self, request):
     def get_extra_context(self, request):
         return {
         return {

+ 3 - 3
netbox/extras/views.py

@@ -269,7 +269,7 @@ class ConfigContextListView(generic.ObjectListView):
     filterset = filtersets.ConfigContextFilterSet
     filterset = filtersets.ConfigContextFilterSet
     filterset_form = forms.ConfigContextFilterForm
     filterset_form = forms.ConfigContextFilterForm
     table = tables.ConfigContextTable
     table = tables.ConfigContextTable
-    action_buttons = ('add',)
+    actions = ('add', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class ConfigContextView(generic.ObjectView):
 class ConfigContextView(generic.ObjectView):
@@ -366,7 +366,7 @@ class ObjectChangeListView(generic.ObjectListView):
     filterset_form = forms.ObjectChangeFilterForm
     filterset_form = forms.ObjectChangeFilterForm
     table = tables.ObjectChangeTable
     table = tables.ObjectChangeTable
     template_name = 'extras/objectchange_list.html'
     template_name = 'extras/objectchange_list.html'
-    action_buttons = ('export',)
+    actions = ('export',)
 
 
 
 
 class ObjectChangeView(generic.ObjectView):
 class ObjectChangeView(generic.ObjectView):
@@ -458,7 +458,7 @@ class JournalEntryListView(generic.ObjectListView):
     filterset = filtersets.JournalEntryFilterSet
     filterset = filtersets.JournalEntryFilterSet
     filterset_form = forms.JournalEntryFilterForm
     filterset_form = forms.JournalEntryFilterForm
     table = tables.JournalEntryTable
     table = tables.JournalEntryTable
-    action_buttons = ('export',)
+    actions = ('export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class JournalEntryView(generic.ObjectView):
 class JournalEntryView(generic.ObjectView):

+ 1 - 1
netbox/ipam/views.py

@@ -1080,7 +1080,7 @@ class ServiceListView(generic.ObjectListView):
     filterset = filtersets.ServiceFilterSet
     filterset = filtersets.ServiceFilterSet
     filterset_form = forms.ServiceFilterForm
     filterset_form = forms.ServiceFilterForm
     table = tables.ServiceTable
     table = tables.ServiceTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class ServiceView(generic.ObjectView):
 class ServiceView(generic.ObjectView):

+ 3 - 3
netbox/netbox/views/generic/bulk_views.py

@@ -42,12 +42,12 @@ class ObjectListView(BaseMultiObjectView):
     Attributes:
     Attributes:
         filterset: A django-filter FilterSet that is applied to the queryset
         filterset: A django-filter FilterSet that is applied to the queryset
         filterset_form: The form class used to render filter options
         filterset_form: The form class used to render filter options
-        action_buttons: A list of buttons to include at the top of the page
+        actions: Supported actions for the model. Default options are add, import, export, bulk_edit, and bulk_delete
     """
     """
     template_name = 'generic/object_list.html'
     template_name = 'generic/object_list.html'
     filterset = None
     filterset = None
     filterset_form = None
     filterset_form = None
-    action_buttons = ('add', 'import', 'export')
+    actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete')
 
 
     def get_required_permission(self):
     def get_required_permission(self):
         return get_permission_for_model(self.queryset.model, 'view')
         return get_permission_for_model(self.queryset.model, 'view')
@@ -180,7 +180,7 @@ class ObjectListView(BaseMultiObjectView):
             'model': model,
             'model': model,
             'table': table,
             'table': table,
             'permissions': permissions,
             'permissions': permissions,
-            'action_buttons': self.action_buttons,
+            'actions': self.actions,
             'filter_form': self.filterset_form(request.GET, label_suffix='') if self.filterset_form else None,
             'filter_form': self.filterset_form(request.GET, label_suffix='') if self.filterset_form else None,
             **self.get_extra_context(request),
             **self.get_extra_context(request),
         }
         }

+ 20 - 23
netbox/templates/generic/object_list.html

@@ -16,7 +16,8 @@ Context:
   permissions: A mapping of add/change/delete permissions to boolean indicating
   permissions: A mapping of add/change/delete permissions to boolean indicating
     whether the current user possesses each of them. Controls the display of
     whether the current user possesses each of them. Controls the display of
     add/edit/delete buttons.
     add/edit/delete buttons.
-  action_buttons: A list of buttons to display. Options are add, import, export.
+  actions: A list of buttons to display. This template checks for add, import,
+    export, bulk_edit, and bulk_delete.
   filter_form: The bound filterset form for filtering the objects list (optional)
   filter_form: The bound filterset form for filtering the objects list (optional)
   return_url: Return URL to use for bulk actions (optional)
   return_url: Return URL to use for bulk actions (optional)
 {% endcomment %}
 {% endcomment %}
@@ -27,13 +28,13 @@ Context:
   <div class="controls">
   <div class="controls">
     <div class="control-group">
     <div class="control-group">
       {% block extra_controls %}{% endblock %}
       {% block extra_controls %}{% endblock %}
-      {% if permissions.add and 'add' in action_buttons %}
+      {% if permissions.add and 'add' in actions %}
           {% add_button model|validated_viewname:"add" %}
           {% add_button model|validated_viewname:"add" %}
       {% endif %}
       {% endif %}
-      {% if permissions.add and 'import' in action_buttons %}
+      {% if permissions.add and 'import' in actions %}
           {% import_button model|validated_viewname:"import" %}
           {% import_button model|validated_viewname:"import" %}
       {% endif %}
       {% endif %}
-      {% if 'export' in action_buttons %}
+      {% if 'export' in actions %}
           {% export_button model|content_type %}
           {% export_button model|content_type %}
       {% endif %}
       {% endif %}
     </div>
     </div>
@@ -115,25 +116,21 @@ Context:
         </div>
         </div>
 
 
         {# Form buttons #}
         {# Form buttons #}
-        {% if permissions.change or permissions.delete %}
-          {% with bulk_edit_url=model|validated_viewname:"bulk_edit" bulk_delete_url=model|validated_viewname:"bulk_delete" %}
-            <div class="noprint bulk-buttons">
-              <div class="bulk-button-group">
-                {% block bulk_buttons %}{% endblock %}
-                {% if bulk_edit_url and permissions.change %}
-                  <button type="submit" name="_edit" formaction="{% url bulk_edit_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm">
-                    <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
-                  </button>
-                {% endif %}
-                {% if bulk_delete_url and permissions.delete %}
-                  <button type="submit" name="_delete" formaction="{% url bulk_delete_url %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm">
-                    <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
-                  </button>
-                {% endif %}
-              </div>
-            </div>
-          {% endwith %}
-        {% endif %}
+        <div class="noprint bulk-buttons">
+          <div class="bulk-button-group">
+            {% block bulk_buttons %}{% endblock %}
+            {% if 'bulk_edit' in actions and permissions.change %}
+              <button type="submit" name="_edit" formaction="{% url model|viewname:"bulk_edit" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm">
+                <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
+              </button>
+            {% endif %}
+            {% if 'bulk_delete' in actions and permissions.delete %}
+              <button type="submit" name="_delete" formaction="{% url model|viewname:"bulk_delete" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm">
+                <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
+              </button>
+            {% endif %}
+          </div>
+        </div>
 
 
       </form>
       </form>
 
 

+ 1 - 1
netbox/virtualization/views.py

@@ -404,7 +404,7 @@ class VMInterfaceListView(generic.ObjectListView):
     filterset = filtersets.VMInterfaceFilterSet
     filterset = filtersets.VMInterfaceFilterSet
     filterset_form = forms.VMInterfaceFilterForm
     filterset_form = forms.VMInterfaceFilterForm
     table = tables.VMInterfaceTable
     table = tables.VMInterfaceTable
-    action_buttons = ('import', 'export')
+    actions = ('import', 'export', 'bulk_edit', 'bulk_delete')
 
 
 
 
 class VMInterfaceView(generic.ObjectView):
 class VMInterfaceView(generic.ObjectView):