#ARC-13 Fixes

remotes/origin/setup
ArturBaybulatov 10 years ago
parent 174a253125
commit d369019f30
  1. 15
      projects/forms.py
  2. 53
      projects/templates/project_filter.html
  3. 11
      projects/views.py

@ -13,17 +13,20 @@ from users.models import User
# RealtyFormSet = inlineformset_factory(Project, Realty) # RealtyFormSet = inlineformset_factory(Project, Realty)
PROJECT_ORDER_CHOICES = (
('name', 'Name'),
('budget', 'Budget'),
('created', 'Created'),
('views', 'Views'),
)
class ProjectFilterForm(forms.ModelForm): class ProjectFilterForm(forms.ModelForm):
PROJECT_ORDER_CHOICES = ( # "Упорядочить по"...
('name', 'названию'),
('budget', 'цене'),
('created', 'дате размещения'),
('views', 'просмотрам'),
)
order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES)
last_order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) last_order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES)
reverse_order = forms.BooleanField(required=False) reverse_order = forms.BooleanField(required=False)
keywords = forms.CharField(required=False, max_length=255)
class Meta: class Meta:
model = Project model = Project

@ -49,10 +49,15 @@
</div> </div>
<div class="searchF1"> <div class="searchF1">
<div class="col-lg-6"> <div class="col-lg-6">
<input type="text" class="searchInp box-sizing" placeholder="Ключевые слова" name="search"> <input
type="text"
name="keywords"
onkeydown="event.keyCode === 13 && $(this).closest('form').submit()"
value="{{ form.keywords.value }}"
class="searchInp box-sizing"
placeholder="Ключевые слова">
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<a href="#" class="findReal" onclick="$(this).closest('form').submit(); return false"> <a href="#" class="findReal" onclick="$(this).closest('form').submit(); return false">
@ -153,35 +158,9 @@
<div class="linkSort"> <div class="linkSort">
<p>Сортировать по:</p> <p>Сортировать по:</p>
{# <a href="javascript:void(0)" class="activeSort">#} {% for val, text in form.order_by.field.choices %}
{# цене#} <button type="submit" name="{{ form.order_by.html_name }}" value="{{ val }}">{{ text }}</button>
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#} {% endfor %}
{# </a>#}
{# <a href="javascript:void(0)">#}
{# cорту#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </a>#}
{# <a href="javascript:void(0)">#}
{# рейтингу#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </a>#}
{# <a href="javascript:void(0)">#}
{# дате размещения#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </a>#}
{# <a href="javascript:void(0)">#}
{# ответам#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </a>#}
{# <a href="javascript:void(0)">#}
{# просмотрам#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </a>#}
<button type="submit" name="{{ form.order_by.html_name }}" value="name">названию</button>
<button type="submit" name="{{ form.order_by.html_name }}" value="budget">цене</button>
<button type="submit" name="{{ form.order_by.html_name }}" value="created">дате размещения</button>
<button type="submit" name="{{ form.order_by.html_name }}" value="views">просмотрам</button>
<input type="hidden" name="{{ form.last_order_by.html_name }}" value="{{ last_order_by }}"> <input type="hidden" name="{{ form.last_order_by.html_name }}" value="{{ last_order_by }}">
<input type="checkbox" name="{{ form.reverse_order.html_name }}" {% if reverse_order %}checked{% endif %} style="display: none"> <input type="checkbox" name="{{ form.reverse_order.html_name }}" {% if reverse_order %}checked{% endif %} style="display: none">
@ -264,24 +243,16 @@
<ul class="pagination"> <ul class="pagination">
{% if projects.has_previous %} {% if projects.has_previous %}
<li> <li>
{# <a href="?page={{ projects.previous_page_number }}" aria-label="Previous">#}
{# <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>#}
{# </a>#}
<button type="submit" name="page" value="{{ projects.previous_page_number }}">Previous</button> <button type="submit" name="page" value="{{ projects.previous_page_number }}">Previous</button>
</li> </li>
{% endif %} {% endif %}
{% for n in projects.paginator.page_range %} {% for n in projects.paginator.page_range %}
{% if n == projects.number %} {% if n == projects.number %}
{# <li class="active"><a href="#" onclick="return false">{{ n }}</a></li>#}
<li class="i active"> <li class="i active">
<button type="submit" name="page" value="{{ n }}" class="i" disabled>{{ n }}</button> <button type="submit" name="page" value="{{ n }}" class="i" disabled>{{ n }}</button>
</li> </li>
{% else %} {% else %}
{# <li><a href="?page={{ n }}">{{ n }}</a></li>#}
<li> <li>
<button type="submit" name="page" value="{{ n }}">{{ n }}</button> <button type="submit" name="page" value="{{ n }}">{{ n }}</button>
</li> </li>
@ -290,10 +261,6 @@
{% if projects.has_next %} {% if projects.has_next %}
<li> <li>
{# <a href="?page={{ projects.next_page_number }}" aria-label="Next">#}
{# <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>#}
{# </a>#}
<button type="submit" name="page" value="{{ projects.next_page_number }}">Next</button> <button type="submit" name="page" value="{{ projects.next_page_number }}">Next</button>
</li> </li>
{% endif %} {% endif %}

@ -3,6 +3,7 @@ from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import Q
from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, Http404 from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, Http404
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, DetailView, CreateView, View, UpdateView, TemplateView, FormView from django.views.generic import ListView, DetailView, CreateView, View, UpdateView, TemplateView, FormView
@ -10,6 +11,7 @@ from django.views.generic.base import ContextMixin
from pprint import pprint, pformat from pprint import pprint, pformat
import json import json
import pydash as _ import pydash as _
import re
from .mixins import LastAccessMixin from .mixins import LastAccessMixin
from .models import Project, ProjectFile, Portfolio, Candidate, Answer, Realty, Order from .models import Project, ProjectFile, Portfolio, Candidate, Answer, Realty, Order
@ -43,6 +45,7 @@ class ProjectFilterView(BaseMixin, View):
projects = Project.objects projects = Project.objects
if form.is_valid() and realty_form.is_valid(): if form.is_valid() and realty_form.is_valid():
keywords = form.cleaned_data.get('keywords')
cro = form.cleaned_data.get('cro') cro = form.cleaned_data.get('cro')
work_type = form.cleaned_data.get('work_type') work_type = form.cleaned_data.get('work_type')
specialization = form.cleaned_data.get('specialization') specialization = form.cleaned_data.get('specialization')
@ -51,6 +54,12 @@ class ProjectFilterView(BaseMixin, View):
construction_type = realty_form.cleaned_data.get('construction_type') construction_type = realty_form.cleaned_data.get('construction_type')
location = realty_form.cleaned_data.get('location') location = realty_form.cleaned_data.get('location')
if keywords:
keywords = tuple(filter(None, re.split(r'\s|,|;', keywords)))
for k in keywords:
projects = projects.filter(Q(name__icontains=k) | Q(text__icontains=k))
projects = projects.filter(cro=cro) projects = projects.filter(cro=cro)
if work_type: if work_type:
@ -122,6 +131,8 @@ class ProjectFilterView(BaseMixin, View):
except EmptyPage: except EmptyPage:
projects = paginator.page(paginator.num_pages) projects = paginator.page(paginator.num_pages)
# import code; code.interact(local=dict(globals(), **locals()))
context.update({ context.update({
'form': form, 'form': form,
'realty_form': realty_form, 'realty_form': realty_form,

Loading…
Cancel
Save