123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from django import forms
- from django.db.models import Count
- from extras.forms import CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
- from utilities.forms import BootstrapMixin, BulkImportForm, CommentField, CSVDataField, FilterChoiceField, SlugField
- from .models import Tenant, TenantGroup
- #
- # Tenant groups
- #
- class TenantGroupForm(BootstrapMixin, forms.ModelForm):
- slug = SlugField()
- class Meta:
- model = TenantGroup
- fields = ['name', 'slug']
- #
- # Tenants
- #
- class TenantForm(BootstrapMixin, CustomFieldForm):
- slug = SlugField()
- comments = CommentField()
- class Meta:
- model = Tenant
- fields = ['name', 'slug', 'group', 'description', 'comments']
- class TenantFromCSVForm(forms.ModelForm):
- group = forms.ModelChoiceField(TenantGroup.objects.all(), required=False, to_field_name='name',
- error_messages={'invalid_choice': 'Group not found.'})
- class Meta:
- model = Tenant
- fields = ['name', 'slug', 'group', 'description']
- class TenantImportForm(BootstrapMixin, BulkImportForm):
- csv = CSVDataField(csv_form=TenantFromCSVForm)
- class TenantBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
- pk = forms.ModelMultipleChoiceField(queryset=Tenant.objects.all(), widget=forms.MultipleHiddenInput)
- group = forms.ModelChoiceField(queryset=TenantGroup.objects.all(), required=False)
- class Meta:
- nullable_fields = ['group']
- class TenantFilterForm(BootstrapMixin, CustomFieldFilterForm):
- model = Tenant
- q = forms.CharField(required=False, label='Search')
- group = FilterChoiceField(queryset=TenantGroup.objects.annotate(filter_count=Count('tenants')),
- to_field_name='slug', null_option=(0, 'None'))
|