Example #1
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
Example #3
0
def page(_context, name, permission,
         for_=Interface, layer=interfaces.IFlourishLayer,
         title=None, subtitle=None,
         template=None, page_template=None, content_template=None,
         class_=Page,
         update='update', render='render',
         allowed_interface=(), allowed_attributes=(),
         **kwargs
         ):

    forward_methods = {
        'update': update,
        'render': render,
        }

    # BBB: add index to ease porting from old style views
    if (IBrowserView.implementedBy(class_) and
        getattr(class_, 'index', None) is None):
        forward_methods['index'] = render

    if not interfaces.IPage.implementedBy(class_):
        class_ = type(class_.__name__, (class_, Page), {})

    allowed_interface = (tuple(allowed_interface) +
                         (interfaces.IPage, ))

    class_dict = dict(kwargs)
    class_dict['__name__'] = name

    if title is not None:
        class_dict['title'] = title
    if subtitle is not None:
        class_dict['subtitle'] = subtitle

    # XXX: raise ConfigurationError if class_ is Page and
    #      no templates specified

    templates = template_specs({
        'template': template,
        'page_template': page_template,
        'content_template': content_template,
        }, content_type='html')

    class_ = subclass_content(
        class_, name,
        forward_methods,
        templates,
        class_dict,
        )

    handle_interfaces(_context, (for_,))
    handle_interfaces(_context, allowed_interface)

    handle_security(class_, permission,
                    allowed_interface, allowed_attributes)

    _context.action(
        discriminator=('view', for_, name, IBrowserRequest, layer),
        callable=zope.component.zcml.handler,
        args=('registerAdapter',
              class_, (for_, layer), Interface, name, _context.info),
        )
Example #4
0
def page(_context,
         name,
         permission,
         for_=Interface,
         layer=interfaces.IFlourishLayer,
         title=None,
         subtitle=None,
         template=None,
         page_template=None,
         content_template=None,
         class_=Page,
         update='update',
         render='render',
         allowed_interface=(),
         allowed_attributes=(),
         **kwargs):

    forward_methods = {
        'update': update,
        'render': render,
    }

    # BBB: add index to ease porting from old style views
    if (IBrowserView.implementedBy(class_)
            and getattr(class_, 'index', None) is None):
        forward_methods['index'] = render

    if not interfaces.IPage.implementedBy(class_):
        class_ = type(class_.__name__, (class_, Page), {})

    allowed_interface = (tuple(allowed_interface) + (interfaces.IPage, ))

    class_dict = dict(kwargs)
    class_dict['__name__'] = name

    if title is not None:
        class_dict['title'] = title
    if subtitle is not None:
        class_dict['subtitle'] = subtitle

    # XXX: raise ConfigurationError if class_ is Page and
    #      no templates specified

    templates = template_specs(
        {
            'template': template,
            'page_template': page_template,
            'content_template': content_template,
        },
        content_type='html')

    class_ = subclass_content(
        class_,
        name,
        forward_methods,
        templates,
        class_dict,
    )

    handle_interfaces(_context, (for_, ))
    handle_interfaces(_context, allowed_interface)

    handle_security(class_, permission, allowed_interface, allowed_attributes)

    _context.action(
        discriminator=('view', for_, name, IBrowserRequest, layer),
        callable=zope.component.zcml.handler,
        args=('registerAdapter', class_, (for_, layer), Interface, name,
              _context.info),
    )