From 16c2c733890b94de4b41cb910abd545e369a9c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sat, 17 Nov 2012 09:46:33 +0100 Subject: [PATCH] Add navigation bar and fix the bug of "too many values to unbound" --- templates/category.html | 1 + templates/generate.html | 4 ++ templates/tag.html | 1 + templates/view_blog.html | 6 ++- views.py | 85 ++++++++++++++++++++++++++++------------ 5 files changed, 72 insertions(+), 25 deletions(-) diff --git a/templates/category.html b/templates/category.html index 6b16ca0..4e8dfac 100644 --- a/templates/category.html +++ b/templates/category.html @@ -1,6 +1,7 @@ {% extends "templates/base.html" %} {% block content %} +Home Categories Tags

{% if categories|length == 0 %} Any category available

{% else %} diff --git a/templates/generate.html b/templates/generate.html index 2cebed7..9ef2591 100644 --- a/templates/generate.html +++ b/templates/generate.html @@ -31,4 +31,8 @@ {% endfor %} {% endif %} +

+{% autoescape off %} +
{{ navigation_bar }}
+{% endautoescape %} {% endblock %} diff --git a/templates/tag.html b/templates/tag.html index 5e11577..3341a4d 100644 --- a/templates/tag.html +++ b/templates/tag.html @@ -1,6 +1,7 @@ {% extends "templates/base.html" %} {% block content %} +Home Categories Tags

{% if tags|length == 0 %} Any tag available

{% else %} diff --git a/templates/view_blog.html b/templates/view_blog.html index b5d2acf..4fac7c0 100644 --- a/templates/view_blog.html +++ b/templates/view_blog.html @@ -1,7 +1,7 @@ {% extends "templates/base.html" %} {% block content %} -Home Categories Tags +Home Categories Tags {% if user.is_superuser %}
{% csrf_token %} @@ -24,4 +24,8 @@ {% endfor %} {% endif %} +

