summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichal <michal.sipa@mirumee.com>2017-10-06 14:22:50 +0200
committermichal <michal.sipa@mirumee.com>2017-10-06 14:22:50 +0200
commit0ba195f2efdacb674c8ff7affbea353abbe2a936 (patch)
tree28ea4f3afb583e5f44a202a779aa655b8f1d19ce
parent0d11f7d0285b2dca7c7539049d01eafd8da6b99e (diff)
downloadsaleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.tar.gz
saleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.tar.bz2
saleor-frontend-0ba195f2efdacb674c8ff7affbea353abbe2a936.zip
Further refactoring of sort_by and sort_menu
Combine sort_by and sort_menu to one template and templatetag. Move templatetags to shop.py. Delete sort_menu.py and _sort_menu.html. Update index.html with new templatetags.
-rw-r--r--saleor/core/templatetags/shop.py21
-rw-r--r--saleor/product/templatetags/sort_by.py11
-rw-r--r--saleor/product/templatetags/sort_menu.py17
-rw-r--r--templates/category/_sort_by.html66
-rw-r--r--templates/category/_sort_menu.html30
-rw-r--r--templates/category/index.html3
6 files changed, 65 insertions, 83 deletions
diff --git a/saleor/core/templatetags/shop.py b/saleor/core/templatetags/shop.py
index c1fdacb5..78273c64 100644
--- a/saleor/core/templatetags/shop.py
+++ b/saleor/core/templatetags/shop.py
@@ -7,6 +7,8 @@ except ImportError:
from django.template import Library
from django.utils.http import urlencode
+from ...product.filters import DEFAULT_SORT
+
register = Library()
@@ -18,8 +20,23 @@ def slice(items, group_size=1):
@register.simple_tag(takes_context=True)
-def get_sort_by_url(context, field):
+def get_sort_by_url(context, field, descending=False):
request = context['request']
request_get = request.GET.dict()
- request_get['sort_by'] = field
+ if descending:
+ request_get['sort_by'] = '-' + field
+ else:
+ request_get['sort_by'] = field
return '%s?%s' % (request.path, urlencode(request_get))
+
+
+@register.inclusion_tag('category/_sort_by.html', takes_context=True)
+def sort_by(context, attributes):
+ ctx = {
+ 'request': context['request'],
+ 'sort_by': (context['request'].GET.get('sort_by', DEFAULT_SORT)
+ .strip('-')),
+ 'sort_by_choices': attributes,
+ 'arrow_down': (context['request'].GET.get('sort_by', DEFAULT_SORT)
+ .startswith('-'))}
+ return ctx
diff --git a/saleor/product/templatetags/sort_by.py b/saleor/product/templatetags/sort_by.py
deleted file mode 100644
index 58395c07..00000000
--- a/saleor/product/templatetags/sort_by.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django import template
-
-register = template.Library()
-
-
-@register.inclusion_tag('category/_sort_by.html', takes_context=True)
-def sort_by(context, attribute):
- return {'request': context['request'],
- 'label': attribute['label'],
- 'ascending_attribute': attribute['value'],
- 'descending_attribute': '-' + str(attribute['value'])}
diff --git a/saleor/product/templatetags/sort_menu.py b/saleor/product/templatetags/sort_menu.py
deleted file mode 100644
index d538f055..00000000
--- a/saleor/product/templatetags/sort_menu.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django import template
-
-from ..filters import DEFAULT_SORT
-
-register = template.Library()
-
-
-@register.inclusion_tag('category/_sort_menu.html', takes_context=True)
-def sort_menu(context, attributes):
- ctx = {
- 'request': context['request'],
- 'sort_by': (context['request'].GET.get('sort_by', DEFAULT_SORT)
- .strip('-')),
- 'sort_by_choices': attributes,
- 'arrow_down': (context['request'].GET.get('sort_by', DEFAULT_SORT)
- .startswith('-'))}
- return ctx
diff --git a/templates/category/_sort_by.html b/templates/category/_sort_by.html
index e0e4cf88..4f2f9a8c 100644
--- a/templates/category/_sort_by.html
+++ b/templates/category/_sort_by.html
@@ -1,27 +1,51 @@
+{% load staticfiles %}
{% load i18n %}
{% load shop %}
-{% load staticfiles %}
-<li>
- <div class="row">
- <div class="col-6">
- Sort by: <strong>{{ label }}</strong>
+<div class="sort-by">
+ <div class="click-area d-none"></div>
+ <button class="btn btn-link">
+ <div>
+ <span>
+ Sort by:&nbsp;
+ <strong>
+ {{ sort_by }}
+ </strong>
+ </span>
+ <div class="sort-order-icon">
+ {% if arrow_down %}
+ <svg data-src="{% static "assets/arrow_down.svg" %}">
+ {% else %}
+ <svg data-src="{% static "assets/arrow_up.svg" %}">
+ {% endif %}
+ </div>
</div>
- <div class="col-6">
- <div>
- <a href="{% get_sort_by_url ascending_attribute %}">
- <span>{% trans 'ascending' context 'sort by option' %}</span>
- <div class="sort-order-icon float-right">
- <img src="{% static "assets/arrow_up.svg" %}">
+ </button>
+ <ul class="sort-list d-none">
+ {% for choice in sort_by_choices %}
+ <li>
+ <div class="row">
+ <div class="col-6">
+ Sort by: <strong>{{ choice.label }}</strong>
</div>
- </a>
- <a href="{% get_sort_by_url descending_attribute %}">
- <span>{% trans 'descending' context 'sort by option' %}</span>
- <div class="sort-order-icon float-right">
- <img src="{% static "assets/arrow_down.svg" %}">
+ <div class="col-6">
+ <div>
+ <a href="{% get_sort_by_url choice.value %}">
+ <span>{% trans 'ascending' context 'sort by option' %}</span>
+ <div class="sort-order-icon float-right">
+ <img src="{% static "assets/arrow_up.svg" %}">
+ </div>
+ </a>
+ <a href="{% get_sort_by_url choice.value descending=True %}">
+ <span>{% trans 'descending' context 'sort by option' %}</span>
+ <div class="sort-order-icon float-right">
+ <img src="{% static "assets/arrow_down.svg" %}">
+ </div>
+ </a>
+ </div>
</div>
- </a>
- </div>
- </div>
- </div>
-</li>
+ </div>
+ </li>
+ {% endfor %}
+ </ul>
+</div>
diff --git a/templates/category/_sort_menu.html b/templates/category/_sort_menu.html
deleted file mode 100644
index 420474ab..00000000
--- a/templates/category/_sort_menu.html
+++ /dev/null
@@ -1,30 +0,0 @@
-{% load sort_by from sort_by %}
-{% load staticfiles %}
-{% load i18n %}
-{% load shop %}
-
-<div class="sort-by">
- <div class="click-area d-none"></div>
- <button class="btn btn-link">
- <div>
- <span>
- Sort by:&nbsp;
- <strong>
- {{ sort_by }}
- </strong>
- </span>
- <div class="sort-order-icon">
- {% if arrow_down %}
- <svg data-src="{% static "assets/arrow_down.svg" %}">
- {% else %}
- <svg data-src="{% static "assets/arrow_up.svg" %}">
- {% endif %}
- </div>
- </div>
- </button>
- <ul class="sort-list d-none">
- {% for choice in sort_by_choices %}
- {% sort_by choice %}
- {% endfor %}
- </ul>
-</div>
diff --git a/templates/category/index.html b/templates/category/index.html
index 45be775c..4c8a1343 100644
--- a/templates/category/index.html
+++ b/templates/category/index.html
@@ -3,7 +3,6 @@
{% load i18n %}
{% load shop %}
{% load staticfiles %}
-{% load sort_menu from sort_menu %}
{% load render_bundle from webpack_loader %}
{% load prices_i18n %}
@@ -45,7 +44,7 @@
<span class="filters-menu__label d-sm-none">Filters</span>
</div>
<div class="col-6 col-md-10 col-lg-6">
- {% sort_menu sort_by_choices %}
+ {% sort_by sort_by_choices %}
</div>
</div>
</div>