You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

76 lines
2.9 KiB

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("""
<div class="left-menu__title">
Не нашли нужную программу или разработчика?
Заполните форму и с Вами свяжется наш специалист.
</div>"""),
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')