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)
예제 #2
0
    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)
예제 #3
0
    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
    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