mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
from django import forms
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.postgres.forms import SimpleArrayField
|
|
from django.utils.safestring import mark_safe
|
|
|
|
from extras.choices import CustomFieldTypeChoices
|
|
from extras.models import *
|
|
from extras.utils import FeatureQuery
|
|
from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelForm, CSVMultipleContentTypeField, SlugField
|
|
|
|
__all__ = (
|
|
'CustomFieldCSVForm',
|
|
'CustomLinkCSVForm',
|
|
'ExportTemplateCSVForm',
|
|
'TagCSVForm',
|
|
'WebhookCSVForm',
|
|
)
|
|
|
|
|
|
class CustomFieldCSVForm(CSVModelForm):
|
|
content_types = CSVMultipleContentTypeField(
|
|
queryset=ContentType.objects.all(),
|
|
limit_choices_to=FeatureQuery('custom_fields'),
|
|
help_text="One or more assigned object types"
|
|
)
|
|
type = CSVChoiceField(
|
|
choices=CustomFieldTypeChoices,
|
|
help_text='Field data type (e.g. text, integer, etc.)'
|
|
)
|
|
choices = SimpleArrayField(
|
|
base_field=forms.CharField(),
|
|
required=False,
|
|
help_text='Comma-separated list of field choices'
|
|
)
|
|
|
|
class Meta:
|
|
model = CustomField
|
|
fields = (
|
|
'name', 'label', 'type', 'content_types', 'required', 'description', 'weight', 'filter_logic', 'default',
|
|
'choices', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex',
|
|
)
|
|
|
|
|
|
class CustomLinkCSVForm(CSVModelForm):
|
|
content_type = CSVContentTypeField(
|
|
queryset=ContentType.objects.all(),
|
|
limit_choices_to=FeatureQuery('custom_links'),
|
|
help_text="Assigned object type"
|
|
)
|
|
|
|
class Meta:
|
|
model = CustomLink
|
|
fields = (
|
|
'name', 'content_type', 'enabled', 'weight', 'group_name', 'button_class', 'new_window', 'link_text',
|
|
'link_url',
|
|
)
|
|
|
|
|
|
class ExportTemplateCSVForm(CSVModelForm):
|
|
content_type = CSVContentTypeField(
|
|
queryset=ContentType.objects.all(),
|
|
limit_choices_to=FeatureQuery('export_templates'),
|
|
help_text="Assigned object type"
|
|
)
|
|
|
|
class Meta:
|
|
model = ExportTemplate
|
|
fields = (
|
|
'name', 'content_type', 'description', 'mime_type', 'file_extension', 'as_attachment', 'template_code',
|
|
)
|
|
|
|
|
|
class WebhookCSVForm(CSVModelForm):
|
|
content_types = CSVMultipleContentTypeField(
|
|
queryset=ContentType.objects.all(),
|
|
limit_choices_to=FeatureQuery('webhooks'),
|
|
help_text="One or more assigned object types"
|
|
)
|
|
|
|
class Meta:
|
|
model = Webhook
|
|
fields = (
|
|
'name', 'enabled', 'content_types', 'type_create', 'type_update', 'type_delete', 'payload_url',
|
|
'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret', 'ssl_verification',
|
|
'ca_file_path'
|
|
)
|
|
|
|
|
|
class TagCSVForm(CSVModelForm):
|
|
slug = SlugField()
|
|
|
|
class Meta:
|
|
model = Tag
|
|
fields = ('name', 'slug', 'color', 'description')
|
|
help_texts = {
|
|
'color': mark_safe('RGB color in hexadecimal (e.g. <code>00ff00</code>)'),
|
|
}
|