bulk_edit.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. from django import forms
  2. from django.utils.translation import gettext_lazy as _
  3. from circuits.choices import CircuitCommitRateChoices, CircuitStatusChoices
  4. from circuits.models import *
  5. from ipam.models import ASN
  6. from netbox.forms import NetBoxModelBulkEditForm
  7. from tenancy.models import Tenant
  8. from utilities.forms import add_blank_choice
  9. from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField
  10. from utilities.forms.widgets import DatePicker, NumberWithOptions
  11. __all__ = (
  12. 'CircuitBulkEditForm',
  13. 'CircuitTypeBulkEditForm',
  14. 'ProviderBulkEditForm',
  15. 'ProviderAccountBulkEditForm',
  16. 'ProviderNetworkBulkEditForm',
  17. )
  18. class ProviderBulkEditForm(NetBoxModelBulkEditForm):
  19. asns = DynamicModelMultipleChoiceField(
  20. queryset=ASN.objects.all(),
  21. label=_('ASNs'),
  22. required=False
  23. )
  24. description = forms.CharField(
  25. label=_('Description'),
  26. max_length=200,
  27. required=False
  28. )
  29. comments = CommentField()
  30. model = Provider
  31. fieldsets = (
  32. (None, ('asns', 'description')),
  33. )
  34. nullable_fields = (
  35. 'asns', 'description', 'comments',
  36. )
  37. class ProviderAccountBulkEditForm(NetBoxModelBulkEditForm):
  38. provider = DynamicModelChoiceField(
  39. label=_('Provider'),
  40. queryset=Provider.objects.all(),
  41. required=False
  42. )
  43. description = forms.CharField(
  44. label=_('Description'),
  45. max_length=200,
  46. required=False
  47. )
  48. comments = CommentField()
  49. model = ProviderAccount
  50. fieldsets = (
  51. (None, ('provider', 'description')),
  52. )
  53. nullable_fields = (
  54. 'description', 'comments',
  55. )
  56. class ProviderNetworkBulkEditForm(NetBoxModelBulkEditForm):
  57. provider = DynamicModelChoiceField(
  58. label=_('Provider'),
  59. queryset=Provider.objects.all(),
  60. required=False
  61. )
  62. service_id = forms.CharField(
  63. max_length=100,
  64. required=False,
  65. label=_('Service ID')
  66. )
  67. description = forms.CharField(
  68. label=_('Description'),
  69. max_length=200,
  70. required=False
  71. )
  72. comments = CommentField()
  73. model = ProviderNetwork
  74. fieldsets = (
  75. (None, ('provider', 'service_id', 'description')),
  76. )
  77. nullable_fields = (
  78. 'service_id', 'description', 'comments',
  79. )
  80. class CircuitTypeBulkEditForm(NetBoxModelBulkEditForm):
  81. color = ColorField(
  82. label=_('Color'),
  83. required=False
  84. )
  85. description = forms.CharField(
  86. label=_('Description'),
  87. max_length=200,
  88. required=False
  89. )
  90. model = CircuitType
  91. fieldsets = (
  92. (None, ('color', 'description')),
  93. )
  94. nullable_fields = ('color', 'description')
  95. class CircuitBulkEditForm(NetBoxModelBulkEditForm):
  96. type = DynamicModelChoiceField(
  97. label=_('Type'),
  98. queryset=CircuitType.objects.all(),
  99. required=False
  100. )
  101. provider = DynamicModelChoiceField(
  102. label=_('Provider'),
  103. queryset=Provider.objects.all(),
  104. required=False
  105. )
  106. provider_account = DynamicModelChoiceField(
  107. label=_('Provider account'),
  108. queryset=ProviderAccount.objects.all(),
  109. required=False,
  110. query_params={
  111. 'provider': '$provider'
  112. }
  113. )
  114. status = forms.ChoiceField(
  115. label=_('Status'),
  116. choices=add_blank_choice(CircuitStatusChoices),
  117. required=False,
  118. initial=''
  119. )
  120. tenant = DynamicModelChoiceField(
  121. label=_('Tenant'),
  122. queryset=Tenant.objects.all(),
  123. required=False
  124. )
  125. install_date = forms.DateField(
  126. label=_('Install date'),
  127. required=False,
  128. widget=DatePicker()
  129. )
  130. termination_date = forms.DateField(
  131. label=_('Termination date'),
  132. required=False,
  133. widget=DatePicker()
  134. )
  135. commit_rate = forms.IntegerField(
  136. required=False,
  137. label=_('Commit rate (Kbps)'),
  138. widget=NumberWithOptions(
  139. options=CircuitCommitRateChoices
  140. )
  141. )
  142. description = forms.CharField(
  143. label=_('Description'),
  144. max_length=100,
  145. required=False
  146. )
  147. comments = CommentField()
  148. model = Circuit
  149. fieldsets = (
  150. (_('Circuit'), ('provider', 'type', 'status', 'description')),
  151. (_('Service Parameters'), ('provider_account', 'install_date', 'termination_date', 'commit_rate')),
  152. (_('Tenancy'), ('tenant',)),
  153. )
  154. nullable_fields = (
  155. 'tenant', 'commit_rate', 'description', 'comments',
  156. )