def _prepareViews(self): views = {IBrowserRequest: [], IXMLRPCRequest: [], IHTTPRequest: [], IFTPRequest: [], None: []} type_map = {IBrowserRequest: 'Browser', IXMLRPCRequest: 'XMLRPC', IHTTPRequest: 'HTTP', IFTPRequest: 'FTP', None: 'Other'} level_map = {'generic': component.GENERIC_INTERFACE_LEVEL, 'extended': component.EXTENDED_INTERFACE_LEVEL, 'specific': component.SPECIFIC_INTERFACE_LEVEL} iface = removeAllProxies(self.context) for reg in presentation.getViews(iface): type = presentation.getPresentationType(reg.required[-1]) views[(type in views) and type or None].append(reg) sort_function = lambda x, y: cmp(x['name'], y['name']) for type, sel_views in views.items(): for level, qualifier in level_map.items(): regs = tuple(component.filterAdapterRegistrations( sel_views, iface, level=qualifier)) infos = [presentation.getViewInfoDictionary(reg) for reg in regs] infos.sort() setattr(self, level+type_map[type]+'Views', infos)
def _getRegistrationAdapters(self, interfaces): # TODO might be outsourced to some utility results = [] for interface in interfaces: registrations = list(getViews(interface, IXMLRPCRequest)) filtered_adapters = list(self._filterXMLRPCRequestRegistrations(registrations)) results.extend(filtered_adapters) return results