sort issues by last activity / creation date

This commit is contained in:
Élie Bouttier 2014-12-03 01:11:21 +01:00
parent 47a915197b
commit f92f87ce60
2 changed files with 22 additions and 9 deletions

View file

@ -61,7 +61,6 @@
{% endif %} {% endif %}
</ul> </ul>
</div> </div>
{% comment %}
<div class="btn-group"> <div class="btn-group">
<button class="btn btn-default dropdown-toggle" type="button" id="issue-sort-menu" data-toggle="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="issue-sort-menu" data-toggle="dropdown">
Sort Sort
@ -69,15 +68,16 @@
</button> </button>
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="issue-sort-menu"> <ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="issue-sort-menu">
<li role="presentation" class="dropdown-header">Sort by</li> <li role="presentation" class="dropdown-header">Sort by</li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=newest">Newest</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=oldest">Oldest</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=most commented">Most commented</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=least-commented">Least commented</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=recently-updated">Recently updated</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=recently-updated">Recently updated</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=least-recently-updated">Least recently updated</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=least-recently-updated">Least recently updated</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=newest">Newest</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=oldest">Oldest</a></li>
{% comment %}
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=most commented">Most commented</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="?q={{ query }}&sort=least-commented">Least commented</a></li>
{% endcomment %}
</ul> </ul>
</div> </div>
{% endcomment %}
</div> </div>
</div> </div>
</div> </div>

View file

@ -6,6 +6,7 @@ from django.views.decorators.http import require_http_methods
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.http import HttpResponse from django.http import HttpResponse
from django.db.models import Max
from tracker.utils import markdown_to_html from tracker.utils import markdown_to_html
from tracker.forms import * from tracker.forms import *
@ -202,8 +203,10 @@ def issue_list(request, project):
milestones = Milestone.objects.filter(project=project) milestones = Milestone.objects.filter(project=project)
sort = request.GET.get('sort', '') sort = request.GET.get('sort', '')
if sort: sort_type = ['recently-updated', 'least-recently-updated',
sort = '&' + sort 'newest', 'oldest', '']
if sort not in sort_type:
sort = ''
is_open = '' is_open = ''
is_close = '' is_close = ''
@ -290,11 +293,21 @@ def issue_list(request, project):
is_all_query += ' ' + constraint is_all_query += ' ' + constraint
if issues: if issues:
if sort and sort == 'newest':
issues = issues.extra(order_by=['-opened_at']) issues = issues.extra(order_by=['-opened_at'])
elif sort and sort == 'oldest':
issues = issues.extra(order_by=['opened_at'])
elif sort and sort == 'least-recently-updated':
issues = issues.annotate(last_activity=Max('events__date')).order_by('last_activity')
else: # recently-updated
issues = issues.annotate(last_activity=Max('events__date')).order_by('-last_activity')
if is_open == '' and is_close == '': if is_open == '' and is_close == '':
is_all = ' active' is_all = ' active'
if sort and sort != 'recently-updated':
sort = '&sort=' + sort
c = { c = {
'project': project, 'project': project,
'issues': issues, 'issues': issues,