from django import forms from django.forms import ModelForm import itertools from .models import User, ContractorFinancialInfo from common.models import Location from projects.models import Project, BuildingClassfication, ConstructionType from specializations.models import Specialization class UserEditForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if kwargs.get('instance'): if kwargs.get('instance').is_contractor(): self.fields['contractor_specializations'].queryset = kwargs.get('instance').contractor_specializations.all() class Meta: model = User fields = ( 'first_name', 'last_name', 'patronym', 'location', 'date_of_birth', 'website', 'skype', 'avatar', 'contractor_specializations', 'cro', 'phone', 'gender', ) widgets = { 'date_of_birth': forms.SelectDateWidget(years=range(1940, 2015)), # 'contractor_specializations': forms.Select(), } class ContractorFilterForm(forms.Form): CONTRACTOR_ORDER_CHOICES = ( ('', 'Сортировать по...'), ('name', 'Названию'), ('created', 'Дате размещения'), ('views', 'Просмотрам'), ('reviews', 'Отзывам'), ('rating', 'Рейтингу'), # ('project_number', 'Кол-ву выполн. проектов'), ) PARTY_TYPES = ( ('all', 'Все'), ('teams', 'Группы'), ('contractors', 'Исполнители'), ) order_by = forms.ChoiceField(required=False, choices=CONTRACTOR_ORDER_CHOICES) last_order_by = forms.ChoiceField(required=False, choices=CONTRACTOR_ORDER_CHOICES) reverse_order = forms.BooleanField(required=False) specialization = forms.ModelChoiceField( # queryset=Specialization.objects.root_nodes()[0].get_descendants(), queryset=Specialization.objects, # TODO: Tmp, required=False, ) location = forms.ModelChoiceField( # queryset=Location.objects.root_nodes()[0].get_descendants(), queryset=Location.objects, # TODO: Tmp required=False, ) building_classification = forms.ModelChoiceField( queryset=BuildingClassfication.objects, widget=forms.Select(attrs={'class': 'selectpicker'}), required=False, empty_label='', ) work_type = forms.ChoiceField( choices=tuple(itertools.chain((('',''),), Project.WORK_TYPES)), widget=forms.Select(attrs={'class': 'selectpicker'}), required=False, ) construction_type = forms.ModelChoiceField( queryset=ConstructionType.objects, widget=forms.Select(attrs={'class': 'selectpicker'}), required=False, empty_label='', ) cro = forms.BooleanField(required=False) party_types = forms.ChoiceField( choices=PARTY_TYPES, required=False, ) last_party_types = forms.ChoiceField( choices=PARTY_TYPES, required=False, ) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) class ContractorFinancicalInfoForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['residency'].choices = self.fields['residency'].choices[1:] self.fields['legal_status'].choices = self.fields['legal_status'].choices[1:] # self.fields['residency'].empty_label = None # self.fields['residency'].widget.choices = self.fields['residency'].choices class Meta: model = ContractorFinancialInfo fields = ( 'fio', 'date_of_birth', 'phone', 'residency', 'legal_status', 'passport_series', 'passport_number', 'subdivision_code', 'passport_issued_by', 'passport_issue_date', 'inn', 'yandex_money', 'credit_card_number', 'passport_scan', ) widgets = { 'residency': forms.RadioSelect(), 'legal_status': forms.RadioSelect(), }