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.type.author.email, 'bcc': self.get_def_email(settings) if self.get_def_email(settings) is not None else (), 'recipients': self.instance.type.author.email, 'context': { 'username': self.instance.name, 'email': self.instance.email, 'subject': self.instance.subject, 'message': self.instance.message, 'sent_at': self.instance.create_at, 'attachments': files, 'edit_link': request.scheme + "://" + request.get_host() + reverse_lazy( 'admin:{}_{}_change'.format( self.instance._meta.app_label, self.instance._meta.object_name.lower()), args=(self.instance.id,) ).__str__(), }, 'files': [], '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')