commit
a06d85ca61
23 changed files with 219 additions and 71 deletions
@ -0,0 +1,30 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django import forms |
||||
from django.utils.translation import ugettext as _ |
||||
|
||||
from accounts.models import User |
||||
|
||||
|
||||
class EmailForm(forms.Form): |
||||
email = forms.EmailField(label=_(u'Email address')) |
||||
|
||||
|
||||
class AssociateForm(EmailForm): |
||||
_errors = { |
||||
'required': _(u'Данный email уже зарегистрирован. Авторизируйтесь чтобы привязать аккаунт.'), |
||||
'invalid': _(u'Неправильный логин или пароль.') |
||||
} |
||||
password = forms.CharField(label=_(u'Пароль'), widget=forms.PasswordInput(), error_messages=_errors) |
||||
|
||||
def clean_password(self): |
||||
self.user = None |
||||
pw = self.cleaned_data.get('password') |
||||
if pw: |
||||
try: |
||||
self.user = User.objects.get(email=self.cleaned_data.get('email')) |
||||
except: |
||||
self.user = None |
||||
if self.user and not self.user.check_password(pw): |
||||
self.user = None |
||||
raise forms.ValidationError(self.fields['password'].error_messages['invalid']) |
||||
return pw |
||||
@ -1,5 +1,5 @@ |
||||
{% load i18n %} |
||||
<div class="reversed" style="border-left: 5px solid #ff9900; padding: 8px 12px; background-color: #fff; font-size:17px; text-align: justify; margin-bottom: 10px">{% trans "Выставки по указанным параметрам не найдены. Попробуйте упростить параметры или расширить временные рамки. Также Вы можете посмотреть уже прошедшие события и проверить самостоятельно, будут ли они проходить в будущем." %}</div> |
||||
<div class="reversed" style="border-left: 5px solid #ff9900; padding: 8px 12px; background-color: #fff; font-size:17px; text-align: justify; margin-bottom: 10px">{% trans "Выставки по указанным параметрам не найдены. Попробуйте упростить параметры или расширить временные рамки. Также, вы можете посмотреть уже прошедшие события и проверить самостоятельно, будут ли они проходить в будущем." %}</div> |
||||
<div class="page-title"> |
||||
<h2 style="font-size:30px;">{% trans "Прошедшие события" %}</h2> |
||||
</div> |
||||
|
||||
@ -1,14 +1,15 @@ |
||||
{% load i18n %} |
||||
|
||||
{% if side_popular %} |
||||
<div class="mps-sect"> |
||||
<header style="font-size: 23px;">{% trans 'Самые популярные' %}</header> |
||||
<nav> |
||||
<ul> |
||||
{% for obj in side_popular %} |
||||
<li><a href="{{ obj.url }}">{{ obj.name }}</a></li> |
||||
{% endfor %} |
||||
{# <div class="mps-sect">#} |
||||
{# <header style="font-size: 23px;">{% trans 'Самые популярные' %}</header>#} |
||||
{# <nav>#} |
||||
<ul class="leter-list"> |
||||
<li class="leter" style="font-size: 24px">{% trans 'Самые популярные' %}</li> |
||||
{% for obj in side_popular %} |
||||
<li><a href="{{ obj.url }}">{{ obj.name }}</a></li> |
||||
{% endfor %} |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
{# </nav>#} |
||||
{# </div>#} |
||||
{% endif %} |
||||
|
||||
@ -0,0 +1,28 @@ |
||||
{% load static %} |
||||
{% load i18n %} |
||||
{% load template_filters %} |
||||
|
||||
<div id="unsibscribed" class="popup-window unsibscribed"> |
||||
<header> |
||||
<div class="title">{% trans 'Вы отписались от нашей рассылки' %}</div> |
||||
</header> |
||||
|
||||
<div class="body"> |
||||
<div class="themes_wrapper"> |
||||
<div class="scroll-container"> |
||||
<div class="scroll-content"> |
||||
<div class="topics-list"> |
||||
{% trans "Мы расстроены, но отписали Вас от всех писем. Надеемся, в скором времени вы снова захотите быть в курсе событий своей отрасли." %} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="wait-ajax"></div> |
||||
</div> |
||||
|
||||
{# <div class="buttons_block">#} |
||||
{# <button class="modal-approve" type="button">{% trans 'Выбрать' %}</button>#} |
||||
{# <button class="modal-clear" type="button">{% trans 'Очистить' %}</button>#} |
||||
{# </div>#} |
||||
</div> |
||||
</div> |
||||
Loading…
Reference in new issue