Beispiel #1
0
 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))
Beispiel #2
0
 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))
Beispiel #3
0
 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
Beispiel #4
0
 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
Beispiel #5
0
 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
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #8
0
 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