filter by year
This commit is contained in:
parent
480cb4afe5
commit
99ea0eab0a
|
@ -140,7 +140,9 @@ ul.clearing-thumbs li {
|
|||
}
|
||||
|
||||
.pagination a:hover,
|
||||
.pagination button:hover {
|
||||
.pagination button:hover,
|
||||
.pagination span.current
|
||||
{
|
||||
background: #1779ba !important; }
|
||||
|
||||
.admin-menu {
|
||||
|
|
|
@ -45,6 +45,21 @@
|
|||
{% endfor %}
|
||||
<br>
|
||||
<br>
|
||||
{% if years %}
|
||||
<div class="row">
|
||||
<div class="medium-8 medium-offset-2 end columns">
|
||||
<ul class="pagination">
|
||||
{% for y in years %}
|
||||
{% if year == y %}
|
||||
<li><span class="current">{{y}}</a></li>
|
||||
{% else %}
|
||||
<li><a href="?{{ base_query }}year={{ y }}">{{y}}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if content.has_other_pages %}
|
||||
<div class="row">
|
||||
<div class="medium-8 medium-offset-2 end columns">
|
||||
|
|
|
@ -8,11 +8,12 @@ from django.conf import settings
|
|||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.core.mail import EmailMessage
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.db.models import Q
|
||||
from django.db.models import Q, Count
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.shortcuts import get_object_or_404, render, redirect
|
||||
from django.urls import reverse
|
||||
from django.views.generic.list import ListView
|
||||
from django.db.models.functions.datetime import TruncYear
|
||||
|
||||
from photologue.views import GalleryListView
|
||||
from photologue.models import Photo, Gallery
|
||||
|
@ -69,13 +70,34 @@ def section_index(request, section, max_length=10):
|
|||
'more_content': more_content,
|
||||
})
|
||||
|
||||
def content_years(content):
|
||||
years = [
|
||||
year['year'].year
|
||||
for year in content.annotate(year=TruncYear('datestart')).values('year').annotate(count=Count('shortname')).order_by('-year')
|
||||
]
|
||||
return years
|
||||
|
||||
def filter_by_years(content, year):
|
||||
years = content_years(content)
|
||||
if year.isdigit():
|
||||
year = int(year)
|
||||
else:
|
||||
year = years[0]
|
||||
content = content.filter(datestart__gte='%s-01-01' % year, datestart__lt='%s-01-01' % (year+1))
|
||||
return {
|
||||
'content': content,
|
||||
'year': year,
|
||||
'years': years
|
||||
}
|
||||
|
||||
def section_list(request, section):
|
||||
content = section_content(section)
|
||||
|
||||
q = request.GET.get('q')
|
||||
content = limit_content(content, q)
|
||||
year = request.GET.get('year', '')
|
||||
context = filter_by_years(content, year)
|
||||
|
||||
'''
|
||||
page = request.GET.get('page', 1)
|
||||
paginator = Paginator(content, ITEMS_PER_PAGE)
|
||||
try:
|
||||
|
@ -84,17 +106,17 @@ def section_list(request, section):
|
|||
content = paginator.page(1)
|
||||
except EmptyPage:
|
||||
content = paginator.page(paginator.num_pages)
|
||||
'''
|
||||
|
||||
base_query = ''
|
||||
if q:
|
||||
base_query = 'q=%s&' % q
|
||||
|
||||
return render(request, 'results.html', {
|
||||
context.update({
|
||||
'base_query': base_query,
|
||||
'content': content,
|
||||
'query': q,
|
||||
'section': section,
|
||||
})
|
||||
return render(request, 'results.html', context)
|
||||
|
||||
def event(request):
|
||||
now = datetime.now()
|
||||
|
@ -202,6 +224,9 @@ def search(request):
|
|||
content = content.exclude(type__name__in=['page', 'homepage'])
|
||||
q = request.GET.get('q')
|
||||
content = limit_content(content, q)
|
||||
year = request.GET.get('year', '')
|
||||
context = filter_by_years(content, year)
|
||||
'''
|
||||
page = request.GET.get('page', 1)
|
||||
paginator = Paginator(content, ITEMS_PER_PAGE)
|
||||
try:
|
||||
|
@ -210,17 +235,19 @@ def search(request):
|
|||
content = paginator.page(1)
|
||||
except EmptyPage:
|
||||
content = paginator.page(paginator.num_pages)
|
||||
'''
|
||||
|
||||
base_query = ''
|
||||
if q:
|
||||
base_query = 'q=%s&' % q
|
||||
|
||||
return render(request, 'results.html', {
|
||||
context.update({
|
||||
'base_query': base_query,
|
||||
'content': content,
|
||||
'query': q
|
||||
})
|
||||
|
||||
return render(request, 'results.html', context)
|
||||
|
||||
|
||||
class GalleryListViews(ListView):
|
||||
queryset = Gallery.objects.on_site().is_public()
|
||||
|
|
Loading…
Reference in New Issue
Block a user