+{% autoescape off %} +
{{ navigation_bar }}
+{% endautoescape %} {% endblock %} diff --git a/views.py b/views.py index 4cf16d5..96c766d 100644 --- a/views.py +++ b/views.py @@ -55,6 +55,29 @@ def have_I_right(request, blog_id=None, post_id=None, must_be_superuser=False): return (b, p) +def createNavigationBar(blog_id, cur_page, nb_pages): + navigation_bar = '' + if cur_page == 0: + navigation_bar += '<< <' + else: + navigation_bar += '<< ' % blog_id + navigation_bar += '< ' % (blog_id, cur_page-1) + + for i in range(nb_pages+1): + if i == cur_page: + navigation_bar += ' %d' % (i+1) + else: + navigation_bar += ' %d' % (blog_id, i, i+1) + + if cur_page == nb_pages: + navigation_bar += ' > >>' + else: + navigation_bar += ' >' % (blog_id, nb_pages) + navigation_bar += ' >>' % (blog_id, nb_pages) + + return navigation_bar + + def index(request): if request.user.is_authenticated(): return HttpResponseRedirect('/blog') @@ -150,17 +173,17 @@ def edit_user(request, user_id): @login_required def category(request, blog_id): - b = have_I_right(request, blog_id) + b,_ = have_I_right(request, blog_id) categories = Category.objects.filter(blog_id=blog_id) - c = {'categories' : categories} + c = {'categories' : categories, 'blog' : b} return render(request, 'templates/category.html', c) @login_required def add_category(request, blog_id): - b = have_I_right(request, blog_id)[0] + b,_ = have_I_right(request, blog_id) if request.method == 'POST': # If the form has been submitted... if 'add' in request.POST: @@ -187,7 +210,7 @@ def edit_category(request, category_id): if category is None: raise Http404 - b = have_I_right(request, category.blog.id)[0] + b,_ = have_I_right(request, category.blog.id) if request.method == 'POST': # If the form has been submitted... if 'cancel' in request.POST: @@ -215,7 +238,7 @@ def delete_category(request, category_id): if category is None: raise Http404 - b = have_I_right(request, category.blog.id)[0] + b,_ = have_I_right(request, category.blog.id) category.remove() category.delete() @@ -224,11 +247,11 @@ def delete_category(request, category_id): @login_required def tag(request, blog_id): - b = have_I_right(request, blog_id) + b,_ = have_I_right(request, blog_id) tags = Tag.objects.filter(blog_id=blog_id) - c = {'tags' : tags} + c = {'tags' : tags, 'blog' : b} return render(request, 'templates/tag.html', c) @@ -239,7 +262,7 @@ def edit_tag(request, tag_id): if tag is None: raise Http404 - b = have_I_right(request, tag.blog.id)[0] + b,_ = have_I_right(request, tag.blog.id) if request.method == 'POST': # If the form has been submitted... if 'cancel' in request.POST: @@ -266,7 +289,7 @@ def delete_tag(request, tag_id): if tag is None: raise Http404 - b = have_I_right(request, tag.blog.id)[0] + b,_ = have_I_right(request, tag.blog.id) tag.remove(b) tag.delete() @@ -307,16 +330,27 @@ def add_blog(request): @login_required def view_blog(request, blog_id): - if not request.user.is_superuser: - b = Blog.objects.filter(id=blog_id).filter(writers=request.user.id) + b,_ = have_I_right(request, blog_id) + + count = Post.objects.filter(blog=b).count() + nb_pages = int(count/50) + if 'page' in request.GET: + cur_page = int(request.GET['page']) else: - b = Blog.objects.get(pk=blog_id) + if 'cur_page' in request.session: + cur_page = request.session['cur_page'] + else: + cur_page = 0 - if b is None: - raise Http404 + if cur_page < 0 : cur_page = 0 + if cur_page > nb_pages : cur_page = nb_pages-1 - posts = Post.objects.filter(blog=b).order_by('-creation_date') - b = Blog.objects.get(pk=blog_id) + request.session['cur_page'] = cur_page + + start = cur_page * 50 + end = start + 50 + + posts = Post.objects.filter(blog=b).order_by('-creation_date')[start:end] form = BlogForm(instance=b) comments = Comment.objects.all() @@ -328,7 +362,9 @@ def view_blog(request, blog_id): else: dict_comments[key] = dict_comments[key] + 1 - c = {'blog' : b, 'posts' : posts, 'form' : form, 'comments' : dict_comments} + navigation_bar = createNavigationBar(b.id, cur_page, nb_pages) + + c = {'blog' : b, 'posts' : posts, 'form' : form, 'comments' : dict_comments, 'navigation_bar' : navigation_bar} return render(request, 'templates/view_blog.html', c) @@ -389,7 +425,6 @@ def add_post(request, blog_id): @login_required def edit_post(request, post_id): (b, post) = have_I_right(request, None, post_id) - post = Post.objects.get(pk=post_id) title = post.title blog_id = b.id @@ -434,20 +469,20 @@ def edit_post(request, post_id): def delete_post(request, post_id): (b, post) = have_I_right(request, None, post_id) - blog_id = b.id - post.delete() - return HttpResponseRedirect('/blog/' + str(blog_id)) + return HttpResponseRedirect('/blog/' + str(b.id)) @login_required def generate(request, blog_id): - (b, post) = have_I_right(request, blog_id) + b,_ = have_I_right(request, blog_id) b.create_paths() report = b.generate() - posts = Post.objects.filter(blog=b).order_by('-creation_date') + count = Post.objects.filter(blog=b).count() + nb_pages = int(count/50) + posts = Post.objects.filter(blog=b).order_by('-creation_date')[0:50] b = Blog.objects.get(pk=blog_id) form = BlogForm(instance=b) @@ -460,7 +495,9 @@ def generate(request, blog_id): else: dict_comments[key] = dict_comments[key] + 1 - c = {'blog' : b, 'posts' : posts, 'form' : form, 'report': report, 'comments' : dict_comments} + navigation_bar = createNavigationBar(b.id, 0, nb_pages) + + c = {'blog' : b, 'posts' : posts, 'form' : form, 'report': report, 'comments' : dict_comments, 'navigation_bar' : navigation_bar} return render(request, 'templates/generate.html', c)