diff --git a/events/forms.py b/events/forms.py
index c7a972e4..26fe6147 100644
--- a/events/forms.py
+++ b/events/forms.py
@@ -31,6 +31,7 @@ from django.conf import settings
from haystack.query import SearchQuerySet, RelatedSearchQuerySet, SQ
from functions.model_utils import EnumChoices
+from functions.model_mixin import get_dates
from exposition.models import Exposition
from conference.models import Conference
from theme.models import Theme, Tag
@@ -209,20 +210,6 @@ class FilterForm(forms.Form):
city = CountModelMultipleChoiceField(
label=_(u'Города'), required=False, cache_choices=True,
queryset=City.objects.language().values('pk', 'name'))
- price = FilterTypedMultipleChoiceField(
- label=_(u'Стоимость'), coerce=int,
- choices=PRICE,
- required=False, widget=FilterCheckboxSelectMultiple(),
- # help_text=_(u'За 1 м2 необорудованной площади')
- )
- members = FilterTypedMultipleChoiceField(
- label=_(u'Участники'), coerce=int,
- choices=MEMBERS,
- required=False, widget=FilterCheckboxSelectMultiple())
- visitors = FilterTypedMultipleChoiceField(
- label=_(u'Посетители'), coerce=int,
- choices=VISITORS,
- required=False, widget=FilterCheckboxSelectMultiple())
year = forms.RegexField(r'^(?P\d{4})$', max_length=4, min_length=4,
required=False, widget=forms.HiddenInput())
default_month = forms.CharField(max_length=3, min_length=3,
@@ -239,6 +226,25 @@ class FilterForm(forms.Form):
date_to = forms.DateField(required=False, input_formats=('%d.%m.%Y',),
widget=forms.DateInput(attrs={'class': 'date', 'id': 'dateTo',
'placeholder': _(u'дд.мм.гггг')}))
+ price = FilterTypedMultipleChoiceField(
+ label=_(u'Стоимость'), coerce=int,
+ choices=PRICE,
+ required=False, widget=FilterCheckboxSelectMultiple(),
+ # help_text=_(u'За 1 м2 необорудованной площади')
+ )
+ members = FilterTypedMultipleChoiceField(
+ label=_(u'Участники'), coerce=int,
+ choices=MEMBERS,
+ required=False, widget=FilterCheckboxSelectMultiple())
+ visitors = FilterTypedMultipleChoiceField(
+ label=_(u'Посетители'), coerce=int,
+ choices=VISITORS,
+ required=False, widget=FilterCheckboxSelectMultiple())
+ rating = FilterTypedMultipleChoiceField(
+ label=_(u'Рейтинги'), coerce=int,
+ choices=[],
+ required=False, widget=FilterCheckboxSelectMultiple())
+
def __init__(self, *args, **kwargs):
super(FilterForm, self).__init__(*args, **kwargs)
@@ -264,6 +270,11 @@ class FilterForm(forms.Form):
else:
self.fields[field].choice_cache = choices
+ def get_dates(self):
+ if not (self.cleaned_data.get('date_from') or self.cleaned_data.get('date_to')):
+ return None
+ return get_dates(self.cleaned_data.get('date_from'), self.cleaned_data.get('date_to'))
+
@classmethod
def month_choices(cls):
month = datetime.today().month
diff --git a/functions/model_mixin.py b/functions/model_mixin.py
index f8a89157..4e34485c 100644
--- a/functions/model_mixin.py
+++ b/functions/model_mixin.py
@@ -34,39 +34,43 @@ class ExpoMixin(object):
return photos
-class EventMixin(object):
- @property
- def get_dates(self):
- lang = get_language()
- if self.data_end and self.data_begin:
- delta = self.data_end - self.data_begin
- if delta.days > 28 and self.data_end.month == self.data_begin.month:
- return self.data_begin.strftime('%B')
- elif delta.days < 1:
- if lang == 'ru':
- return ru_strftime("%d %B %Y", date=self.data_begin, inflected=True)
- return self.data_begin
-
- if self.data_begin.month != self.data_end.month:
- if lang == 'ru':
- start = ru_strftime("%d %B", date=self.data_begin, inflected=True)
- else:
- start = u'{month} {day}'.format(
- month=self.data_begin.strftime('%B'),
- day=self.data_begin.day)
- else:
- start = self.data_begin.day
+def get_dates(data_begin, data_end):
+ lang = get_language()
+ if data_end and data_begin:
+ delta = data_end - data_begin
+ if delta.days > 28 and data_end.month == data_begin.month:
+ return data_begin.strftime('%B')
+ elif delta.days < 1:
+ if lang == 'ru':
+ return ru_strftime("%d %B %Y", date=data_begin, inflected=True)
+ return data_begin
+ if data_begin.month != data_end.month:
if lang == 'ru':
- end = ru_strftime("%d %B", date=self.data_end, inflected=True)
+ start = ru_strftime("%d %B", date=data_begin, inflected=True)
else:
- end = u'{month} {day}'.format(
- month=self.data_end.strftime('%B'),
- day=self.data_end.day)
- return _(u'c {start} по {end}').format(start=start, end=end)
+ start = u'{month} {day}'.format(
+ month=data_begin.strftime('%B'),
+ day=data_begin.day)
+ else:
+ start = data_begin.day
+
if lang == 'ru':
- return ru_strftime("%d %B %Y", date=self.data_begin, inflected=True)
- return self.data_begin
+ end = ru_strftime("%d %B", date=data_end, inflected=True)
+ else:
+ end = u'{month} {day}'.format(
+ month=data_end.strftime('%B'),
+ day=data_end.day)
+ return _(u'c {start} по {end}').format(start=start, end=end)
+ if lang == 'ru':
+ return ru_strftime("%d %B %Y", date=data_begin, inflected=True)
+ return data_begin
+
+
+class EventMixin(object):
+ @property
+ def get_dates(self):
+ return get_dates(self.data_begin, self.data_end)
@property
def get_place_name(self):
diff --git a/templates/client/includes/events/filter_form.html b/templates/client/includes/events/filter_form.html
index f5ce6fbd..00610515 100644
--- a/templates/client/includes/events/filter_form.html
+++ b/templates/client/includes/events/filter_form.html
@@ -29,6 +29,7 @@
{{ field.errors }}
{% endfor %}
+ {{ form.get_dates }}
{# #}