Projet

Général

Profil

0002-backoffice-include-all-pages-from-admin-6726.patch

Frédéric Péters, 22 avril 2015 12:31

Télécharger (3,95 ko)

Voir les différences:

Subject: [PATCH 02/11] backoffice: include all pages from admin/ (#6726)

 wcs/backoffice/root.py | 60 +++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 50 insertions(+), 10 deletions(-)
wcs/backoffice/root.py
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
-