models.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. from django import forms
  2. from netbox.forms import NetBoxModelForm
  3. from tenancy.models import *
  4. from utilities.forms import (
  5. BootstrapMixin, CommentField, DynamicModelChoiceField, SlugField, SmallTextarea, StaticSelect,
  6. )
  7. __all__ = (
  8. 'ContactAssignmentForm',
  9. 'ContactForm',
  10. 'ContactGroupForm',
  11. 'ContactRoleForm',
  12. 'TenantForm',
  13. 'TenantGroupForm',
  14. )
  15. #
  16. # Tenants
  17. #
  18. class TenantGroupForm(NetBoxModelForm):
  19. parent = DynamicModelChoiceField(
  20. queryset=TenantGroup.objects.all(),
  21. required=False
  22. )
  23. slug = SlugField()
  24. class Meta:
  25. model = TenantGroup
  26. fields = [
  27. 'parent', 'name', 'slug', 'description', 'tags',
  28. ]
  29. class TenantForm(NetBoxModelForm):
  30. slug = SlugField()
  31. group = DynamicModelChoiceField(
  32. queryset=TenantGroup.objects.all(),
  33. required=False
  34. )
  35. comments = CommentField()
  36. fieldsets = (
  37. ('Tenant', ('name', 'slug', 'group', 'description', 'tags')),
  38. )
  39. class Meta:
  40. model = Tenant
  41. fields = (
  42. 'name', 'slug', 'group', 'description', 'comments', 'tags',
  43. )
  44. #
  45. # Contacts
  46. #
  47. class ContactGroupForm(NetBoxModelForm):
  48. parent = DynamicModelChoiceField(
  49. queryset=ContactGroup.objects.all(),
  50. required=False
  51. )
  52. slug = SlugField()
  53. class Meta:
  54. model = ContactGroup
  55. fields = ('parent', 'name', 'slug', 'description', 'tags')
  56. class ContactRoleForm(NetBoxModelForm):
  57. slug = SlugField()
  58. class Meta:
  59. model = ContactRole
  60. fields = ('name', 'slug', 'description', 'tags')
  61. class ContactForm(NetBoxModelForm):
  62. group = DynamicModelChoiceField(
  63. queryset=ContactGroup.objects.all(),
  64. required=False
  65. )
  66. comments = CommentField()
  67. fieldsets = (
  68. ('Contact', ('group', 'name', 'title', 'phone', 'email', 'address', 'link', 'tags')),
  69. )
  70. class Meta:
  71. model = Contact
  72. fields = (
  73. 'group', 'name', 'title', 'phone', 'email', 'address', 'link', 'comments', 'tags',
  74. )
  75. widgets = {
  76. 'address': SmallTextarea(attrs={'rows': 3}),
  77. }
  78. class ContactAssignmentForm(BootstrapMixin, forms.ModelForm):
  79. group = DynamicModelChoiceField(
  80. queryset=ContactGroup.objects.all(),
  81. required=False,
  82. initial_params={
  83. 'contacts': '$contact'
  84. }
  85. )
  86. contact = DynamicModelChoiceField(
  87. queryset=Contact.objects.all(),
  88. query_params={
  89. 'group_id': '$group'
  90. }
  91. )
  92. role = DynamicModelChoiceField(
  93. queryset=ContactRole.objects.all()
  94. )
  95. class Meta:
  96. model = ContactAssignment
  97. fields = (
  98. 'group', 'contact', 'role', 'priority',
  99. )
  100. widgets = {
  101. 'priority': StaticSelect(),
  102. }