diff options
-rw-r--r-- | templates/todolists/list.html | 13 | ||||
-rw-r--r-- | todolists/views.py | 15 |
2 files changed, 22 insertions, 6 deletions
diff --git a/templates/todolists/list.html b/templates/todolists/list.html index 29829ca..2e75bda 100644 --- a/templates/todolists/list.html +++ b/templates/todolists/list.html @@ -20,6 +20,8 @@ <th>Creation Date</th> <th>Creator</th> <th>Description</th> + <th>Package Count</th> + <th>Incomplete Count</th> <th>Status</th> </tr> </thead> @@ -31,8 +33,10 @@ <td>{{ list.date_added }}</td> <td>{{ list.creator.get_full_name }}</td> <td class="wrap">{{ list.description|safe }}</td> - <td>{% if list.complete %}<span class="complete">Complete</span> - {% else %}<span class="incomplete">Incomplete</span>{% endif %}</td> + <td>{{ list.pkg_count }}</td> + <td>{{ list.incomplete_count }}</td> + <td>{% ifequal list.incomplete_count 0 %}<span class="complete">Complete</span> + {% else %}<span class="incomplete">Incomplete</span>{% endifequal %}</td> </tr> {% endfor %} </tbody> @@ -42,7 +46,10 @@ <script type="text/javascript" src="/media/jquery.tablesorter.min.js"></script> <script type="text/javascript"> $(document).ready(function() { - $(".results").tablesorter({widgets: ['zebra'], sortList: [[1,1]]}); + // I'm not sure why it didn't autodetect digit, but it has to be explicit + // http://stackoverflow.com/questions/302749/jquery-tablesorter-problem + $(".results").tablesorter({widgets: ['zebra'], sortList: [[1,1]], + headers: { 4: { sorter: 'digit' }, 5: { sorter: 'digit' } } }); }); </script> {% endblock %} diff --git a/todolists/views.py b/todolists/views.py index e366333..2518624 100644 --- a/todolists/views.py +++ b/todolists/views.py @@ -4,6 +4,7 @@ from django.http import HttpResponse from django.core.mail import send_mail from django.shortcuts import get_object_or_404, redirect from django.contrib.auth.decorators import login_required, permission_required +from django.db.models import Count from django.views.decorators.cache import never_cache from django.views.generic.create_update import delete_object from django.views.generic.simple import direct_to_template @@ -53,10 +54,18 @@ def view(request, listid): @login_required @never_cache def list(request): - lists = Todolist.objects.select_related('creator').order_by('-date_added') + lists = Todolist.objects.select_related('creator').annotate( + pkg_count=Count('todolistpkg')).order_by('-date_added') + incomplete = Todolist.objects.filter(todolistpkg__complete=False).annotate( + Count('todolistpkg')).values_list('id', 'todolistpkg__count') + + # tag each list with an incomplete package count + lookup = {} + for k, v in incomplete: + lookup[k] = v for l in lists: - l.complete = TodolistPkg.objects.filter( - list=l.id,complete=False).count() == 0 + l.incomplete_count = lookup.get(l.id, 0) + return direct_to_template(request, 'todolists/list.html', {'lists': lists}) @permission_required('main.add_todolist') |