0006_terminations.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # -*- coding: utf-8 -*-
  2. # Generated by Django 1.10 on 2016-12-13 16:30
  3. from django.db import migrations, models
  4. import django.db.models.deletion
  5. def circuits_to_terms(apps, schema_editor):
  6. Circuit = apps.get_model('circuits', 'Circuit')
  7. CircuitTermination = apps.get_model('circuits', 'CircuitTermination')
  8. for c in Circuit.objects.all():
  9. CircuitTermination(
  10. circuit=c,
  11. term_side=b'A',
  12. site=c.site,
  13. interface=c.interface,
  14. port_speed=c.port_speed,
  15. upstream_speed=c.upstream_speed,
  16. xconnect_id=c.xconnect_id,
  17. pp_info=c.pp_info,
  18. ).save()
  19. def terms_to_circuits(apps, schema_editor):
  20. CircuitTermination = apps.get_model('circuits', 'CircuitTermination')
  21. for ct in CircuitTermination.objects.filter(term_side='A'):
  22. c = ct.circuit
  23. c.site = ct.site
  24. c.interface = ct.interface
  25. c.port_speed = ct.port_speed
  26. c.upstream_speed = ct.upstream_speed
  27. c.xconnect_id = ct.xconnect_id
  28. c.pp_info = ct.pp_info
  29. c.save()
  30. class Migration(migrations.Migration):
  31. dependencies = [
  32. ('dcim', '0022_color_names_to_rgb'),
  33. ('circuits', '0005_circuit_add_upstream_speed'),
  34. ]
  35. operations = [
  36. migrations.CreateModel(
  37. name='CircuitTermination',
  38. fields=[
  39. ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  40. ('term_side', models.CharField(choices=[(b'A', b'A'), (b'Z', b'Z')], max_length=1,
  41. verbose_name='Termination')),
  42. ('port_speed', models.PositiveIntegerField(verbose_name=b'Port speed (Kbps)')),
  43. ('upstream_speed',
  44. models.PositiveIntegerField(blank=True, help_text=b'Upstream speed, if different from port speed',
  45. null=True, verbose_name=b'Upstream speed (Kbps)')),
  46. ('xconnect_id', models.CharField(blank=True, max_length=50, verbose_name=b'Cross-connect ID')),
  47. ('pp_info', models.CharField(blank=True, max_length=100, verbose_name=b'Patch panel/port(s)')),
  48. ('circuit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations',
  49. to='circuits.Circuit')),
  50. ('interface', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
  51. related_name='circuit_termination', to='dcim.Interface')),
  52. ('site',
  53. models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations',
  54. to='dcim.Site')),
  55. ],
  56. options={
  57. 'ordering': ['circuit', 'term_side'],
  58. },
  59. ),
  60. migrations.AlterUniqueTogether(
  61. name='circuittermination',
  62. unique_together=set([('circuit', 'term_side')]),
  63. ),
  64. migrations.RunPython(circuits_to_terms, terms_to_circuits),
  65. migrations.RemoveField(
  66. model_name='circuit',
  67. name='interface',
  68. ),
  69. migrations.RemoveField(
  70. model_name='circuit',
  71. name='port_speed',
  72. ),
  73. migrations.RemoveField(
  74. model_name='circuit',
  75. name='pp_info',
  76. ),
  77. migrations.RemoveField(
  78. model_name='circuit',
  79. name='site',
  80. ),
  81. migrations.RemoveField(
  82. model_name='circuit',
  83. name='upstream_speed',
  84. ),
  85. migrations.RemoveField(
  86. model_name='circuit',
  87. name='xconnect_id',
  88. ),
  89. ]