|
1 | | -from django.contrib import messages |
2 | | -from django.db import router, transaction |
3 | | -from django.shortcuts import get_object_or_404, redirect, render |
4 | | -from django.utils.translation import gettext_lazy as _ |
5 | 1 |
|
6 | 2 | from dcim.views import PathTraceView |
7 | 3 | from ipam.models import ASN |
8 | 4 | from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport |
9 | 5 | from netbox.views import generic |
10 | | -from utilities.forms import ConfirmationForm |
11 | 6 | from utilities.query import count_related |
12 | 7 | from utilities.views import GetRelatedModelsMixin, register_model_view |
13 | 8 | from . import filtersets, forms, tables |
@@ -373,82 +368,6 @@ class CircuitBulkDeleteView(generic.BulkDeleteView): |
373 | 368 | table = tables.CircuitTable |
374 | 369 |
|
375 | 370 |
|
376 | | -class CircuitSwapTerminations(generic.ObjectEditView): |
377 | | - """ |
378 | | - Swap the A and Z terminations of a circuit. |
379 | | - """ |
380 | | - queryset = Circuit.objects.all() |
381 | | - |
382 | | - def get(self, request, pk): |
383 | | - circuit = get_object_or_404(self.queryset, pk=pk) |
384 | | - form = ConfirmationForm() |
385 | | - |
386 | | - # Circuit must have at least one termination to swap |
387 | | - if not circuit.termination_a and not circuit.termination_z: |
388 | | - messages.error(request, _( |
389 | | - "No terminations have been defined for circuit {circuit}." |
390 | | - ).format(circuit=circuit)) |
391 | | - return redirect('circuits:circuit', pk=circuit.pk) |
392 | | - |
393 | | - return render(request, 'circuits/circuit_terminations_swap.html', { |
394 | | - 'circuit': circuit, |
395 | | - 'termination_a': circuit.termination_a, |
396 | | - 'termination_z': circuit.termination_z, |
397 | | - 'form': form, |
398 | | - 'panel_class': 'light', |
399 | | - 'button_class': 'primary', |
400 | | - 'return_url': circuit.get_absolute_url(), |
401 | | - }) |
402 | | - |
403 | | - def post(self, request, pk): |
404 | | - circuit = get_object_or_404(self.queryset, pk=pk) |
405 | | - form = ConfirmationForm(request.POST) |
406 | | - |
407 | | - if form.is_valid(): |
408 | | - |
409 | | - termination_a = CircuitTermination.objects.filter(pk=circuit.termination_a_id).first() |
410 | | - termination_z = CircuitTermination.objects.filter(pk=circuit.termination_z_id).first() |
411 | | - |
412 | | - if termination_a and termination_z: |
413 | | - # Use a placeholder to avoid an IntegrityError on the (circuit, term_side) unique constraint |
414 | | - with transaction.atomic(using=router.db_for_write(CircuitTermination)): |
415 | | - termination_a.term_side = '_' |
416 | | - termination_a.save() |
417 | | - termination_z.term_side = 'A' |
418 | | - termination_z.save() |
419 | | - termination_a.term_side = 'Z' |
420 | | - termination_a.save() |
421 | | - circuit.refresh_from_db() |
422 | | - circuit.termination_a = termination_z |
423 | | - circuit.termination_z = termination_a |
424 | | - circuit.save() |
425 | | - elif termination_a: |
426 | | - termination_a.term_side = 'Z' |
427 | | - termination_a.save() |
428 | | - circuit.refresh_from_db() |
429 | | - circuit.termination_a = None |
430 | | - circuit.save() |
431 | | - else: |
432 | | - termination_z.term_side = 'A' |
433 | | - termination_z.save() |
434 | | - circuit.refresh_from_db() |
435 | | - circuit.termination_z = None |
436 | | - circuit.save() |
437 | | - |
438 | | - messages.success(request, _("Swapped terminations for circuit {circuit}.").format(circuit=circuit)) |
439 | | - return redirect('circuits:circuit', pk=circuit.pk) |
440 | | - |
441 | | - return render(request, 'circuits/circuit_terminations_swap.html', { |
442 | | - 'circuit': circuit, |
443 | | - 'termination_a': circuit.termination_a, |
444 | | - 'termination_z': circuit.termination_z, |
445 | | - 'form': form, |
446 | | - 'panel_class': 'default', |
447 | | - 'button_class': 'primary', |
448 | | - 'return_url': circuit.get_absolute_url(), |
449 | | - }) |
450 | | - |
451 | | - |
452 | 371 | # |
453 | 372 | # Circuit terminations |
454 | 373 | # |
|
0 commit comments