diff options
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..8ef5338 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 + '/' if area_name else ''] + 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 | 
