def __append_opensearch_elements(self, coll_data_el, collection): if collection.filter: search_terms = \ UrlPartsConverter.make_filter_string(collection.filter) else: search_terms = '' if collection.order: sort_terms = UrlPartsConverter.make_order_string(collection.order) else: sort_terms = UrlPartsConverter.make_order_string( collection.default_order) # Query. q_tag = '{%s}%s' % (XML_NS_OPEN_SEARCH, 'Query') q_el = coll_data_el.makeelement( q_tag, attrib=dict(role='request', searchTerms=search_terms, sortTerms=sort_terms), nsmap=self.mapping_registry.namespace_map) coll_data_el.append(q_el) # Total results. tr_tag = '{%s}%s' % (XML_NS_OPEN_SEARCH, 'totalResults') setattr(coll_data_el, tr_tag, str(len(collection))) if not collection.slice is None: # Start index. si_tag = '{%s}%s' % (XML_NS_OPEN_SEARCH, 'startIndex') setattr(coll_data_el, si_tag, str(collection.slice.start)) # Page size. ps_tag = '{%s}%s' % (XML_NS_OPEN_SEARCH, 'itemsPerPage') setattr(coll_data_el, ps_tag, str(collection.slice.stop - collection.slice.start))
def __configure_refs(self): refs_options_string = self.request.params.get('refs') if not refs_options_string is None: links_options = \ UrlPartsConverter.make_refs_options(refs_options_string) else: links_options = None return links_options
def __get_representer_context(self): cnt_type = self._get_response_body_mime_type() refs_options_string = self.request.params.get('refs') if not refs_options_string is None: refs_options = \ UrlPartsConverter.make_refs_options(refs_options_string) rpr_ctxt = UpdatingRepresenterConfigurationContext( self.context, cnt_type, attribute_options=refs_options) else: rpr_ctxt = RepresenterConfigurationContext(self.context, cnt_type) return rpr_ctxt
def __slice_collection(self): start_string = self.request.params.get('start') if start_string is None: start_string = '0' size_string = self.request.params.get('size') if size_string is None: size_string = str(self.context.default_limit) slice_key = UrlPartsConverter.make_slice_key(start_string, size_string) if not self.context.max_limit is None \ and slice_key.stop - slice_key.start > self.context.max_limit: # Apply maximum batch size, if necessary. slice_key = slice(slice_key.start, slice_key.start + self.context.max_limit) self.context.slice = slice_key
def __order_collection(self): order_string = self.request.params.get('sort') if not order_string is None: order_spec = \ UrlPartsConverter.make_order_specification(order_string) self.context.order = order_spec
def __filter_collection(self): query_string = self.request.params.get('q') if not query_string is None: filter_spec = \ UrlPartsConverter.make_filter_specification(query_string) self.context.filter = filter_spec