diff options
author | Wookey <wookey@wookware.org> | 2011-07-10 23:30:36 +0100 |
---|---|---|
committer | Wookey <wookey@wookware.org> | 2011-07-10 23:30:36 +0100 |
commit | 1e1d63c768fb7791f278c164ded138e95fd787e5 (patch) | |
tree | 63c7e3d9693802991c6c278a7461fd577445dc8e /flatpages/views.py | |
parent | ca6e50b8abc07c22d90d5626ade1a0a1c52d09bf (diff) | |
parent | f318105a9bed2792fa3cab017bb6a2d5c8204284 (diff) | |
download | troggle-1e1d63c768fb7791f278c164ded138e95fd787e5.tar.gz troggle-1e1d63c768fb7791f278c164ded138e95fd787e5.tar.bz2 troggle-1e1d63c768fb7791f278c164ded138e95fd787e5.zip |
merge fix from martin's tip.
Diffstat (limited to 'flatpages/views.py')
-rw-r--r-- | flatpages/views.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/flatpages/views.py b/flatpages/views.py new file mode 100644 index 0000000..9c7483e --- /dev/null +++ b/flatpages/views.py @@ -0,0 +1,62 @@ +import troggle.settings as settings +from troggle.helper import login_required_if_public +from utils import render_with_context + +from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django.core.urlresolvers import reverse +from django.template import Context, loader +import django.forms as forms +from tinymce.widgets import TinyMCE + +import os +import re + +def flatpage(request, path): + print path + if path.startswith("noinfo") and settings.PUBLIC_SITE and not request.user.is_authenticated(): + return HttpResponseRedirect(reverse("auth_login") + '?next=%s' % request.path) + try: + o = open(os.path.normpath(settings.EXPOWEB + path), "rb") + except IOError: + raise Http404 + if path.endswith(".htm") or path.endswith(".html"): + html = o.read() + m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", html, re.DOTALL) + if m: + head, body = m.groups() + else: + return HttpResponse(html + "Page could not be split into header and body") + if re.search(r"iso-8859-1", html): + body = unicode(body, "iso-8859-1") + return render_with_context(request, 'flatpage.html', {'editable': True, 'path': path, 'head': head, 'body': body}) + else: + return HttpResponse(o.read()) + +@login_required_if_public +def editflatpage(request, path): + try: + filepath = os.path.normpath(settings.EXPOWEB + path) + o = open(filepath, "r") + except IOError: + raise Http404 + html = o.read() + m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", html, re.DOTALL) + if m: + head, body = m.groups() + else: + return HttpResponse("Page could not be split into header and body") + if request.method == 'POST': # If the form has been submitted... + flatpageForm = FlatPageForm(request.POST) # A form bound to the POST data + if flatpageForm.is_valid():# Form valid therefore write file + f = open(filepath, "w") + template = loader.get_template('dataformat/flatfile.html') + context = Context({'form': flatpageForm.cleaned_data, 'head': head}) + f.write(template.render(context)) + f.close() + return HttpResponseRedirect(reverse('flatpage', args=[path])) # Redirect after POST + else: + flatpageForm = FlatPageForm({"html": body}) + return render_with_context(request, 'editflatpage.html', {'path': path, 'form': flatpageForm, }) + +class FlatPageForm(forms.Form): + html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) |