def ipaddress_remove(request, pk): ipaddress = get_object_or_404(IPAddress, pk=pk) if request.method == 'POST': form = ConfirmationForm(request.POST) if form.is_valid(): device = ipaddress.interface.device ipaddress.interface = None ipaddress.save() messages.success(request, u"Removed IP address {} from {}.".format(ipaddress, device)) if device.primary_ip4 == ipaddress.pk: device.primary_ip4 = None device.save() elif device.primary_ip6 == ipaddress.pk: device.primary_ip6 = None device.save() return redirect('ipam:ipaddress', pk=ipaddress.pk) else: form = ConfirmationForm() return render(request, 'ipam/ipaddress_unassign.html', { 'ipaddress': ipaddress, 'form': form, 'cancel_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}), })
def ipaddress_remove(request, pk): ipaddress = get_object_or_404(IPAddress, pk=pk) if request.method == 'POST': form = ConfirmationForm(request.POST) if form.is_valid(): device = ipaddress.interface.device ipaddress.interface = None ipaddress.save() messages.success(request, u"Removed IP address {} from {}.".format(ipaddress, device)) if device.primary_ip4 == ipaddress.pk: device.primary_ip4 = None device.save() elif device.primary_ip6 == ipaddress.pk: device.primary_ip6 = None device.save() return redirect('ipam:ipaddress', pk=ipaddress.pk) else: form = ConfirmationForm() return render(request, 'ipam/ipaddress_unassign.html', { 'ipaddress': ipaddress, 'form': form, 'cancel_url': reverse('ipam:ipaddress', kwargs={'pk': ipaddress.pk}), })
def post(self, request, **kwargs): logger = logging.getLogger('netbox.views.ObjectDeleteView') obj = self.get_object(kwargs) form = ConfirmationForm(request.POST) if form.is_valid(): logger.debug("Form validation was successful") try: obj.delete() except ProtectedError as e: logger.info("Caught ProtectedError while attempting to delete object") handle_protectederror([obj], request, e) return redirect(obj.get_absolute_url()) msg = 'Deleted {} {}'.format(self.queryset.model._meta.verbose_name, obj) logger.info(msg) messages.success(request, msg) return_url = form.cleaned_data.get('return_url') if return_url is not None and is_safe_url(url=return_url, allowed_hosts=request.get_host()): return redirect(return_url) else: return redirect(self.get_return_url(request, obj)) else: logger.debug("Form validation failed") return render(request, self.template_name, { 'obj': obj, 'form': form, 'obj_type': self.queryset.model._meta.verbose_name, 'return_url': self.get_return_url(request, obj), })
def circuit_terminations_swap(request, pk): circuit = get_object_or_404(Circuit, pk=pk) termination_a = CircuitTermination.objects.filter( circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A).first() termination_z = CircuitTermination.objects.filter( circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z).first() if not termination_a and not termination_z: messages.error( request, "No terminations have been defined for circuit {}.".format( circuit)) return redirect('circuits:circuit', pk=circuit.pk) if request.method == 'POST': form = ConfirmationForm(request.POST) if form.is_valid(): if termination_a and termination_z: # Use a placeholder to avoid an IntegrityError on the (circuit, term_side) unique constraint with transaction.atomic(): termination_a.term_side = '_' termination_a.save() termination_z.term_side = 'A' termination_z.save() termination_a.term_side = 'Z' termination_a.save() elif termination_a: termination_a.term_side = 'Z' termination_a.save() else: termination_z.term_side = 'A' termination_z.save() messages.success( request, "Swapped terminations for circuit {}.".format(circuit)) return redirect('circuits:circuit', pk=circuit.pk) else: form = ConfirmationForm() return render( request, 'circuits/circuit_terminations_swap.html', { 'circuit': circuit, 'termination_a': termination_a, 'termination_z': termination_z, 'form': form, 'panel_class': 'default', 'button_class': 'primary', 'return_url': circuit.get_absolute_url(), })
def post(self, request, pk): circuit = get_object_or_404(self.queryset, pk=pk) form = ConfirmationForm(request.POST) if form.is_valid(): termination_a = CircuitTermination.objects.filter( pk=circuit.termination_a_id).first() termination_z = CircuitTermination.objects.filter( pk=circuit.termination_z_id).first() if termination_a and termination_z: # Use a placeholder to avoid an IntegrityError on the (circuit, term_side) unique constraint with transaction.atomic(): termination_a.term_side = '_' termination_a.save() termination_z.term_side = 'A' termination_z.save() termination_a.term_side = 'Z' termination_a.save() circuit.refresh_from_db() circuit.termination_a = termination_z circuit.termination_z = termination_a circuit.save() elif termination_a: termination_a.term_side = 'Z' termination_a.save() circuit.refresh_from_db() circuit.termination_a = None circuit.save() else: termination_z.term_side = 'A' termination_z.save() circuit.refresh_from_db() circuit.termination_z = None circuit.save() messages.success(request, f"Swapped terminations for circuit {circuit}.") return redirect('circuits:circuit', pk=circuit.pk) return render( request, 'circuits/circuit_terminations_swap.html', { 'circuit': circuit, 'termination_a': circuit.termination_a, 'termination_z': circuit.termination_z, 'form': form, 'panel_class': 'default', 'button_class': 'primary', 'return_url': circuit.get_absolute_url(), })
def post(self, request, pk): token = get_object_or_404(Token.objects.filter(user=request.user), pk=pk) form = ConfirmationForm(request.POST) if form.is_valid(): token.delete() messages.success(request, "Token deleted") return redirect('user:token_list') return render(request, 'utilities/obj_delete.html', { 'obj': token, 'obj_type': token._meta.verbose_name, 'form': form, 'return_url': reverse('user:token_list'), })
def post(self, request, pk): token = get_object_or_404(Token.objects.filter(user=request.user), pk=pk) form = ConfirmationForm(request.POST) if form.is_valid(): token.delete() messages.success(request, "Token deleted") return redirect('user:token_list') return render(request, 'utilities/obj_delete.html', { 'obj': token, 'obj_type': token._meta.verbose_name, 'form': form, 'return_url': reverse('user:token_list'), })
def post(self, request, name): # Retrieve the Report by "<module>.<report>" module_name, report_name = name.split('.') report = get_report(module_name, report_name) if report is None: raise Http404 form = ConfirmationForm(request.POST) if form.is_valid(): # Run the Report. A new ReportResult is created. report.run() result = 'failed' if report.failed else 'passed' msg = "Ran report {} ({})".format(report.full_name, result) messages.success(request, mark_safe(msg)) return redirect('extras:report', name=report.full_name)
def post(self, request, name): # Retrieve the Report by "<module>.<report>" module_name, report_name = name.split('.') report = get_report(module_name, report_name) if report is None: raise Http404 form = ConfirmationForm(request.POST) if form.is_valid(): # Run the Report. A new ReportResult is created. report.run() result = 'failed' if report.failed else 'passed' msg = "Ran report {} ({})".format(report.full_name, result) messages.success(request, mark_safe(msg)) return redirect('extras:report', name=report.full_name)
def get(self, request, **kwargs): obj = self.get_object(kwargs) form = ConfirmationForm(initial=request.GET) return render(request, self.template_name, { 'obj': obj, 'form': form, 'obj_type': self.queryset.model._meta.verbose_name, 'return_url': self.get_return_url(request, obj), })
def get(self, request): sessionkey = get_object_or_404(SessionKey, userkey__user=request.user) form = ConfirmationForm() return render(request, 'users/sessionkey_delete.html', { 'obj_type': sessionkey._meta.verbose_name, 'form': form, 'return_url': reverse('user:userkey'), })
def circuit_terminations_swap(request, pk): circuit = get_object_or_404(Circuit, pk=pk) termination_a = CircuitTermination.objects.filter(circuit=circuit, term_side=TERM_SIDE_A).first() termination_z = CircuitTermination.objects.filter(circuit=circuit, term_side=TERM_SIDE_Z).first() if not termination_a and not termination_z: messages.error(request, "No terminations have been defined for circuit {}.".format(circuit)) return redirect('circuits:circuit', pk=circuit.pk) if request.method == 'POST': form = ConfirmationForm(request.POST) if form.is_valid(): if termination_a and termination_z: # Use a placeholder to avoid an IntegrityError on the (circuit, term_side) unique constraint with transaction.atomic(): termination_a.term_side = '_' termination_a.save() termination_z.term_side = 'A' termination_z.save() termination_a.term_side = 'Z' termination_a.save() elif termination_a: termination_a.term_side = 'Z' termination_a.save() else: termination_z.term_side = 'A' termination_z.save() messages.success(request, "Swapped terminations for circuit {}.".format(circuit)) return redirect('circuits:circuit', pk=circuit.pk) else: form = ConfirmationForm() return render(request, 'circuits/circuit_terminations_swap.html', { 'circuit': circuit, 'termination_a': termination_a, 'termination_z': termination_z, 'form': form, 'panel_class': 'default', 'button_class': 'primary', 'return_url': circuit.get_absolute_url(), })
def post(self, request): sessionkey = get_object_or_404(SessionKey, userkey__user=request.user) form = ConfirmationForm(request.POST) if form.is_valid(): # Delete session key sessionkey.delete() messages.success(request, "Session key deleted") # Delete cookie response = redirect('user:userkey') response.delete_cookie('session_key') return response return render(request, 'users/sessionkey_delete.html', { 'obj_type': sessionkey._meta.verbose_name, 'form': form, 'return_url': reverse('user:userkey'), })
def post(self, request): sessionkey = get_object_or_404(SessionKey, userkey__user=request.user) form = ConfirmationForm(request.POST) if form.is_valid(): # Delete session key sessionkey.delete() messages.success(request, "Session key deleted") # Delete cookie response = redirect('user:userkey') response.delete_cookie('session_key') return response return render(request, 'users/sessionkey_delete.html', { 'obj_type': sessionkey._meta.verbose_name, 'form': form, 'return_url': reverse('user:userkey'), })
def get(self, request, pk): token = get_object_or_404(Token.objects.filter(user=request.user), pk=pk) initial_data = { 'return_url': reverse('user:token_list'), } form = ConfirmationForm(initial=initial_data) return render(request, 'utilities/obj_delete.html', { 'obj': token, 'obj_type': token._meta.verbose_name, 'form': form, 'return_url': reverse('user:token_list'), })
def get(self, request, **kwargs): obj = self.get_object(kwargs) form = ConfirmationForm(initial=request.GET) return render( request, self.template_name, { "obj": obj, "form": form, "obj_type": self.queryset.model._meta.verbose_name, "return_url": self.get_return_url(request, obj), }, )
def get(self, request, name): # Retrieve the Report by "<module>.<report>" module_name, report_name = name.split('.') report = get_report(module_name, report_name) if report is None: raise Http404 # Attach the ReportResult (if any) report.result = ReportResult.objects.filter(report=report.full_name).first() return render(request, 'extras/report.html', { 'report': report, 'run_form': ConfirmationForm(), })
def get(self, request, module, name): report = get_report(module, name) if report is None: raise Http404 report_content_type = ContentType.objects.get(app_label='extras', model='report') report.result = JobResult.objects.filter( obj_type=report_content_type, name=report.full_name, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES).first() return render(request, 'extras/report.html', { 'report': report, 'run_form': ConfirmationForm(), })
def get(self, request, pk): circuit = get_object_or_404(self.queryset, pk=pk) form = ConfirmationForm() # Circuit must have at least one termination to swap if not circuit.termination_a and not circuit.termination_z: messages.error(request, "No terminations have been defined for circuit {}.".format(circuit)) return redirect('circuits:circuit', pk=circuit.pk) return render(request, 'circuits/circuit_terminations_swap.html', { 'circuit': circuit, 'termination_a': circuit.termination_a, 'termination_z': circuit.termination_z, 'form': form, 'panel_class': 'default', 'button_class': 'primary', 'return_url': circuit.get_absolute_url(), })
def get(self, request, **kwargs): # Verify that the Tenant exists in NetBox tenant = get_object_or_404(Tenant, pk=kwargs["pk"], tags=System.PluginTag.get()) # Confirm deletion form = ConfirmationForm(initial=request.GET) return render( request, "generic/object_delete.html", { "obj": tenant, "form": form, "return_url": reverse("plugins:ciscodnacnetbox:purge_tenant", args=(kwargs["pk"], )), }, )