Projet

Général

Profil

0002-misc-pass-menu-item-options-in-a-directory-34973.patch

Frédéric Péters, 20 juillet 2019 20:12

Télécharger (3,32 ko)

Voir les différences:

Subject: [PATCH 2/3] misc: pass menu item options in a directory (#34973)

 wcs/backoffice/root.py        | 11 ++++++-----
 wcs/qommon/backoffice/root.py |  4 ++--
 wcs/qommon/ident/password.py  |  3 ++-
 3 files changed, 10 insertions(+), 8 deletions(-)
wcs/backoffice/root.py
57 57
        ('management/', N_('Management')),
58 58
        ('forms/', N_('Forms Workshop')),
59 59
        ('workflows/', N_('Workflows Workshop')),
60
        ('users/', N_('Users'), roles.is_visible),
61
        ('roles/', N_('Roles'), roles.is_visible),
60
        ('users/', N_('Users'), {'check_display_function': roles.is_visible}),
61
        ('roles/', N_('Roles'), {'check_display_function': roles.is_visible}),
62 62
        ('categories/', N_('Categories')),
63
        ('bounces/', N_('Bounces'), bounces.is_visible),
63
        ('bounces/', N_('Bounces'), {'check_display_function': bounces.is_visible}),
64 64
        ('settings/', N_('Settings')),
65 65
    ]
66 66

  
......
239 239
            backoffice_url += '/'
240 240
        for item in self.menu_items:
241 241
            if len(item) == 2:
242
                item = list(item) + [None]
243
            k, v, display_function = item
242
                item = list(item) + [{}]
243
            k, v, options = item
244 244
            slug = k.strip(str('/'))
245 245
            if not slug:
246 246
                continue
247
            display_function = options.get('check_display_function')
247 248
            if display_function and not display_function(slug):
248 249
                continue
249 250
            if not self.is_accessible(slug):
wcs/qommon/backoffice/root.py
27 27
        setattr(cls, urlname, directory)
28 28

  
29 29
    @classmethod
30
    def register_menu_item(cls, url, title, check_display_function=None):
30
    def register_menu_item(cls, url, title, **options):
31 31
        for i, v in enumerate(cls.menu_items):
32 32
            if v[0] == url:
33 33
                del cls.menu_items[i]
34 34
        if title is None:
35 35
            # used to remove an item
36 36
            return
37
        cls.menu_items.append((url, title, check_display_function))
37
        cls.menu_items.append((url, title, options))
38 38

  
39 39
    def _q_access(self):
40 40
        get_response().breadcrumb.append( ('backoffice/', _('Back Office')) )
wcs/qommon/ident/password.py
1202 1202
                    return False
1203 1203
                return True
1204 1204

  
1205
            rdb.register_menu_item('accounts/', _('Accounts'), menu_entry_check_display)
1205
            rdb.register_menu_item('accounts/', _('Accounts'),
1206
                    check_display_function=menu_entry_check_display)
1206 1207

  
1207 1208

  
1208 1209
class AccountDirectory(Directory):
1209
-