1from django import forms 2from django.contrib.contenttypes.models import ContentType 3 4from extras.choices import * 5from extras.models import * 6from extras.utils import FeatureQuery 7from utilities.forms import ( 8 BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorField, ContentTypeChoiceField, StaticSelect, 9) 10 11__all__ = ( 12 'ConfigContextBulkEditForm', 13 'CustomFieldBulkEditForm', 14 'CustomLinkBulkEditForm', 15 'ExportTemplateBulkEditForm', 16 'JournalEntryBulkEditForm', 17 'TagBulkEditForm', 18 'WebhookBulkEditForm', 19) 20 21 22class CustomFieldBulkEditForm(BootstrapMixin, BulkEditForm): 23 pk = forms.ModelMultipleChoiceField( 24 queryset=CustomField.objects.all(), 25 widget=forms.MultipleHiddenInput 26 ) 27 description = forms.CharField( 28 required=False 29 ) 30 required = forms.NullBooleanField( 31 required=False, 32 widget=BulkEditNullBooleanSelect() 33 ) 34 weight = forms.IntegerField( 35 required=False 36 ) 37 38 class Meta: 39 nullable_fields = [] 40 41 42class CustomLinkBulkEditForm(BootstrapMixin, BulkEditForm): 43 pk = forms.ModelMultipleChoiceField( 44 queryset=CustomLink.objects.all(), 45 widget=forms.MultipleHiddenInput 46 ) 47 content_type = ContentTypeChoiceField( 48 queryset=ContentType.objects.all(), 49 limit_choices_to=FeatureQuery('custom_fields'), 50 required=False 51 ) 52 new_window = forms.NullBooleanField( 53 required=False, 54 widget=BulkEditNullBooleanSelect() 55 ) 56 weight = forms.IntegerField( 57 required=False 58 ) 59 button_class = forms.ChoiceField( 60 choices=CustomLinkButtonClassChoices, 61 required=False, 62 widget=StaticSelect() 63 ) 64 65 class Meta: 66 nullable_fields = [] 67 68 69class ExportTemplateBulkEditForm(BootstrapMixin, BulkEditForm): 70 pk = forms.ModelMultipleChoiceField( 71 queryset=ExportTemplate.objects.all(), 72 widget=forms.MultipleHiddenInput 73 ) 74 content_type = ContentTypeChoiceField( 75 queryset=ContentType.objects.all(), 76 limit_choices_to=FeatureQuery('custom_fields'), 77 required=False 78 ) 79 description = forms.CharField( 80 max_length=200, 81 required=False 82 ) 83 mime_type = forms.CharField( 84 max_length=50, 85 required=False 86 ) 87 file_extension = forms.CharField( 88 max_length=15, 89 required=False 90 ) 91 as_attachment = forms.NullBooleanField( 92 required=False, 93 widget=BulkEditNullBooleanSelect() 94 ) 95 96 class Meta: 97 nullable_fields = ['description', 'mime_type', 'file_extension'] 98 99 100class WebhookBulkEditForm(BootstrapMixin, BulkEditForm): 101 pk = forms.ModelMultipleChoiceField( 102 queryset=Webhook.objects.all(), 103 widget=forms.MultipleHiddenInput 104 ) 105 enabled = forms.NullBooleanField( 106 required=False, 107 widget=BulkEditNullBooleanSelect() 108 ) 109 type_create = forms.NullBooleanField( 110 required=False, 111 widget=BulkEditNullBooleanSelect() 112 ) 113 type_update = forms.NullBooleanField( 114 required=False, 115 widget=BulkEditNullBooleanSelect() 116 ) 117 type_delete = forms.NullBooleanField( 118 required=False, 119 widget=BulkEditNullBooleanSelect() 120 ) 121 http_method = forms.ChoiceField( 122 choices=WebhookHttpMethodChoices, 123 required=False 124 ) 125 payload_url = forms.CharField( 126 required=False 127 ) 128 ssl_verification = forms.NullBooleanField( 129 required=False, 130 widget=BulkEditNullBooleanSelect() 131 ) 132 secret = forms.CharField( 133 required=False 134 ) 135 ca_file_path = forms.CharField( 136 required=False 137 ) 138 139 class Meta: 140 nullable_fields = ['secret', 'ca_file_path'] 141 142 143class TagBulkEditForm(BootstrapMixin, BulkEditForm): 144 pk = forms.ModelMultipleChoiceField( 145 queryset=Tag.objects.all(), 146 widget=forms.MultipleHiddenInput 147 ) 148 color = ColorField( 149 required=False 150 ) 151 description = forms.CharField( 152 max_length=200, 153 required=False 154 ) 155 156 class Meta: 157 nullable_fields = ['description'] 158 159 160class ConfigContextBulkEditForm(BootstrapMixin, BulkEditForm): 161 pk = forms.ModelMultipleChoiceField( 162 queryset=ConfigContext.objects.all(), 163 widget=forms.MultipleHiddenInput 164 ) 165 weight = forms.IntegerField( 166 required=False, 167 min_value=0 168 ) 169 is_active = forms.NullBooleanField( 170 required=False, 171 widget=BulkEditNullBooleanSelect() 172 ) 173 description = forms.CharField( 174 required=False, 175 max_length=100 176 ) 177 178 class Meta: 179 nullable_fields = [ 180 'description', 181 ] 182 183 184class JournalEntryBulkEditForm(BootstrapMixin, BulkEditForm): 185 pk = forms.ModelMultipleChoiceField( 186 queryset=JournalEntry.objects.all(), 187 widget=forms.MultipleHiddenInput 188 ) 189 kind = forms.ChoiceField( 190 choices=JournalEntryKindChoices, 191 required=False 192 ) 193 comments = forms.CharField( 194 required=False, 195 widget=forms.Textarea() 196 ) 197 198 class Meta: 199 nullable_fields = [] 200