diff options
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 |
commit | e0f0fa81482618d160b665431ce7273ceb2165b0 (patch) | |
tree | b20af9a28abf1054fc4d2704efe0b72eaffefb35 /chimere/actions.py | |
parent | c89ba34380c86f8853a5e6af6cee345002ca381b (diff) | |
download | Chimè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.py | 39 |
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 |