def query_components(context, request, view, collection, interface=IViewlet): """Query components of the given collection : * Queries the registry according to context, request, view, manager. * Updates the components. * Filters out the unavailable components. * Returns an iterable of components. """ def registry_components(): security_predict, security_check = getSecurityGuards() for name, factory in interface.all_components( context, request, view, collection): if security_predict is not None: factory = security_predict(factory, swallow_errors=True) if factory is not None: component = factory(context, request, view, collection) if security_check is not None: component = security_check(component, swallow_errors=True) if component is not None: component.update() if bool(component.available) is True: yield component assert interface.isOrExtends(IViewlet), "interface must extends IViewlet" assert IRequest.providedBy(request), "request must be an IRequest" return registry_components()
def query_entries(context, request, view, menu, interface=IMenuEntry): """Query entries of the given menu : * Queries the registry according to context, request, view, menu. * Updates the components. * Filters out the unavailable components. * Returns an iterable of components. """ def isAvailable(component): return bool(getattr(component, 'available', True)) def registry_components(): for name, entry in getAdapters( (context, request, view, menu), interface): success = True if CHECKER is not None: permission = entry.permission if permission is not None: success = CHECKER(permission, entry) if success and isAvailable(entry): if IMenuEntryViewlet.providedBy(entry): entry.update() yield entry assert interface.isOrExtends(IMenuEntry) assert IRequest.providedBy(request), "request must be an IRequest" return registry_components()
def query_viewlet_manager(view, context=None, request=None, interface=IViewletManager, name=''): """Retrieve a viewlet manager""" assert IView.providedBy(view), "view must implements IView" if context is None: context = view.context if request is None: request = view.request assert interface.isOrExtends(IViewletManager), ( "interface must extends IViewletManager") assert IRequest.providedBy(request), "request must be an IRequest" return getMultiAdapter((context, request, view), interface, name)
def query_subforms(context, request, form, interface=ISubForm): """Query subforms of the given form : * Queries the registry according to context, request, form. * Updates the components. * Returns an iterable of components. """ def registry_components(): for name, component in getAdapters( (context, form, request), interface): if CHECKER is not None and not CHECKER(component, 'render'): continue component.update() yield component assert interface.isOrExtends(ISubForm), "interface must extends ISubForm" assert IRequest.providedBy(request), "request must be an IRequest" return registry_components()
def query_components(context, request, view, collection, interface=IViewlet): """Query components of the given collection : * Queries the registry according to context, request, view, manager. * Updates the components. * Filters out the unavailable components. * Returns an iterable of components. """ def registry_components(): for name, component in getAdapters( (context, request, view, collection), interface): if CHECKER is not None and not CHECKER(component, 'render'): continue component.update() if bool(component.available) is True: yield component assert interface.isOrExtends(IViewlet), "interface must extends IViewlet" assert IRequest.providedBy(request), "request must be an IRequest" return registry_components()
def query_viewlet_manager(view, context=None, request=None, interface=IViewletManager, name=''): """Retrieve a viewlet manager""" assert IView.providedBy(view), "view must implements IView" if context is None: context = view.context if request is None: request = view.request assert interface.isOrExtends(IViewletManager), ( "interface must extends IViewletManager") assert IRequest.providedBy(request), "request must be an IRequest" security_predict, security_check = getSecurityGuards() try: factory = interface.component(context, request, view, name=name) if factory is not None and security_predict is not None: factory = security_predict(factory) # raises if security error manager = factory(context, request, view) if security_check is not None: manager = security_check(manager) # raises if security error except ComponentLookupError: pass else: return manager
def query_layout(request, context, interface=ILayout, name=''): assert interface.isOrExtends(ILayout) assert IRequest.providedBy(request) return queryMultiAdapter((request, context), interface, name=name)
def query_view(request, context, interface=IView, name=''): assert interface.isOrExtends(IView) assert IRequest.providedBy(request) return queryMultiAdapter( (context, request), interface, name=name)
def query_view(request, context, interface=IView, name=''): assert interface.isOrExtends(IView) assert IRequest.providedBy(request) return interface(context, request, name=name, default=None)