from django import forms from django.contrib.auth.forms import AuthenticationForm from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ValidationError from django.forms import widgets object_type_choices = ( ('new', _('Новостройка')), ('old', _('Вторичный объект')), ) project_type_choices = ( ('new', _('Новостройка')), ('old', _('Вторичный объект')), ) class ProjectRequestForm(forms.Form): # account_type = forms.ChoiceField(choices=account_type_choices, initial='sender', required=True) firstname = forms.CharField(label=_('Имя'), required=True) lastname = forms.CharField(label=_('Фамилия'), required=True) project_role = forms.CharField(label=_('Роль в проекте'), required=True) phone = forms.CharField(label=_('Телефон'), required=True) email = forms.EmailField(label=_('Email'), required=True) company_name = forms.CharField(label=_('Название компании'), required=True) city = forms.CharField(label=_('Город'), required=True) state = forms.CharField(label=_('Штат (Регион)'), required=True) site_url = forms.URLField(label=_('Сайт компании'), required=True) area = forms.IntegerField(label=_('Площадь проекта'), required=True) object_type = forms.ChoiceField(label=_('Тип объекта'), choices=object_type_choices, required=True) rates_set_D = forms.DateField(label=_('Срок действия набора ставок (приблизительный)'), required=True) finish_construction_D = forms.DateField(label=_('Дата окончания строительства (приблизительная)'), required=True) project_type = forms.ChoiceField(label=_('Тип проекта'), choices=project_type_choices, required=True) construction_budget = forms.IntegerField(label=_('Бюджет строительства'), required=True) description = forms.CharField(label=_('Описание проекта'), required=True) planes = forms.FileField( label=_('Существующие и предлагаемые планы'), required=True, # widget=widgets.FileInput(attrs={'multiple': True}), help_text=_('Пожалуйста загрузите любые существующие или предлагаемые планы, если это применимо'), ) photos = forms.FileField( label=_('Фото'), required=True, # widget=widgets.FileInput(attrs={'multiple': True}), help_text=_('Пожалуйста загрузите любые фото, относящиеся к проекту') ) documents = forms.FileField( label=_('Документы'), required=True, # widget=widgets.FileInput(attrs={'multiple': True}), help_text=_('Пожалуйста загрузите любые документы, относящиеся к проекту') ) use_entered_contacts_for_conection = forms.BooleanField( label=_('Использовать данные, указанные в разделе ЛИЧНЫЕ ДАННЫЕ'), initial=True, required=True ) project_person_firstname = forms.CharField(label=_('Имя'), required=False) project_person_lastname = forms.CharField(label=_('Фамилия'), required=False) project_person_role = forms.CharField(label=_('Роль в проекте'), required=False) project_person_phone = forms.CharField(label=_('Телефон'), required=False) agreement = forms.BooleanField( label=_('Принимаю пользовательское соглашение и принимаю условия обработки личных данных'), initial=False, required=True ) # def clean(self): # cleaned_data = super().clean() # i = 0 # names = list(cleaned_data.keys()) # while i < len(names): # if not cleaned_data[names[i]]: # if self.fields[names[i]].required: # self.add_error(names[i], _('Обязательное поле')) # i += 1 # # if cleaned_data and 'confirm_password' in cleaned_data and 'password' in cleaned_data: # if cleaned_data['confirm_password'] != cleaned_data['password']: # self.add_error("password", _('Пароль и подтверждение пароля не совпадают')) # self.add_error("confirm_password", _('Пароль и подтверждение пароля не совпадают')) # # if cleaned_data and 'email' in cleaned_data: # users = User.objects.filter(email=cleaned_data['email']) # if users: # self.add_error('email', _("Пользователь с указанным email уже существует"))