diff --git a/media/css/main.css b/media/css/main.css
index a07d469..e2b090f 100644
--- a/media/css/main.css
+++ b/media/css/main.css
@@ -134,6 +134,22 @@ p.date {
text-align: right;
}
+div.pager {
+ text-align: center;
+}
+
+span.pager {
+ padding: 1ex;
+}
+
+.pager-other {
+ border: 1px #091 solid;
+}
+
+.pager-current {
+ border: 1px #888 solid;
+}
+
.bug {
border: 1px #888 solid;
padding: 1ex;
diff --git a/mgmt/views.py b/mgmt/views.py
index 666d90c..5e1c26a 100644
--- a/mgmt/views.py
+++ b/mgmt/views.py
@@ -4,6 +4,7 @@
from datetime import datetime
from django.http import HttpResponse,Http404
+from django.core.paginator import Paginator
from django.template import RequestContext
from django.template.loader import get_template
from django.shortcuts import render_to_response
@@ -14,14 +15,13 @@ from models import *
from context import add_blocks,debug_messages,add_menu
from rights import can,possible_changes
+COMMENTS_PER_PAGE = 10
+
def render_it(template,dict,request):
c = RequestContext(request,dict,[add_blocks,add_menu,debug_messages])
t = get_template(template)
return HttpResponse(t.render(c))
-# def render_it(template,dict,request):
-# return render_to_response(template,dict)
-
class CommentForm(forms.Form):
title = forms.CharField()
text = forms.CharField(widget=forms.Textarea())
@@ -35,6 +35,16 @@ class DocForm(forms.Form):
# project = forms.ModelChoiceField(Project.objects.all())
text = forms.CharField(widget=forms.Textarea())
+def get_comments(request,id,type):
+ all = Comment.objects.filter(object_id=id, object_type=type)
+ pg = Paginator(all,COMMENTS_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
+
def main(request):
projects = Project.objects.all()
return render_it('main.html',{'projects': projects},request)
@@ -53,13 +63,15 @@ def one_project(request,id):
title = title,
text = text)
c.save()
- comments = Comment.objects.filter(object_id=project.id,object_type='Project')
+ curr,pages,comments = get_comments(request,project.id,'Project')
if can(request.user,'comment'):
form = CommentForm()
else:
form = None
return render_it('project.html',
{'project': project,
+ 'current_page': curr,
+ 'page_numbers': pages,
'comments': comments,
'form': form},
request)
@@ -110,7 +122,7 @@ def one_document(request,id):
title = title,
text = text)
c.save()
- comments = Comment.objects.filter(object_id=doc.id,object_type='Document')
+ curr,pages,comments = get_comments(request,doc.id,'Document')
if can(request.user,'comment'):
form = CommentForm()
else:
@@ -122,6 +134,8 @@ def one_document(request,id):
return render_it('document.html',
{'document': doc,
'edit_link': edit_link,
+ 'current_page': curr,
+ 'page_numbers': pages,
'comments': comments,
'form': form},
request)
@@ -164,7 +178,7 @@ def one_bug(request,id):
if bug.status.id==3:
bug.responsible = request.user
bug.save()
- comments = Comment.objects.filter(object_id=bug.id,object_type='Bug')
+ curr,pages,comments = get_comments(request,bug.id,'Bug')
change_states = possible_changes(bug,request.user)
if change_states:
choices = [(st.id,st.name) for st in change_states]
@@ -188,6 +202,8 @@ def one_bug(request,id):
'change_state': state_form,
'edit_link': edit_link,
'project': bug.project,
+ 'current_page': curr,
+ 'page_numbers': pages,
'comments': comments,
'form': form},
request)
diff --git a/pygit/pygit.py b/pygit/pygit.py
index 55bf554..876e898 100644
--- a/pygit/pygit.py
+++ b/pygit/pygit.py
@@ -3,7 +3,8 @@ from os.path import basename
from git import *
REPOS = ['/home/portnov/www/projects',
- '/home/portnov/www/projects/mgmt/hms']
+ '/home/portnov/www/projects/mgmt/hms',
+ '/home/portnov/git/pylambda']
rp = None
curr_path = None
@@ -112,5 +113,5 @@ def commits_stats(rid,branch='master'):
y,m,d = tp
return "%d.%d" % (d,m)
r = open_repo(rid)
- d = [c.authored_date[:3] for c in r.commits(branch)][:20]
- return [(date(t[0]),t[1]) for t in uniq(d)]
+ d = [c.authored_date[:3] for c in r.commits(branch,max_count=100)]
+ return [(date(t[0]),t[1]) for t in uniq(d)][:20]
diff --git a/templates/comments.html b/templates/comments.html
index d9297fb..87369c3 100644
--- a/templates/comments.html
+++ b/templates/comments.html
@@ -1,4 +1,4 @@
-{% if comments.count %}
+{% if comments %}
<h3>Комментарии</h3>
<div class='comments'>
{% for comment in comments %}
@@ -10,6 +10,7 @@
</div>
{% endfor %}
</div>
+ {% include "pager.html" %}
{% else %}
<p>Комментариев пока нет.</p>
{% endif %}
diff --git a/templates/pager.html b/templates/pager.html
new file mode 100644
index 0000000..765d74c
--- /dev/null
+++ b/templates/pager.html
@@ -0,0 +1,11 @@
+{% if page_numbers %}
+<div class='pager'>
+ {% for page in page_numbers %}
+ {% ifequal page current_page %}
+ <span class='pager pager-current'>{{page}}</span>
+ {% else %}
+ <span class='pager pager-other'><a href='?page={{page}}'>{{page}}</a></span>
+ {% endifequal %}
+ {% endfor %}
+</div>
+{% endif %}