translate request status items, fix email context and reffactor form phone field

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 8de73a32fc
commit fdccd58c57
  1. 29
      contact_us/forms.py
  2. 34
      contact_us/models.py

@ -1,18 +1,14 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, HTML, Field, Submit, Hidden from crispy_forms.layout import Layout, HTML, Field, Submit, Hidden
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from ckeditor.widgets import CKEditorWidget
from .mixins import RequestNotifiable from .mixins import RequestNotifiable
from .models import ( from .models import (
Request, Request, STATUS_NEW
STATUS_NEW, STATUS_REJECTED,
STATUS_PROCESSED, STATUS_IN_PROCESSING
) )
# -------------------------------- Client-side forms -----------------------------------# # -------------------------------- Client-side forms -----------------------------------#
@ -29,16 +25,11 @@ class ContactUsForm(RequestNotifiable, forms.ModelForm):
self.helper.form_action = reverse_lazy('contact_us:send') self.helper.form_action = reverse_lazy('contact_us:send')
self.helper.form_method = 'post' self.helper.form_method = 'post'
self.helper.layout = Layout( self.helper.layout = Layout(
HTML("""
<div class="left-menu__title">
Не нашли нужную программу или разработчика?
Заполните форму и с Вами свяжется наш специалист.
</div>"""),
Hidden('next', reverse_lazy(self.next)), Hidden('next', reverse_lazy(self.next)),
Field('name', css_class="left-menu__text", placeholder=_("Имя"), template=self.field_template), 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('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('subject', css_class="left-menu__text", placeholder=_("Название продукта"), template=self.field_template),
Field('phone', css_class="left-menu__text", placeholder=_("Номер телефона"), template=self.field_template), Field('phone', css_class="left-menu__text", placeholder=_("+79781234567"), template=self.field_template),
Submit('send', _("Отправить"), css_class="left-menu__btn") Submit('send', _("Отправить"), css_class="left-menu__btn")
) )
super(ContactUsForm, self).__init__(*args, **kwargs) super(ContactUsForm, self).__init__(*args, **kwargs)
@ -46,7 +37,8 @@ class ContactUsForm(RequestNotifiable, forms.ModelForm):
def init_fields(self, fields): def init_fields(self, fields):
for field_name in fields: for field_name in fields:
fields[field_name].required = True if field_name != "phone":
fields[field_name].required = True
def is_valid(self): def is_valid(self):
return super().is_valid() return super().is_valid()
@ -57,14 +49,13 @@ class ContactUsForm(RequestNotifiable, forms.ModelForm):
def send_email(self, request): def send_email(self, request):
context = { context = {
'from_email': self.instance.email, 'from_email': settings.DEFAULT_FROM_EMAIL,
'bcc': self.get_def_email(settings) if self.get_def_email(settings) is not None else (), 'recipients': (settings.DEFAULT_FROM_EMAIL,),
'recipients': self.get_def_email(settings) if self.get_def_email(settings) is not None else (), 'email': {
'context': {
'name': self.instance.name, 'name': self.instance.name,
'email': self.instance.email, 'email': self.instance.email,
'subject': self.instance.subject, 'subject': self.instance.subject,
'phone': self.instance.message, 'phone': self.instance.phone or None,
}, },
'send_at_date': self.instance.create_at, 'send_at_date': self.instance.create_at,

@ -13,50 +13,36 @@ from core.models import AbstractStatusModel, STATUS_DELETED
STATUS_NEW = 0 STATUS_NEW = 0
from core.models import AbstractStatusModel, STATUS_NEW, STATUS_CHOICES, STATUS_ACTIVE, STATUS_DELETED from core.models import AbstractStatusModel, STATUS_NEW, STATUS_CHOICES, STATUS_ACTIVE, STATUS_DELETED
# --------------------- REQUEST STATUS LIST -------------------- # --------------------- REQUEST STATUS LIST -------------------
STATUS_IN_PROCESSING = 10 STATUS_IN_PROCESSING = 10
STATUS_PROCESSED = 20 STATUS_PROCESSED = 20
STATUS_REJECTED = 40
REQUEST_STATUS_CHOICES = ( REQUEST_STATUS_CHOICES = (
STATUS_CHOICES[0], STATUS_CHOICES[0],
(STATUS_IN_PROCESSING, _('Processing')), (STATUS_IN_PROCESSING, _('Обрабатывается')),
(STATUS_PROCESSED, _('Processed')), (STATUS_PROCESSED, _('Обработан')),
(STATUS_REJECTED, _('Rejected')),
STATUS_CHOICES[-1] STATUS_CHOICES[-1]
) )
REQUEST_DEFAULT_STATUS = STATUS_NEW REQUEST_DEFAULT_STATUS = STATUS_NEW
# ----------------- REQUEST FILE STATUS LIST ------------------
FILE_REQUEST_STATUS_CHOICES = (
(STATUS_ACTIVE, _('Active')),
(STATUS_DELETED, _('Deleted')),
)
FILE_REQUEST_DEFAULT_STATUS = STATUS_ACTIVE
class Request(AbstractStatusModel): class Request(AbstractStatusModel):
name = models.CharField(_('Name'), max_length=255) name = models.CharField(_('Name'), max_length=255)
email = models.EmailField(_('Email')) email = models.EmailField(_('Email'))
subject = models.CharField(_('Subject'), max_length=500) subject = models.CharField(_('Subject'), max_length=500)
message = models.TextField(blank=True, null=True) message = models.TextField(blank=True, null=True)
phone_regex = RegexValidator(regex=r'^((\+7)|8)?\d{10}$', phone_regex = RegexValidator(
message="Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.") regex=r'^((\+7)|8)?\d{10}$',
message=_("Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.")
)
phone = models.CharField(validators=(phone_regex,), max_length=12, blank=True, null=True) phone = models.CharField(validators=(phone_regex,), max_length=12, blank=True, null=True)
status = models.SmallIntegerField(_('Status'), default=REQUEST_DEFAULT_STATUS, choices=REQUEST_STATUS_CHOICES) status = models.SmallIntegerField(_('статус'), default=REQUEST_DEFAULT_STATUS, choices=REQUEST_STATUS_CHOICES)
@property @property
def is_status_processed(self): def is_status_processed(self):
return self.status == STATUS_PROCESSED return self.status == STATUS_PROCESSED
@property
def is_status_rejected(self):
return self.status == STATUS_REJECTED
@property @property
def is_status_processing(self): def is_status_processing(self):
return self.status == STATUS_IN_PROCESSING return self.status == STATUS_IN_PROCESSING
@ -65,5 +51,5 @@ class Request(AbstractStatusModel):
return self.subject return self.subject
class Meta: class Meta:
verbose_name = _('Request') verbose_name = _('Запрос')
verbose_name_plural = _('Requests') verbose_name_plural = _('Запросы')

Loading…
Cancel
Save