From 6f7f8e44aa8382322e288c541a971cf532744ef2 Mon Sep 17 00:00:00 2001 From: ArturBaybulatov Date: Tue, 19 Jul 2016 19:08:47 +0300 Subject: [PATCH] #ARC-21 --- common/templatetags/common_tags.py | 5 + projects/views.py | 17 +- users/forms.py | 25 +- users/templates/contractor_filter.html | 359 ++++++++++++++----------- users/views.py | 124 +++++++-- 5 files changed, 341 insertions(+), 189 deletions(-) diff --git a/common/templatetags/common_tags.py b/common/templatetags/common_tags.py index 502febf..f73a9a0 100644 --- a/common/templatetags/common_tags.py +++ b/common/templatetags/common_tags.py @@ -30,6 +30,11 @@ def to_str(val): return str(val) +@register.filter('class_name') +def class_name(val): + return type(val).__name__ + + @register.filter def multiply(string, times): return string * times diff --git a/projects/views.py b/projects/views.py index c1d3d3e..e4c3426 100644 --- a/projects/views.py +++ b/projects/views.py @@ -45,6 +45,8 @@ class ProjectFilterView(BaseMixin, View): projects = Project.objects if form.is_valid() and realty_form.is_valid(): + ord = None + keywords = form.cleaned_data.get('keywords') cro = form.cleaned_data.get('cro') work_type = form.cleaned_data.get('work_type') @@ -88,15 +90,14 @@ class ProjectFilterView(BaseMixin, View): reverse_order = form.cleaned_data.get('reverse_order') if order_by: - if order_by == last_order_by: - reverse_order = not reverse_order - else: - reverse_order = False - - projects = projects.order_by('-%s' % order_by if reverse_order else order_by) - last_order_by = order_by + reverse_order = not reverse_order if order_by == last_order_by else False + ord = order_by + last_order_by = ord elif last_order_by: - projects = projects.order_by('-%s' % last_order_by if reverse_order else last_order_by) + ord = last_order_by + + if ord: + projects = projects.order_by('-%s' % ord if reverse_order else ord) context.update({ 'last_order_by': last_order_by, diff --git a/users/forms.py b/users/forms.py index 8dde601..31e790f 100644 --- a/users/forms.py +++ b/users/forms.py @@ -41,22 +41,22 @@ class UserEditForm(ModelForm): class ContractorFilterForm(forms.Form): - # PROJECT_ORDER_CHOICES = ( # "Упорядочить по"... - # ('name', 'названию'), - # ('budget', 'цене'), - # ('created', 'дате размещения'), - # ('views', 'просмотрам'), - # ) + CONTRACTOR_ORDER_CHOICES = ( # "Упорядочить по"... + ('name', 'названию'), + ('budget', 'цене'), + ('created', 'дате размещения'), + ('views', 'просмотрам'), + ) PARTY_TYPES = ( - ('', 'Все'), + ('all', 'Все'), ('teams', 'Группы'), ('contractors', 'Исполнители'), ) - # 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) + order_by = forms.ChoiceField(required=False, choices=CONTRACTOR_ORDER_CHOICES) + last_order_by = forms.ChoiceField(required=False, choices=CONTRACTOR_ORDER_CHOICES) + reverse_order = forms.BooleanField(required=False) specialization = forms.ModelChoiceField( queryset=Specialization.objects.root_nodes()[0].get_descendants(), @@ -95,6 +95,11 @@ class ContractorFilterForm(forms.Form): required=False, ) + last_party_types = forms.ChoiceField( + choices=PARTY_TYPES, + required=False, + ) + def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) diff --git a/users/templates/contractor_filter.html b/users/templates/contractor_filter.html index 84a02ac..156c7eb 100644 --- a/users/templates/contractor_filter.html +++ b/users/templates/contractor_filter.html @@ -142,11 +142,14 @@ type="submit" name="{{ form.party_types.html_name }}" value="{{ val }}" - class="btn btn-default"> + class="{% if val == last_party_types %}active{% endif %} btn btn-default"> {{ text }} {% endfor %} + + +