diff --git a/ServicesApp/forms.py b/ServicesApp/forms.py new file mode 100644 index 0000000..cfcb942 --- /dev/null +++ b/ServicesApp/forms.py @@ -0,0 +1,95 @@ +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 уже существует")) + + diff --git a/ServicesApp/urls.py b/ServicesApp/urls.py index 1bb9ade..c7c497e 100644 --- a/ServicesApp/urls.py +++ b/ServicesApp/urls.py @@ -6,6 +6,7 @@ from .views import * urlpatterns = [ path('section//', section_view, name='section_page'), + path('project_request/', page_project_request_View, name='page_project_request'), # path('page//', StaticPageView, name='static_page'), # path('test_code', test_code, name='test_code'), ] \ No newline at end of file diff --git a/ServicesApp/views.py b/ServicesApp/views.py index 49cf574..5ff9a00 100644 --- a/ServicesApp/views.py +++ b/ServicesApp/views.py @@ -7,6 +7,24 @@ from .models import * from django.conf import settings from GeneralApp.funcs import get_inter_http_respose + +def page_project_request_View(request): + from .forms import ProjectRequestForm + + project_request_form = ProjectRequestForm() + Dict = { + 'project_request_form': project_request_form + } + + # breadcrumbs_Dict = { + # } + # Dict.update({'breadcrumbs': breadcrumbs_Dict}) + + t = loader.get_template('pages/p_project_request.html') + return get_inter_http_respose(t, Dict, request) + + + def section_view(request, url): try: diff --git a/templates/forms/f_project_request.html b/templates/forms/f_project_request.html new file mode 100644 index 0000000..fa42912 --- /dev/null +++ b/templates/forms/f_project_request.html @@ -0,0 +1,3 @@ +
+ {{ project_request_form.as_div }} +
diff --git a/templates/pages/p_project_request.html b/templates/pages/p_project_request.html new file mode 100644 index 0000000..b42c8e7 --- /dev/null +++ b/templates/pages/p_project_request.html @@ -0,0 +1,4 @@ +{% extends 'tb_base.html' %} +{% block CONTENT %} + {% include "forms/f_project_request.html" %} +{% endblock %} \ No newline at end of file