Coverage for tenancy/forms/bulk_import.py: 100%
40 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from django import forms
2from django.contrib.contenttypes.models import ContentType
3from django.utils.translation import gettext_lazy as _
5from netbox.forms import (
6 NestedGroupModelImportForm,
7 NetBoxModelImportForm,
8 OrganizationalModelImportForm,
9 PrimaryModelImportForm,
10)
11from utilities.forms.fields import CSVContentTypeField, CSVModelChoiceField, CSVModelMultipleChoiceField, SlugField
13from ..models import *
15__all__ = (
16 'ContactAssignmentImportForm',
17 'ContactGroupImportForm',
18 'ContactImportForm',
19 'ContactRoleImportForm',
20 'TenantGroupImportForm',
21 'TenantImportForm',
22)
25#
26# Tenants
27#
29class TenantGroupImportForm(NestedGroupModelImportForm):
30 parent = CSVModelChoiceField(
31 label=_('Parent'),
32 queryset=TenantGroup.objects.all(),
33 required=False,
34 to_field_name='name',
35 help_text=_('Parent group'),
36 )
38 class Meta:
39 model = TenantGroup
40 fields = ('name', 'slug', 'parent', 'description', 'owner', 'comments', 'tags')
43class TenantImportForm(PrimaryModelImportForm):
44 slug = SlugField()
45 group = CSVModelChoiceField(
46 label=_('Group'),
47 queryset=TenantGroup.objects.all(),
48 required=False,
49 to_field_name='name',
50 help_text=_('Assigned group'),
51 )
53 class Meta:
54 model = Tenant
55 fields = ('name', 'slug', 'group', 'description', 'owner', 'comments', 'tags')
58#
59# Contacts
60#
62class ContactGroupImportForm(NestedGroupModelImportForm):
63 parent = CSVModelChoiceField(
64 label=_('Parent'),
65 queryset=ContactGroup.objects.all(),
66 required=False,
67 to_field_name='name',
68 help_text=_('Parent group'),
69 )
71 class Meta:
72 model = ContactGroup
73 fields = ('name', 'slug', 'parent', 'description', 'owner', 'comments', 'tags')
76class ContactRoleImportForm(OrganizationalModelImportForm):
78 class Meta:
79 model = ContactRole
80 fields = ('name', 'slug', 'description', 'owner', 'comments', 'tags')
83class ContactImportForm(PrimaryModelImportForm):
84 groups = CSVModelMultipleChoiceField(
85 queryset=ContactGroup.objects.all(),
86 required=False,
87 to_field_name='name',
88 help_text=_('Group names separated by commas, encased with double quotes (e.g. "Group 1,Group 2")'),
89 )
90 link = forms.URLField(
91 label=_('Link'),
92 assume_scheme='https',
93 required=False,
94 )
96 class Meta:
97 model = Contact
98 fields = (
99 'name', 'title', 'phone', 'email', 'address', 'link', 'groups', 'description', 'owner', 'comments', 'tags',
100 )
103class ContactAssignmentImportForm(NetBoxModelImportForm):
104 object_type = CSVContentTypeField(
105 queryset=ContentType.objects.all(),
106 help_text=_("One or more assigned object types")
107 )
108 contact = CSVModelChoiceField(
109 queryset=Contact.objects.all(),
110 to_field_name='name',
111 help_text=_('Assigned contact')
112 )
113 role = CSVModelChoiceField(
114 queryset=ContactRole.objects.all(),
115 to_field_name='name',
116 help_text=_('Assigned role')
117 )
119 class Meta:
120 model = ContactAssignment
121 fields = ('object_type', 'object_id', 'contact', 'priority', 'role')