Converted module_add to ObjectEditView

This commit is contained in:
Jeremy Stretch 2016-12-16 12:12:42 -05:00
parent b451ece057
commit b7fe220860
3 changed files with 8 additions and 30 deletions

View File

@ -166,7 +166,7 @@ urlpatterns = [
url(r'^interfaces/(?P<pk>\d+)/delete/$', views.InterfaceDeleteView.as_view(), name='interface_delete'),
# Modules
url(r'^devices/(?P<pk>\d+)/modules/add/$', views.module_add, name='module_add'),
url(r'^devices/(?P<device>\d+)/modules/add/$', views.ModuleEditView.as_view(), name='module_add'),
url(r'^modules/(?P<pk>\d+)/edit/$', views.ModuleEditView.as_view(), name='module_edit'),
url(r'^modules/(?P<pk>\d+)/delete/$', views.ModuleDeleteView.as_view(), name='module_delete'),

View File

@ -1605,39 +1605,17 @@ def ipaddress_assign(request, pk):
# Modules
#
@permission_required('dcim.add_module')
def module_add(request, pk):
device = get_object_or_404(Device, pk=pk)
if request.method == 'POST':
form = forms.ModuleForm(request.POST)
if form.is_valid():
module = form.save(commit=False)
module.device = device
module.save()
messages.success(request, u"Added module {} to {}".format(module.name, module.device.name))
if '_addanother' in request.POST:
return redirect('dcim:module_add', pk=module.device.pk)
else:
return redirect('dcim:device_inventory', pk=module.device.pk)
else:
form = forms.ModuleForm()
return render(request, 'dcim/device_component_add.html', {
'device': device,
'component_type': 'Module',
'form': form,
'cancel_url': reverse('dcim:device_inventory', kwargs={'pk': device.pk}),
})
class ModuleEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'dcim.change_module'
model = Module
form_class = forms.ModuleForm
def alter_obj(self, obj, args, kwargs):
if 'device' in kwargs:
device = get_object_or_404(Device, pk=kwargs['device'])
obj.device = device
return obj
class ModuleDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'dcim.delete_module'

View File

@ -127,7 +127,7 @@
</table>
</div>
{% if perms.dcim.add_module %}
<a href="{% url 'dcim:module_add' pk=device.pk %}" class="btn btn-success">
<a href="{% url 'dcim:module_add' device=device.pk %}" class="btn btn-success">
<span class="fa fa-plus" aria-hidden="true"></span>
Add a Module
</a>