смена сортировки фильтров при выбранной тематики или тега

remotes/origin/tests
Slava Kyrachevsky 9 years ago
parent a330b278af
commit a6165166f4
  1. 28
      README.md
  2. 11
      apps/events/forms.py
  3. 15
      apps/events/views.py
  4. 11
      templates/client/base_catalog.html
  5. 2
      templates/client/includes/events/filter_form.html

@ -1,14 +1,6 @@
Expomap project Expomap project
#mysql
sudo apt-get install mysql-server mysql-client libmysqlclient-dev mysql-workbench
#memcached
sudo apt-get install libmemcached-dev
# south
pip install south -U
### proj/local.py EXAMPLE ### proj/local.py EXAMPLE
```python ```python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
@ -67,20 +59,6 @@ DEBUG_TOOLBAR_PANELS = [
] ]
``` ```
#
```sh
python manage.py syncdb --settins=proj.local
python manage.py migrate settings 0001 --fake --settins=proj.local
python manage.py migrate settings --settins=proj.local
```
#
```sh
python manage.py migrate accounts 0001 --fake
python manage.py migrate accounts
python manage.py migrate company 0001 --fake
python manage.py migrate company
```
# solr setup # solr setup
```sh ```sh
@ -98,10 +76,4 @@ bin/solr start -p 8983
Если возникает ошибка Solr: [Reason: Error 404 Not Found] - http://stackoverflow.com/a/30633740 Если возникает ошибка Solr: [Reason: Error 404 Not Found] - http://stackoverflow.com/a/30633740
#
```sh
python manage.py migrate expobanner 0001 --fake
python manage.py migrate expobanner
```
Каталог support хранит конфиги для продакшн сервера Каталог support хранит конфиги для продакшн сервера

