summaryrefslogtreecommitdiff
path: root/chimere/actions.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-09-04 00:13:01 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-09-04 00:13:01 +0200
commite0f0fa81482618d160b665431ce7273ceb2165b0 (patch)
treeb20af9a28abf1054fc4d2704efe0b72eaffefb35 /chimere/actions.py
parentc89ba34380c86f8853a5e6af6cee345002ca381b (diff)
downloadChimère-e0f0fa81482618d160b665431ce7273ceb2165b0.tar.bz2
Chimère-e0f0fa81482618d160b665431ce7273ceb2165b0.zip
Add a new Page model to add simple pages as "actions"- Improve actions management
Diffstat (limited to 'chimere/actions.py')
-rw-r--r--chimere/actions.py39
1 files changed, 31 insertions, 8 deletions
diff --git a/chimere/actions.py b/chimere/actions.py
index 0363d54..a434279 100644
--- a/chimere/actions.py
+++ b/chimere/actions.py
@@ -22,21 +22,44 @@ Actions available in the main interface
"""
from django.conf import settings
from django.contrib.auth import models
+from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
+from models import Page
+
class Action:
- def __init__(self, id, path, label):
+ def __init__(self, id, path, label, extra_url_args=[]):
self.id, self.path, self.label = id, path, label
+ self.extra_url_args, self.url = extra_url_args, None
+
+ def update_url(self, area_name):
+ self.url = reverse(self.path,
+ args=[area_name+'/'] + self.extra_url_args)
-actions = [(Action('view', '', _('View')), []),
- (Action('contribute', 'edit/', _('Contribute')),
- (Action('edit', 'edit/', _('Add a new point of interest')),
- Action('edit-route', 'edit-route/', _('Add a new route'))),
- ),]
+default_actions = [(Action('view', 'chimere:index', _('View')), []),
+ (Action('contribute', 'chimere:edit', _('Contribute')),
+ (Action('edit', 'chimere:edit', _('Add a new point of interest')),
+ Action('edit-route', 'chimere:editroute', _('Add a new route'))),
+ ),]
if settings.CHIMERE_FEEDS:
- actions.append((Action('rss', 'feeds', _('RSS feeds')), []))
+ default_actions.append((Action('rss', 'chimere:feeds-form',
+ _('RSS feeds')), []))
if settings.EMAIL_HOST:
- actions.append((Action('contact', 'contact', _('Contact us')), []),)
+ default_actions.append((Action('contact', 'chimere:contact',
+ _('Contact us')), []),)
+
+def actions(area_name=''):
+ acts = default_actions[:]
+ for act, childs in default_actions:
+ act.update_url(area_name)
+ for child_act in childs:
+ child_act.update_url(area_name)
+ for page in Page.objects.filter(available=True).order_by('order'):
+ act = Action(page.mnemonic, 'chimere:extra_page', page.title,
+ [page.mnemonic])
+ act.update_url(area_name)
+ acts.append((act, []))
+ return acts