from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Div, HTML, Field, Submit from django import forms from django.conf import settings from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from ckeditor.widgets import CKEditorWidget from .mixins import RequestNotifiable from .models import ( Request, STATUS_NEW, STATUS_REJECTED, STATUS_PROCESSED, STATUS_IN_PROCESSING ) # -------------------------------- Client-side forms -----------------------------------# class ContactUsForm(RequestNotifiable, forms.ModelForm): field_template = 'bootstrap/forms/product_search.html' def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.form_action = reverse_lazy('contact_us:send') self.helper.form_method = 'post' self.helper.layout = Layout( HTML("""
Не нашли нужную программу или разработчика? Заполните форму и с Вами свяжется наш специалист.
"""), Field('name', css_class="left-menu__text", placeholder=_("Имя"), template=self.field_template), Field('email', css_class="left-menu__text", placeholder=_("Email"), template=self.field_template), Field('subject', css_class="left-menu__text", placeholder=_("Название продукта"), template=self.field_template), Field('phone', css_class="left-menu__text", placeholder=_("Номер телефона"), template=self.field_template), Submit('send', _("Отправить"), css_class="left-menu__btn") ) super(ContactUsForm, self).__init__(*args, **kwargs) self.init_fields(self.fields) def init_fields(self, fields): for field_name in fields: fields[field_name].required = True def save(self, commit=True): self.instance.status = STATUS_NEW return super().save(commit) def send_email(self, request, files=()): context = { 'from_email': self.instance.email, 'bcc': self.get_def_email(settings) if self.get_def_email(settings) is not None else (), 'recipients': self.get_def_email(settings) if self.get_def_email(settings) is not None else (), 'context': { 'name': self.instance.name, 'email': self.instance.email, 'subject': self.instance.subject, 'phone': self.instance.message, }, 'send_at_date': self.instance.create_at, } self.send_request_notification( context, ) @property def is_request_sent(self): return self.notification_sent class Meta: model = Request fields = ('name', 'email', 'subject', 'phone')