42 |
42 |
|
43 |
43 |
from wcs.forms.backoffice import FormDefUI
|
44 |
44 |
|
|
45 |
import wcs.admin.bounces
|
|
46 |
import wcs.admin.categories
|
45 |
47 |
import wcs.admin.forms
|
|
48 |
import wcs.admin.logger
|
|
49 |
import wcs.admin.roles
|
|
50 |
import wcs.admin.settings
|
|
51 |
import wcs.admin.users
|
46 |
52 |
import wcs.admin.workflows
|
|
53 |
|
47 |
54 |
from wcs import data_sources
|
48 |
55 |
|
49 |
56 |
from wcs.api import get_user_from_api_query_string
|
... | ... | |
238 |
245 |
class RootDirectory(BackofficeRootDirectory):
|
239 |
246 |
_q_exports = ['', 'management', 'pending', 'statistics']
|
240 |
247 |
|
|
248 |
bounces = wcs.admin.bounces.BouncesDirectory()
|
|
249 |
categories = wcs.admin.categories.CategoriesDirectory()
|
|
250 |
forms = wcs.admin.forms.FormsDirectory()
|
|
251 |
logger = wcs.admin.logger.LoggerDirectory()
|
|
252 |
roles = wcs.admin.roles.RolesDirectory()
|
|
253 |
settings = wcs.admin.settings.SettingsDirectory()
|
|
254 |
users = wcs.admin.users.UsersDirectory()
|
|
255 |
workflows = wcs.admin.workflows.WorkflowsDirectory()
|
|
256 |
|
241 |
257 |
menu_items = [
|
242 |
258 |
('management', N_('Management')),
|
243 |
|
('forms/', N_('Forms'), FormsDirectory.is_accessible),
|
244 |
|
('workflows/', N_('Workflows'), WorkflowsDirectory.is_accessible),
|
245 |
|
('/', N_('WCS Form Server'))]
|
|
259 |
('forms/', N_('Forms Workshop')),
|
|
260 |
('workflows/', N_('Workflows Workshop')),
|
|
261 |
('users/', N_('Users')),
|
|
262 |
('roles/', N_('Roles')),
|
|
263 |
('categories/', N_('Categories')),
|
|
264 |
('logger/', N_('Logs')),
|
|
265 |
('bounces/', N_('Bounces')),
|
|
266 |
('settings/', N_('Settings')),
|
|
267 |
('/', N_('WCS Form Server'))
|
|
268 |
]
|
246 |
269 |
|
247 |
270 |
def get_intro_text(self):
|
248 |
271 |
return _('''Welcome.''')
|
... | ... | |
260 |
283 |
'categories', 'settings', 'management'):
|
261 |
284 |
# limit this space to menu entries that have icons.
|
262 |
285 |
continue
|
263 |
|
if display_function and not display_function(k):
|
264 |
|
continue
|
265 |
286 |
r += htmltext('<li class="zone-%s"><a href="%s">') % (k.strip('/'), k)
|
266 |
287 |
if callable(v):
|
267 |
288 |
r += v()
|
... | ... | |
496 |
517 |
return redirect('.')
|
497 |
518 |
|
498 |
519 |
def _q_lookup(self, component):
|
499 |
|
if component == 'forms':
|
500 |
|
return FormsDirectory()
|
501 |
|
if component == 'workflows':
|
502 |
|
return WorkflowsDirectory()
|
503 |
|
|
|
520 |
if component in [str(x[0]).strip('/') for x in self.menu_items]:
|
|
521 |
if not is_accessible(component):
|
|
522 |
raise errors.AccessForbiddenError()
|
|
523 |
return getattr(self, component)
|
504 |
524 |
return FormPage(component)
|
505 |
525 |
|
|
526 |
def get_menu_items(self):
|
|
527 |
if not get_request().user:
|
|
528 |
return self.menu_items
|
|
529 |
user_roles = set(get_request().user.roles or [])
|
|
530 |
if not get_cfg('admin-permissions', {}):
|
|
531 |
return self.menu_items
|
|
532 |
menu_items = self.menu_items[:]
|
|
533 |
for item in menu_items:
|
|
534 |
if len(item) == 2:
|
|
535 |
item = list(item) + [None]
|
|
536 |
k, v, display_function = item
|
|
537 |
k = k.strip(str('/'))
|
|
538 |
if not k:
|
|
539 |
continue
|
|
540 |
if display_function and not display_function(k):
|
|
541 |
continue
|
|
542 |
if is_accessible(k):
|
|
543 |
continue
|
|
544 |
menu_items.remove((k+'/', v))
|
|
545 |
return menu_items
|
506 |
546 |
|
507 |
547 |
class FakeField(object):
|
508 |
548 |
def __init__(self, id, type_, label):
|
509 |
|
-
|