diff --git a/aircox/filters.py b/aircox/filters.py new file mode 100644 index 0000000..39fa212 --- /dev/null +++ b/aircox/filters.py @@ -0,0 +1,26 @@ +from django.utils.translation import gettext_lazy as _ +import django_filters as filters + +from .models import Page, Episode + + +class PageFilters(filters.FilterSet): + q = filters.CharFilter(method='search_filter', label=_('Search')) + + class Meta: + model = Page + fields = { + 'category__id': ['in'], + 'pub_date': ['exact', 'gte', 'lte'], + } + + def search_filter(self, queryset, name, value): + return queryset.search(value) + + +class EpisodeFilters(PageFilters): + class Meta: + model = Episode + fields = { + } + diff --git a/aircox/models/page.py b/aircox/models/page.py index 19b4a82..b1c5123 100644 --- a/aircox/models/page.py +++ b/aircox/models/page.py @@ -53,6 +53,11 @@ class PageQuerySet(InheritanceQuerySet): return self.filter(parent=parent) if id is None else \ self.filter(parent__id=id) + def search(self, q, search_content=True): + if search_content: + return self.filter(models.Q(title__icontains=q) | models.Q(content__icontains=q)) + return self.filter(title__icontains=q) + class BasePage(models.Model): """ Base class for publishable content """ diff --git a/aircox/templates/aircox/base.html b/aircox/templates/aircox/base.html index 0b489f1..955e801 100644 --- a/aircox/templates/aircox/base.html +++ b/aircox/templates/aircox/base.html @@ -57,6 +57,19 @@ Usefull context: {% endblock %}
diff --git a/aircox/templates/aircox/basepage_list.html b/aircox/templates/aircox/basepage_list.html index 43656d8..61b09fd 100644 --- a/aircox/templates/aircox/basepage_list.html +++ b/aircox/templates/aircox/basepage_list.html @@ -24,48 +24,7 @@ {% block main %}{{ block.super }} -{% block before_list %} -{% if filters %} - -{% endif %} - -{% endblock %} +{% block before_list %}{% endblock %}