diff options
Diffstat (limited to 'bn_django/git_wiki/views.py')
-rw-r--r-- | bn_django/git_wiki/views.py | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/bn_django/git_wiki/views.py b/bn_django/git_wiki/views.py index 1212f44..2e66061 100644 --- a/bn_django/git_wiki/views.py +++ b/bn_django/git_wiki/views.py @@ -1,7 +1,7 @@ from django import forms, http, template from django.contrib.auth.decorators import login_required from django.shortcuts import get_object_or_404, render_to_response -from django.http import HttpResponse +from django.http import HttpResponse, Http404 import os, commands @@ -11,23 +11,36 @@ from settings import * # Create your views here. def frontpage(request): - t = fromslug('/') + t = fromslug('') t.update() return render_to_response('git_wiki/frontpage.html', \ dict(shortlog=shortlog(), tree=t)) -def tree(request, reqslug): - t = fromslug(reqslug) - if t.type == 'blob': - return item(request, reqslug) +def tree(request, reqslug, tree=None): + if not tree: + t = fromslug(reqslug) + if not t: + raise Http404 + if t.type == 'blob': + return item(request, reqslug, blob=t) + else: + t = tree + t.update() + (heads,tags) = reposcan() return render_to_response('git_wiki/tree.html', - dict(shortlog=shortlog(tree=t), tree=t)) + dict(shortlog=shortlog(tree=t), tree=t, + heads=heads,tags=tags)) -def item(request, reqslug): - i = fromslug(reqslug) - if i.type == 'tree': - return tree(request, reqslug) +def item(request, reqslug, blob=None): + if not blob: + i = fromslug(reqslug) + if not i: + raise Http404 + if i.type == 'tree': + return tree(request, reqslug) + else: + i = blob i.update() return render_to_response('git_wiki/item.html', dict(item=i)) @@ -37,3 +50,12 @@ def olditem(request, hash): i.update() return render_to_response('git_browse/olditem.html', dict(item=i)) + +def view_commit(request, hash): + (heads, tags) = reposcan() + c = Commit(id=hash) + c.update() + + return render_to_response('git_wiki/commit.html', + dict(heads=heads, tags=tags, + commit=c)) |