bulk_import.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. from django.contrib.contenttypes.models import ContentType
  2. from django.utils.translation import gettext_lazy as _
  3. from netbox.forms import NetBoxModelImportForm
  4. from tenancy.models import *
  5. from utilities.forms.fields import CSVContentTypeField, CSVModelChoiceField, SlugField
  6. __all__ = (
  7. 'ContactAssignmentImportForm',
  8. 'ContactImportForm',
  9. 'ContactGroupImportForm',
  10. 'ContactRoleImportForm',
  11. 'TenantImportForm',
  12. 'TenantGroupImportForm',
  13. )
  14. #
  15. # Tenants
  16. #
  17. class TenantGroupImportForm(NetBoxModelImportForm):
  18. parent = CSVModelChoiceField(
  19. label=_('Parent'),
  20. queryset=TenantGroup.objects.all(),
  21. required=False,
  22. to_field_name='name',
  23. help_text=_('Parent group')
  24. )
  25. slug = SlugField()
  26. class Meta:
  27. model = TenantGroup
  28. fields = ('name', 'slug', 'parent', 'description', 'tags')
  29. class TenantImportForm(NetBoxModelImportForm):
  30. slug = SlugField()
  31. group = CSVModelChoiceField(
  32. label=_('Group'),
  33. queryset=TenantGroup.objects.all(),
  34. required=False,
  35. to_field_name='name',
  36. help_text=_('Assigned group')
  37. )
  38. class Meta:
  39. model = Tenant
  40. fields = ('name', 'slug', 'group', 'description', 'comments', 'tags')
  41. #
  42. # Contacts
  43. #
  44. class ContactGroupImportForm(NetBoxModelImportForm):
  45. parent = CSVModelChoiceField(
  46. label=_('Parent'),
  47. queryset=ContactGroup.objects.all(),
  48. required=False,
  49. to_field_name='name',
  50. help_text=_('Parent group')
  51. )
  52. slug = SlugField()
  53. class Meta:
  54. model = ContactGroup
  55. fields = ('name', 'slug', 'parent', 'description', 'tags')
  56. class ContactRoleImportForm(NetBoxModelImportForm):
  57. slug = SlugField()
  58. class Meta:
  59. model = ContactRole
  60. fields = ('name', 'slug', 'description')
  61. class ContactImportForm(NetBoxModelImportForm):
  62. group = CSVModelChoiceField(
  63. label=_('Group'),
  64. queryset=ContactGroup.objects.all(),
  65. required=False,
  66. to_field_name='name',
  67. help_text=_('Assigned group')
  68. )
  69. class Meta:
  70. model = Contact
  71. fields = ('name', 'title', 'phone', 'email', 'address', 'link', 'group', 'description', 'comments', 'tags')
  72. class ContactAssignmentImportForm(NetBoxModelImportForm):
  73. object_type = CSVContentTypeField(
  74. queryset=ContentType.objects.all(),
  75. help_text=_("One or more assigned object types")
  76. )
  77. contact = CSVModelChoiceField(
  78. queryset=Contact.objects.all(),
  79. to_field_name='name',
  80. help_text=_('Assigned contact')
  81. )
  82. role = CSVModelChoiceField(
  83. queryset=ContactRole.objects.all(),
  84. to_field_name='name',
  85. help_text=_('Assigned role')
  86. )
  87. class Meta:
  88. model = ContactAssignment
  89. fields = ('object_type', 'object_id', 'contact', 'priority', 'role')