summaryrefslogtreecommitdiffstats
path: root/feincms/views
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-21 19:47:19 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-21 19:47:19 +0100
commit54a62999c03f5293b42d56f9a99b1c5a3b02fa5f (patch)
tree8221aee4d3e16f1373c3162cd7c44eebb273345a /feincms/views
parent99949d466a0bf2667bad10f8c6c2c751036fd858 (diff)
downloadtroggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.tar.gz
troggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.tar.bz2
troggle-54a62999c03f5293b42d56f9a99b1c5a3b02fa5f.zip
[svn] Updates to allow subcave tree with nice admin.
Diffstat (limited to 'feincms/views')
-rw-r--r--feincms/views/__init__.py0
-rw-r--r--feincms/views/base.py23
-rw-r--r--feincms/views/decorators.py16
-rw-r--r--feincms/views/generic/__init__.py0
-rw-r--r--feincms/views/generic/create_update.py8
-rw-r--r--feincms/views/generic/date_based.py12
-rw-r--r--feincms/views/generic/list_detail.py7
-rw-r--r--feincms/views/generic/simple.py6
8 files changed, 72 insertions, 0 deletions
diff --git a/feincms/views/__init__.py b/feincms/views/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/feincms/views/__init__.py
diff --git a/feincms/views/base.py b/feincms/views/base.py
new file mode 100644
index 0000000..47ca887
--- /dev/null
+++ b/feincms/views/base.py
@@ -0,0 +1,23 @@
+from django.http import HttpResponseRedirect
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from django.utils import translation
+
+from feincms.module.page.models import Page
+
+
+def handler(request, path=None):
+ if path is None:
+ path = request.path
+
+ page = Page.objects.page_for_path_or_404(path)
+
+ if page.redirect_to:
+ return HttpResponseRedirect(page.redirect_to)
+
+ page.setup_request(request)
+
+ return render_to_response(page.template.path, {
+ 'feincms_page': page,
+ }, context_instance=RequestContext(request))
+
diff --git a/feincms/views/decorators.py b/feincms/views/decorators.py
new file mode 100644
index 0000000..e31bcdd
--- /dev/null
+++ b/feincms/views/decorators.py
@@ -0,0 +1,16 @@
+try:
+ from functools import wraps
+except ImportError:
+ from django.utils.functional import wraps
+
+from feincms.module.page.models import Page
+
+
+def add_page_to_extra_context(view_func):
+ def inner(request, *args, **kwargs):
+ kwargs.setdefault('extra_context', {})
+ kwargs['extra_context']['feincms_page'] = Page.objects.best_match_for_request(request)
+
+ return view_func(request, *args, **kwargs)
+ return wraps(view_func)(inner)
+
diff --git a/feincms/views/generic/__init__.py b/feincms/views/generic/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/feincms/views/generic/__init__.py
diff --git a/feincms/views/generic/create_update.py b/feincms/views/generic/create_update.py
new file mode 100644
index 0000000..8ffe4c7
--- /dev/null
+++ b/feincms/views/generic/create_update.py
@@ -0,0 +1,8 @@
+from django.views.generic import create_update
+from feincms.views.decorators import add_page_to_extra_context
+
+
+create_object = add_page_to_extra_context(create_update.create_object)
+update_object = add_page_to_extra_context(create_update.update_object)
+delete_object = add_page_to_extra_context(create_update.delete_object)
+
diff --git a/feincms/views/generic/date_based.py b/feincms/views/generic/date_based.py
new file mode 100644
index 0000000..1b0474a
--- /dev/null
+++ b/feincms/views/generic/date_based.py
@@ -0,0 +1,12 @@
+from django.views.generic import date_based
+from feincms.views.decorators import add_page_to_extra_context
+
+
+archive_index = add_page_to_extra_context(date_based.archive_index)
+archive_year = add_page_to_extra_context(date_based.archive_year)
+archive_month = add_page_to_extra_context(date_based.archive_month)
+archive_week = add_page_to_extra_context(date_based.archive_week)
+archive_day = add_page_to_extra_context(date_based.archive_day)
+archive_today = add_page_to_extra_context(date_based.archive_today)
+object_detail = add_page_to_extra_context(date_based.object_detail)
+
diff --git a/feincms/views/generic/list_detail.py b/feincms/views/generic/list_detail.py
new file mode 100644
index 0000000..6684e5a
--- /dev/null
+++ b/feincms/views/generic/list_detail.py
@@ -0,0 +1,7 @@
+from django.views.generic import list_detail
+from feincms.views.decorators import add_page_to_extra_context
+
+
+object_list = add_page_to_extra_context(list_detail.object_list)
+object_detail = add_page_to_extra_context(list_detail.object_detail)
+
diff --git a/feincms/views/generic/simple.py b/feincms/views/generic/simple.py
new file mode 100644
index 0000000..22f1b7e
--- /dev/null
+++ b/feincms/views/generic/simple.py
@@ -0,0 +1,6 @@
+from django.views.generic import simple
+from feincms.views.decorators import add_page_to_extra_context
+
+
+direct_to_template = add_page_to_extra_context(simple.direct_to_template)
+