def subMenuItem(self, _context, submenu, title, description=u'', action=u'', icon=None, filter=None, permission=None, extra=None, order=0, item_class=None): filter = Engine.compile(filter) if filter is not None else None if permission is None: permission = self.permission if order == 0: order = _order_counter.get(self.for_, 1) _order_counter[self.for_] = order + 1 if item_class is None: item_class = self.subMenuItemClass if not IBrowserSubMenuItem.implementedBy(item_class): raise ValueError("Item class (%s) must implement IBrowserSubMenuItem" % item_class) factory = MenuItemFactory( item_class, title=title, description=description, icon=icon, action=action, filter=filter, permission=permission, extra=extra, order=order, _for=self.for_, submenuId=submenu) adapter(_context, (factory,), self.menuItemType, (self.for_, self.layer), name=title)
def subMenuItem(self, _context, submenu, title, description=_u(''), action=_u(''), icon=None, filter=None, permission=None, extra=None, order=0, item_class=None): if filter is not None: filter = Engine.compile(filter) if permission is None: permission = self.permission if order == 0: order = _order_counter.get(self.for_, 1) _order_counter[self.for_] = order + 1 if item_class is None: item_class = self.subMenuItemClass if not IBrowserSubMenuItem.implementedBy(item_class): raise ValueError( "Item class (%s) must implement IBrowserSubMenuItem" % item_class) factory = MenuItemFactory(item_class, title=title, description=description, icon=icon, action=action, filter=filter, permission=permission, extra=extra, order=order, _for=self.for_, submenuId=submenu) adapter(_context, (factory, ), self.menuItemType, (self.for_, self.layer), name=title)
def get_public_view_registrations(self, site_manager): from opengever.task.response_syncer import BaseResponseSyncerReceiver for reg in self.get_adapter_registrations(site_manager): if reg.name == '': continue if reg.name in ALLOWED_ENDPOINTS: continue if not IBrowserView.implementedBy(reg.factory): continue if IBrowserSubMenuItem.implementedBy(reg.factory): continue if self.get_dottedname(reg) in WHITELIST: continue if len(reg.required) != 2: # Only context/request adapters are published. continue if issubclass(reg.factory, BaseResponseSyncerReceiver): # The BaseResponseSyncerReceiver._check_internal_request # makes sure that the request is an internal GEVER request. # Those requests must be public. continue permission_role = getattr(reg.factory, '__roles__', None) if permission_role is not None: continue if not self.get_factory(reg).__module__.startswith('opengever.'): continue yield reg