aboutsummaryrefslogtreecommitdiffstats
path: root/bn_django/git_wiki/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'bn_django/git_wiki/views.py')
-rw-r--r--bn_django/git_wiki/views.py234
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))