@ -244,8 +244,7 @@ class FilterForm(forms.Form):
price = FilterTypedMultipleChoiceField( price = FilterTypedMultipleChoiceField(
label=_(u'Стоимость'), coerce=int, label=_(u'Стоимость'), coerce=int,
choices=PRICE, choices=PRICE,
required=False, widget=FilterCheckboxSelectMultiple(), required=False, widget=FilterCheckboxSelectMultiple()
# help_text=_(u'За 1 м<sub>2</sub> необорудованной площади')
) )
price_eur = FilterTypedMultipleChoiceField( price_eur = FilterTypedMultipleChoiceField(
label=_(u'Стоимость'), coerce=int, label=_(u'Стоимость'), coerce=int,
@ -281,6 +280,12 @@ class FilterForm(forms.Form):
self.fill_default_choices_from_cache() self.fill_default_choices_from_cache()
self.fields['month'].choices = self.month_choices() self.fields['month'].choices = self.month_choices()
if self.data.get('tag') or self.data.get('theme'):
self.fields.keyOrder.remove('country')
self.fields.keyOrder.insert(1, 'country')
self.fields.keyOrder.remove('city')
self.fields.keyOrder.insert(2, 'city')
@property @property
def is_exposition(self): def is_exposition(self):
types = self.cleaned_data.get('event_type', []) types = self.cleaned_data.get('event_type', [])
@ -312,7 +317,7 @@ class FilterForm(forms.Form):
month = datetime.today().month month = datetime.today().month
if cls._month != month or cls._month_choices is None: if cls._month != month or cls._month_choices is None:
year = datetime.today().year year = datetime.today().year
depth = 7 # на сколько сколько месяцев вперед делать выборку (включая текущий) depth = 7 # на сколько сколько месяцев вперед делать выборку (включая текущий)
monthes = dict([(v.get('value'), {'abr': k, 'name': v.get('name')}) for k, v in settings.MONTHES.iteritems()]) monthes = dict([(v.get('value'), {'abr': k, 'name': v.get('name')}) for k, v in settings.MONTHES.iteritems()])
choices = [] choices = []
for month_num in xrange(month, month + depth): for month_num in xrange(month, month + depth):

@ -1,18 +1,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse_lazy
from django.db.models import Q from django.db.models import Q
from django.http import Http404
from django.http import HttpResponseForbidden from django.http import HttpResponseForbidden
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from django.http import HttpResponsePermanentRedirect
from django.views.generic.edit import FormMixin, FormView from django.views.generic.edit import FormMixin, FormView
from django.conf import settings from django.conf import settings
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.template import RequestContext from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
from haystack.query import SearchQuerySet
from emencia.django.newsletter.forms import ContactForm from emencia.django.newsletter.forms import ContactForm
from emencia.django.newsletter.models import Contact from emencia.django.newsletter.models import Contact
@ -31,7 +26,7 @@ class FilterListView_(ContextMixin, FormMixin, ListView):
initial_ctx = {'filtering': True} initial_ctx = {'filtering': True}
form_class = FilterForm form_class = FilterForm
paginate_by = settings.CLIENT_PAGINATION paginate_by = settings.CLIENT_PAGINATION
template_name = 'events/filter_listview.html' template_name = 'client/events/filter_listview.html'
_ajax_results_template_name = 'events/filter_listview_ajax.html' _ajax_results_template_name = 'events/filter_listview_ajax.html'
_ajax_form_template_name = 'includes/events/filter_form.html' _ajax_form_template_name = 'includes/events/filter_form.html'
@ -43,13 +38,10 @@ class FilterListView_(ContextMixin, FormMixin, ListView):
def get_queryset(self): def get_queryset(self):
if self.form.is_valid(): if self.form.is_valid():
qs = self.form.filter() qs = self.form.filter()
# import pdb; pdb.set_trace()
else: else:
qs = self.form.default_filter() qs = self.form.default_filter()
if self.kwargs.get('with_form', True): if self.kwargs.get('with_form', True):
self.form.recalculate_choices() self.form.recalculate_choices()
# print(self.form.data, self.form.cleaned_data, self.form.get_date_begin_periods())
# import pdb; pdb.set_trace()
return qs return qs
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -86,6 +78,7 @@ class FilterListView_(ContextMixin, FormMixin, ListView):
return context return context
class FilterListView(ReverseOrderMixin, FilterListView_): class FilterListView(ReverseOrderMixin, FilterListView_):
pass pass
@ -191,4 +184,4 @@ def event_visit(request, event_type, id):
else: else:
args['not_authorized'] = True args['not_authorized'] = True
args['success'] = True args['success'] = True
return JsonResponse(args) return JsonResponse(args)

@ -1,10 +1,7 @@
{% extends 'client/blank.html' %} {% extends 'client/blank.html' %}
{% load static i18n %}
{% load static %}
{% load i18n %}
{% load template_filters %} {% load template_filters %}
{% block main_part %} {% block main_part %}
<section class="layout main-part"> <section class="layout main-part">
<div class="layout-wrap"> <div class="layout-wrap">
@ -14,16 +11,14 @@
<hr/> <hr/>
{% include 'client/includes/feedback.html' %} {% include 'client/includes/feedback.html' %}
<hr /> <hr />
{% comment %}
{% endcomment %}
{# {% include 'client/includes/online_consult.html' %} #} {# {% include 'client/includes/online_consult.html' %} #}
{% if filtering == True %} {% if filtering %}
<div id="filter_form_wraper"> <div id="filter_form_wraper">
{% include 'client/includes/events/filter_form.html' %} {% include 'client/includes/events/filter_form.html' %}
</div> </div>
{% elif can_filter == True %} {% elif can_filter %}
<div id="filter_form_wraper"> <div id="filter_form_wraper">
<a href="{% url 'events:main' %}" id="get_filters" data-formurl="{% url 'events:form' %}" data-resultsurl="{% url 'events:results' %}">ВЫБРАТЬ ПО КРИТЕРИЯМ:</a> <a href="{% url 'events:main' %}" id="get_filters" data-formurl="{% url 'events:form' %}" data-resultsurl="{% url 'events:results' %}">ВЫБРАТЬ ПО КРИТЕРИЯМ:</a>
</div> </div>

@ -11,7 +11,6 @@
</div> </div>
<div class="filters"> <div class="filters">
{# {% csrf_token %} #}
{% for hidden in form.hidden_fields %} {% for hidden in form.hidden_fields %}
{{ hidden }} {{ hidden }}
{% endfor %} {% endfor %}
@ -30,7 +29,6 @@
{% endfor %} {% endfor %}
<a href="#" class="filter_period_trigger" id="filter_period_trigger">{{ form.get_dates }}</a> <a href="#" class="filter_period_trigger" id="filter_period_trigger">{{ form.get_dates }}</a>
{# <button type="submit">{% trans "Применить" %}</button> #}
</div> </div>
{% include 'client/popups/filter_period.html' %} {% include 'client/popups/filter_period.html' %}

Loading…
Cancel
Save