Skip to content

Commit 5208356

Browse files
committed
Add support for filtering by Unassigned engagements/tests
1 parent 2e5295b commit 5208356

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

dojo/engagement/views.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import os
44
from datetime import datetime, timedelta
5+
import operator
56

67
from django.contrib.auth.models import User
78
from django.conf import settings
@@ -43,10 +44,17 @@
4344
@user_passes_test(lambda u: u.is_staff)
4445
@cache_page(60 * 5) # cache for 5 minutes
4546
def engagement_calendar(request):
46-
if not 'lead' in request.GET or '*' in request.GET.getlist('lead'):
47+
if not 'lead' in request.GET or '0' in request.GET.getlist('lead'):
4748
engagements = Engagement.objects.all()
4849
else:
49-
engagements = Engagement.objects.filter(lead__username__in=request.GET.getlist('lead', ''))
50+
filters = []
51+
leads = request.GET.getlist('lead','')
52+
if '-1' in request.GET.getlist('lead'):
53+
leads.remove('-1')
54+
filters.append(Q(lead__isnull=True))
55+
filters.append(Q(lead__in=leads))
56+
engagements = Engagement.objects.filter(reduce(operator.or_, filters))
57+
5058
add_breadcrumb(title="Calendar", top_level=True, request=request)
5159
return render(request, 'dojo/calendar.html', {
5260
'caltype': 'engagements',

dojo/templates/dojo/calendar.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
</div>
1616
<div class="col-lg-6" style="width:400px;">
1717
<select data-placeholder="All users" multiple id="lead" name="lead" class="chosen-select">
18-
<option value="*">All users</option>
18+
<option value="0">All users</option>
19+
<option value="-1">Unassigned</option>
1920
{% for u in users %}
20-
<option value="{{ u.username }}">{{ u.username }}</option>
21+
<option value="{{ u.id }}">{{ u.username }}</option>
2122
{% endfor %}
2223
</select>
2324
</div>

dojo/test/views.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import logging
44
import sys
5+
import operator
56
from datetime import datetime
67

78
from django.conf import settings
89
from django.contrib import messages
910
from django.contrib.auth.decorators import user_passes_test
1011
from django.core.urlresolvers import reverse
12+
from django.db.models import Q
1113
from django.http import HttpResponseRedirect, HttpResponseForbidden, Http404, HttpResponse
1214
from django.shortcuts import render, get_object_or_404
1315
from django.views.decorators.cache import cache_page
@@ -161,10 +163,16 @@ def delete_test_note(request, tid, nid):
161163
@user_passes_test(lambda u: u.is_staff)
162164
@cache_page(60 * 5) # cache for 5 minutes
163165
def test_calendar(request):
164-
if not 'lead' in request.GET or '*' in request.GET.getlist('lead'):
166+
if not 'lead' in request.GET or '0' in request.GET.getlist('lead'):
165167
tests = Test.objects.all()
166168
else:
167-
tests = Test.objects.filter(engagement__lead__username__in=request.GET.getlist('lead', ''))
169+
filters = []
170+
leads = request.GET.getlist('lead','')
171+
if '-1' in request.GET.getlist('lead'):
172+
leads.remove('-1')
173+
filters.append(Q(lead__isnull=True))
174+
filters.append(Q(lead__in=leads))
175+
tests = Test.objects.filter(reduce(operator.or_, filters))
168176
add_breadcrumb(title="Calendar", top_level=True, request=request)
169177
return render(request, 'dojo/calendar.html', {
170178
'caltype': 'tests',

0 commit comments

Comments
 (0)