#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)
PROJECT_ORDER_CHOICES = (
('name', 'Name'),
('budget', 'Budget'),
('created', 'Created'),
('views', 'Views'),
)
class ProjectFilterForm(forms.ModelForm):
PROJECT_ORDER_CHOICES = ( # "Упорядочить по"...
('name', 'названию'),
('budget', 'цене'),
('created', 'дате размещения'),
('views', 'просмотрам'),
)
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)
keywords = forms.CharField(required=False, max_length=255)
class Meta:
model = Project

@ -49,10 +49,15 @@
</div>
<div class="searchF1">
<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 class="col-lg-3">
<a href="#" class="findReal" onclick="$(this).closest('form').submit(); return false">
@ -153,35 +158,9 @@
<div class="linkSort">
<p>Сортировать по:</p>
{# <a href="javascript:void(0)" class="activeSort">#}
{# цене#}
{# <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span>#}
{# </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>
{% for val, text in form.order_by.field.choices %}
<button type="submit" name="{{ form.order_by.html_name }}" value="{{ val }}">{{ text }}</button>
{% endfor %}
<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">
@ -264,24 +243,16 @@
<ul class="pagination">
{% if projects.has_previous %}
<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>
</li>
{% endif %}
{% for n in projects.paginator.page_range %}
{% if n == projects.number %}
{# <li class="active"><a href="#" onclick="return false">{{ n }}</a></li>#}
<li class="i active">
<button type="submit" name="page" value="{{ n }}" class="i" disabled>{{ n }}</button>
</li>
{% else %}
{# <li><a href="?page={{ n }}">{{ n }}</a></li>#}
<li>
<button type="submit" name="page" value="{{ n }}">{{ n }}</button>
</li>
@ -290,10 +261,6 @@
{% if projects.has_next %}
<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>
</li>
{% endif %}

@ -3,6 +3,7 @@ from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import Q
from django.http import HttpResponseForbidden, HttpResponseRedirect, HttpResponse, Http404
from django.shortcuts import render, get_object_or_404, redirect
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
import json
import pydash as _
import re
from .mixins import LastAccessMixin
from .models import Project, ProjectFile, Portfolio, Candidate, Answer, Realty, Order
@ -43,6 +45,7 @@ class ProjectFilterView(BaseMixin, View):
projects = Project.objects
if form.is_valid() and realty_form.is_valid():
keywords = form.cleaned_data.get('keywords')
cro = form.cleaned_data.get('cro')
work_type = form.cleaned_data.get('work_type')
specialization = form.cleaned_data.get('specialization')
@ -51,6 +54,12 @@ class ProjectFilterView(BaseMixin, View):
construction_type = realty_form.cleaned_data.get('construction_type')
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)
if work_type:
@ -122,6 +131,8 @@ class ProjectFilterView(BaseMixin, View):
except EmptyPage:
projects = paginator.page(paginator.num_pages)
# import code; code.interact(local=dict(globals(), **locals()))
context.update({
'form': form,
'realty_form': realty_form,

Loading…
Cancel
Save