0028_cache_circuit_terminations.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import sys
  2. from django.db import migrations
  3. def cache_circuit_terminations(apps, schema_editor):
  4. Circuit = apps.get_model('circuits', 'Circuit')
  5. CircuitTermination = apps.get_model('circuits', 'CircuitTermination')
  6. if 'test' not in sys.argv:
  7. print(f"\n Caching circuit terminations...", flush=True)
  8. a_terminations = {
  9. ct.circuit_id: ct.pk for ct in CircuitTermination.objects.filter(term_side='A')
  10. }
  11. z_terminations = {
  12. ct.circuit_id: ct.pk for ct in CircuitTermination.objects.filter(term_side='Z')
  13. }
  14. for circuit in Circuit.objects.all():
  15. Circuit.objects.filter(pk=circuit.pk).update(
  16. termination_a_id=a_terminations.get(circuit.pk),
  17. termination_z_id=z_terminations.get(circuit.pk),
  18. )
  19. class Migration(migrations.Migration):
  20. dependencies = [
  21. ('circuits', '0027_cloud'),
  22. ]
  23. operations = [
  24. migrations.RunPython(
  25. code=cache_circuit_terminations,
  26. reverse_code=migrations.RunPython.noop
  27. ),
  28. ]