backoffice: include all pages from admin/ (#6726)

This commit is contained in:
Frédéric Péters 2015-04-22 10:08:48 +02:00
parent df6e6df0b2
commit ef37406330
1 changed files with 50 additions and 10 deletions

View File

@ -42,8 +42,15 @@ from wcs.formdef import FormDef
from wcs.forms.backoffice import FormDefUI
import wcs.admin.bounces
import wcs.admin.categories
import wcs.admin.forms
import wcs.admin.logger
import wcs.admin.roles
import wcs.admin.settings
import wcs.admin.users
import wcs.admin.workflows
from wcs import data_sources
from wcs.api import get_user_from_api_query_string
@ -243,11 +250,27 @@ class WorkflowsDirectory(wcs.admin.workflows.WorkflowsDirectory):
class RootDirectory(BackofficeRootDirectory):
_q_exports = ['', 'management', 'pending', 'statistics']
bounces = wcs.admin.bounces.BouncesDirectory()
categories = wcs.admin.categories.CategoriesDirectory()
forms = wcs.admin.forms.FormsDirectory()
logger = wcs.admin.logger.LoggerDirectory()
roles = wcs.admin.roles.RolesDirectory()
settings = wcs.admin.settings.SettingsDirectory()
users = wcs.admin.users.UsersDirectory()
workflows = wcs.admin.workflows.WorkflowsDirectory()
menu_items = [
('management', N_('Management')),
('forms/', N_('Forms'), FormsDirectory.is_accessible),
('workflows/', N_('Workflows'), WorkflowsDirectory.is_accessible),
('/', N_('WCS Form Server'))]
('forms/', N_('Forms Workshop')),
('workflows/', N_('Workflows Workshop')),
('users/', N_('Users')),
('roles/', N_('Roles')),
('categories/', N_('Categories')),
('logger/', N_('Logs')),
('bounces/', N_('Bounces')),
('settings/', N_('Settings')),
('/', N_('WCS Form Server'))
]
def get_intro_text(self):
return _('''Welcome.''')
@ -265,8 +288,6 @@ class RootDirectory(BackofficeRootDirectory):
'categories', 'settings', 'management'):
# limit this space to menu entries that have icons.
continue
if display_function and not display_function(k):
continue
r += htmltext('<li class="zone-%s"><a href="%s">') % (k.strip('/'), k)
if callable(v):
r += v()
@ -501,13 +522,32 @@ class RootDirectory(BackofficeRootDirectory):
return redirect('.')
def _q_lookup(self, component):
if component == 'forms':
return FormsDirectory()
if component == 'workflows':
return WorkflowsDirectory()
if component in [str(x[0]).strip('/') for x in self.menu_items]:
if not is_accessible(component):
raise errors.AccessForbiddenError()
return getattr(self, component)
return FormPage(component)
def get_menu_items(self):
if not get_request().user:
return self.menu_items
user_roles = set(get_request().user.roles or [])
if not get_cfg('admin-permissions', {}):
return self.menu_items
menu_items = self.menu_items[:]
for item in menu_items:
if len(item) == 2:
item = list(item) + [None]
k, v, display_function = item
k = k.strip(str('/'))
if not k:
continue
if display_function and not display_function(k):
continue
if is_accessible(k):
continue
menu_items.remove((k+'/', v))
return menu_items
class FakeField(object):
def __init__(self, id, type_, label):