summaryrefslogtreecommitdiffstats
path: root/flatpages
diff options
context:
space:
mode:
Diffstat (limited to 'flatpages')
-rw-r--r--flatpages/admin.py5
-rw-r--r--flatpages/models.py11
-rw-r--r--flatpages/views.py39
3 files changed, 52 insertions, 3 deletions
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,20 +42,32 @@ def flatpage(request, path):
raise Http404
if path.endswith(".htm") or path.endswith(".html"):
html = o.read()
+
m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", html, re.DOTALL)
+ mwithid = re.search(r'<head>(.*)</head>.*<body id="([^"]*)">(.*)</body>', 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")
except IOError:
@@ -43,6 +76,8 @@ def editflatpage(request, path):
m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", 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...