diff options
Diffstat (limited to 'bn_django/git_wiki/views.py')
-rw-r--r-- | bn_django/git_wiki/views.py | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/bn_django/git_wiki/views.py b/bn_django/git_wiki/views.py deleted file mode 100644 index f16ea84..0000000 --- a/bn_django/git_wiki/views.py +++ /dev/null @@ -1,234 +0,0 @@ -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, Http404, HttpResponseServerError - -import os, commands - -from models import * -from settings import * -from django.contrib.comments.models import Comment - -# Create your views here. - -def frontpage(request): - t = fromslug('') - t.update() - #TODO: doesn't display free comments unless there's a comment - lc = Comment.objects.filter(content_type__name="item").order_by('-submit_date')[:6] - return render_to_response('git_wiki/frontpage.html', \ - dict(shortlog=shortlog(), tree=t, - latest_comments=lc, - newitems=newest_items())) - -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, - heads=heads,tags=tags)) - -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() - - try: - from docutils.core import publish_parts,Publisher - import latex_directive - latex_directive.dorawtexstuff = False - latex_directive.register() - except ImportError: - if settings.DEBUG: - raise HttpResponseServerError(request) - else: - docutils_settings = getattr(settings, "GITWIKI_REST_SETTINGS", {}) - parts = publish_parts(source=i.contents, writer_name="html4css1", settings_overrides=docutils_settings) - return render_to_response('git_wiki/item.html', - dict(item=i,doc=parts,user=request.user)) - -def latexitem(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() - - try: - from docutils.core import publish_parts,Publisher - import latex_directive - latex_directive.dorawtexstuff = True - latex_directive.register() - except ImportError: - if settings.DEBUG: - raise HttpResponseServerError(request) - else: - docutils_settings = getattr(settings, "GITWIKI_REST_SETTINGS", - {'format':'latex'}) - parts = publish_parts(source=i.contents, writer_name="latex", settings_overrides=docutils_settings) - hr = HttpResponse(mimetype="text/plain") - hr['Content-Disposition'] = 'filename=%s.tex' % reqslug - hr.write(parts['whole'].replace('{\$}','$')) - #hr.write(parts['whole']) - return hr - -def pdfitem(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() - - try: - from docutils.core import publish_parts,Publisher - import latex_directive - latex_directive.dorawtexstuff = True - latex_directive.register() - import tempfile,re,os,shutil - except ImportError: - if settings.DEBUG: - raise HttpResponseServerError(request) - else: - docutils_settings = getattr(settings, "GITWIKI_REST_SETTINGS", - {'format':'latex'}) - parts = publish_parts(source=i.contents, writer_name="latex", settings_overrides=docutils_settings) - tmpdir = tempfile.mkdtemp() - pre = i.slug().split('/') - for fig in re.findall('\\includegraphics.*\{(.+)\}', parts['whole']): - try: - if len(pre) > 1: - fig_blob = fromslug("%s/%s" % ('/'.join(pre[:-1])),fig) - else: - fig_blob = fromslug(fig) - fig_blob.update() - # if might have to create subdirectories for figures - fig_pre = fig.split('/') - if len(fig_pre) > 1: - os.mkdir("%s/%s" % (tmpdir,'/'.join(fig_pre[:-1]))) - fig_file = file(str("%s/%s" % (tmpdir,fig)),'wb') - fig_file.write(fig_blob.contents) - fig_file.close() - except: - parts['whole'].replace(fig,'') - hr = HttpResponse(mimetype="application/pdf") - #hr = HttpResponse() - hr['Content-Disposition'] = 'filename=%s.pdf' % reqslug - write_tex,pdf = os.popen2('rubber-pipe -qqq -d --into %s' % tmpdir) - write_tex.write(parts['whole'].replace('{\$}','$')) - write_tex.flush() - write_tex.close() - #hr.write(parts['whole']) - #pdf.flush() - for l in pdf.readlines(): - hr.write(l) - try: - pdff = open("%s/rubtmp0.pdf" % tmpdir,'r') - for l in pdff.readlines(): - hr.write(l) - pdff.close() - except: - pass - pdf.close() - shutil.rmtree(tmpdir) - return hr - -def rawitem(request, reqslug, blob=None): - if reqslug.endswith('/'): - reqslug=reqslug[:-1] - if not blob: - i = fromslug(reqslug) - if not i: - raise Http404 - if i.type == 'tree': - return tree(request, reqslug) - else: - i = blob - i.update() - slug = i.slug() - r = HttpResponse(mimetype="text/plain") - r['Content-Disposition'] = 'filename=%s.txt' % reqslug - r.write(i.contents) - return r - -def figure(request, reqslug, blob=None, download=False): - if reqslug.endswith('/'): - reqslug=reqslug[:-1] - if not blob: - i = fromslug(reqslug) - if not i: - l = reqslug.split('/') - if l[-2] == 'fig': - l = l[:-3] + l[-2:] - else: - l = l[:-2] + l[-1:] - i = fromslug('/'.join(l)) - if not i: - raise Http404 - if i.type == 'tree': - return tree(request, reqslug) - else: - i = blob - mime = "image/image" - slug = i.slug() - i.update() - if slug.endswith('.jpg') or slug.endswith('.jpeg'): - mime = "image/jpeg" - elif slug.endswith('.png'): - mime = "image/jpeg" - elif slug.endswith('.gif'): - mime = "image/jpeg" - elif slug.endswith('.svg'): - mime = "image/svg+xml" - r = HttpResponse(mimetype=mime) - if download: - r['Content-Disposition'] = 'attachment; filename=%s' % reqslug - else: - r['Content-Disposition'] = 'filename=%s' % reqslug - f = i.getfile() - t = f.readlines() - r.write(i.contents) - return r - -def olditem(request, hash): - i = get_object_or_404(Item, id=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() - try: - from pygments import highlight - from pygments.lexers import DiffLexer - from pygments.formatters import HtmlFormatter - c.pretty_diff = highlight(c.rawdiff, DiffLexer(), HtmlFormatter()) - except: pass - - return render_to_response('git_wiki/commit.html', - dict(heads=heads, tags=tags, - commit=c)) |