From 8578a3097a44ffd277f65127b865160ab79ad317 Mon Sep 17 00:00:00 2001 From: Martin Green Date: Mon, 11 Jul 2011 00:13:06 +0100 Subject: [PATCH] Added flat pages for entrance and special flatpage redirects. Enetrances should probably store their urls like cavers. Maybe the flatpages should be handled by the app Aaron installed. --- flatpages/admin.py | 5 +++++ flatpages/models.py | 11 ++++++++++- flatpages/views.py | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 flatpages/admin.py diff --git a/flatpages/admin.py b/flatpages/admin.py new file mode 100644 index 0000000..2bb1f84 --- /dev/null +++ b/flatpages/admin.py @@ -0,0 +1,5 @@ +from troggle.flatpages.models import Redirect, EntranceRedirect +from django.contrib import admin + +admin.site.register(Redirect) +admin.site.register(EntranceRedirect) diff --git a/flatpages/models.py b/flatpages/models.py index 71a8362..1c97851 100644 --- a/flatpages/models.py +++ b/flatpages/models.py @@ -1,3 +1,12 @@ from django.db import models +from core.models import Cave, Entrance -# Create your models here. +class Redirect(models.Model): + originalURL = models.CharField(max_length=200, unique=True) + newURL = models.CharField(max_length=200) + +class EntranceRedirect(models.Model): + originalURL = models.CharField(max_length=200) + entrance = models.ForeignKey(Entrance) + def __unicode__(self): + return self.entrance.slug diff --git a/flatpages/views.py b/flatpages/views.py index 9c7483e..5f7b579 100644 --- a/flatpages/views.py +++ b/flatpages/views.py @@ -7,12 +7,33 @@ from django.core.urlresolvers import reverse from django.template import Context, loader import django.forms as forms from tinymce.widgets import TinyMCE +from troggle.flatpages.models import Redirect, EntranceRedirect +from troggle.core.models import Cave +import troggle.core.views_caves import os import re def flatpage(request, path): - print path + try: + r = Redirect.objects.get(originalURL = path) + return HttpResponseRedirect(r.newURL) # Redirect after POST + except Redirect.DoesNotExist: + pass + + try: + r = Cave.objects.get(url = path) + return troggle.core.views_caves.caveSlug(request, r.slug) + except Cave.DoesNotExist: + pass + + try: + r = EntranceRedirect.objects.get(originalURL = path) + return troggle.core.views_caves.enranceSlug(request, r.entrance.slug) + except EntranceRedirect.DoesNotExist: + pass + + if path.startswith("noinfo") and settings.PUBLIC_SITE and not request.user.is_authenticated(): return HttpResponseRedirect(reverse("auth_login") + '?next=%s' % request.path) try: @@ -21,19 +42,31 @@ def flatpage(request, path): raise Http404 if path.endswith(".htm") or path.endswith(".html"): html = o.read() + m = re.search(r"(.*).*(.*)", html, re.DOTALL) + mwithid = re.search(r'(.*).*(.*)', html, re.DOTALL) if m: head, body = m.groups() + bodyid = None + elif mwithid: + head, bodyid, body = mwithid.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}) + return render_with_context(request, 'flatpage.html', {'editable': True, 'path': path, 'head': head, 'body': body, "bodyid": bodyid}) else: return HttpResponse(o.read()) @login_required_if_public def editflatpage(request, path): + try: + r = CaveRedirect.objects.get(originalURL = path) + return troggle.core.views_caves.editCave(request, r.cave.slug) + except CaveRedirect.DoesNotExist: + pass + + try: filepath = os.path.normpath(settings.EXPOWEB + path) o = open(filepath, "r") @@ -43,6 +76,8 @@ def editflatpage(request, path): m = re.search(r"(.*).*(.*)", html, re.DOTALL) if m: head, body = m.groups() + if re.search(r"iso-8859-1", html): + body = unicode(body, "iso-8859-1") else: return HttpResponse("Page could not be split into header and body") if request.method == 'POST': # If the form has been submitted...