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

Allow users to create new FHRP group directly from the interface view

jeremystretch 4 лет назад
Родитель
Сommit
aeb4996ac2
2 измененных файлов с 20 добавлено и 4 удалено
  1. 11 0
      netbox/ipam/views.py
  2. 9 4
      netbox/templates/ipam/inc/panels/fhrp_groups.html

+ 11 - 0
netbox/ipam/views.py

@@ -3,6 +3,7 @@ from django.db.models import Prefetch
 from django.db.models.expressions import RawSQL
 from django.http import Http404
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 
 from dcim.models import Device, Interface
 from netbox.views import generic
@@ -867,6 +868,16 @@ class FHRPGroupEditView(generic.ObjectEditView):
     queryset = FHRPGroup.objects.all()
     model_form = forms.FHRPGroupForm
 
+    def get_return_url(self, request, obj=None):
+        return_url = super().get_return_url(request, obj)
+
+        # If we're redirecting the user to the FHRPGroupAssignment creation form,
+        # initialize the group field with the FHRPGroup we just saved.
+        if return_url.startswith(reverse('ipam:fhrpgroupassignment_add')):
+            return_url += f'&group={obj.pk}'
+
+        return return_url
+
 
 class FHRPGroupDeleteView(generic.ObjectDeleteView):
     queryset = FHRPGroup.objects.all()

+ 9 - 4
netbox/templates/ipam/inc/panels/fhrp_groups.html

@@ -35,11 +35,16 @@
       </tbody>
     </table>
   </div>
-  {% if perms.ipam.add_fhrpgroupassignment %}
-    <div class="card-footer text-end noprint">
+  <div class="card-footer text-end noprint">
+    {% if perms.ipam.add_fhrpgroup %}
+      <a href="{% url 'ipam:fhrpgroup_add' %}?return_url={% url 'ipam:fhrpgroupassignment_add' %}%3Fcontent_type={{ object|meta:"app_label" }}.{{ object|meta:"model_name" }}%26object_id={{ object.pk }}" class="btn btn-sm btn-primary">
+        <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Create Group
+      </a>
+    {% endif %}
+    {% if perms.ipam.add_fhrpgroupassignment %}
       <a href="{% url 'ipam:fhrpgroupassignment_add' %}?content_type={{ object|meta:"app_label" }}.{{ object|meta:"model_name" }}&object_id={{ object.pk }}" class="btn btn-sm btn-primary">
         <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Assign Group
       </a>
-    </div>
-  {% endif %}
+    {% endif %}
+  </div>
 </div>