Fix bug #13: pagination for bugs.

portnov [2008-06-14 14:49:56]
Fix bug #13: pagination for bugs.
Filename
mgmt/views.py
settings.py
templates/all_bugs.html
templates/project_bugs.html
diff --git a/mgmt/views.py b/mgmt/views.py
index 31c09d8..db799f7 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -39,6 +39,19 @@ def get_comments(request,id,type):
     range = None
   return page_num,range, page.object_list

+def get_bugs(request,pid=None):
+  if pid:
+    all = Bug.objects.filter(project__pk=pid)
+  else:
+    all = Bug.objects.all()
+  pg = Paginator(all,settings.BUGS_PER_PAGE)
+  page_num = int(request.GET.get('page',1))
+  page = pg.page(page_num)
+  range = pg.page_range
+  if range == [1]:
+    range = None
+  return page_num,range, page.object_list
+
 ############
 # Forms
 ############
@@ -130,13 +143,15 @@ def one_project(request,id):

 def project_bugs(request,id):
   project = Project.objects.get(pk=id)
-  bugs = Bug.objects.filter(project=project)
+  page,pages,bugs = get_bugs(request,id)
   for bug in bugs:
     bug.complexity_str = dict(settings.COMPLEXITY_CHOICES).get(bug.complexity,'Unknown')
     bug.priority_str = dict(settings.PRIORITY_CHOICES).get(bug.priority,'Unset')
   can_report = can(request.user,'send bug')
   return render_it('project_bugs.html',
       {'project': project,
+       'current_page': page,
+       'page_numbers': pages,
        'bugs': bugs,
        'can_report': can_report},
        request)
@@ -340,14 +355,16 @@ def create_document(request,project):
        request)

 def all_bugs(request):
-  bugs = Bug.objects.all()
+  page,pages,bugs = get_bugs(request)
   return render_it('all_bugs.html',
-     {'bugs': bugs},
+     {'bugs': bugs,
+      'current_page': page,
+      'page_numbers': pages},
      request)

 def bugs_by_state(request,sid):
   state = BugState.objects.get(pk=sid)
-  bugs = Bug.objects.filter(status=state)
+  page,pages,bugs = Bug.objects.filter(status=state)
   return render_it('all_bugs.html',
      {'bugs': bugs,
       'state': state.name},
diff --git a/settings.py b/settings.py
index 3f3a553..abe25c2 100644
--- a/settings.py
+++ b/settings.py
@@ -102,6 +102,7 @@ BUG_RIGHTS = {
   (5,1): 'Team'}

 COMMENTS_PER_PAGE = 10
+BUGS_PER_PAGE = COMMENTS_PER_PAGE

 MENU_ANONYMOUS = [(u'Главная','/'),
                   (u'Вход','/login/')]
diff --git a/templates/all_bugs.html b/templates/all_bugs.html
index 135cc39..d4c913c 100644
--- a/templates/all_bugs.html
+++ b/templates/all_bugs.html
@@ -19,5 +19,6 @@
     </div>
 {% endfor %}
 </div>
+{% include "pager.html" %}

 {% endblock %}
diff --git a/templates/project_bugs.html b/templates/project_bugs.html
index 9bbb530..7c4df45 100644
--- a/templates/project_bugs.html
+++ b/templates/project_bugs.html
@@ -36,6 +36,7 @@
       </div>
     {% endfor %}
   </div>
+  {% include "pager.html" %}
 {% else %}
 <p>В этом проекте нет багов.</p>
 {%endif%}
ViewGit