Esempio n. 1
0
 def make_sort_links_list(self, request_dict):
     """ makes a list of the links for sort options
     """
     if 'sort' in request_dict:
         request_dict.pop('sort')
     order_opts = [
         {'key': 'asc',
          'order': 'ascending'},
         {'key': 'desc',
          'order': 'descending'}
     ]
     for act_sort in self.SORT_OPTIONS:
         if act_sort['opt']:
             # only make sort_options if the 'opt' key is true
             if act_sort['value'] is not None:
                 for order_opt in order_opts:
                     act_sort_val = act_sort['value'] + self.order_sep + order_opt['key']
                     fl = FilterLinks()
                     fl.base_search_link = self.base_search_link
                     fl.base_request_json = json.dumps(request_dict,
                                                       ensure_ascii=False,
                                                       indent=4)
                     fl.spatial_context = self.spatial_context
                     sort_rparams = fl.add_to_request('sort',
                                                      act_sort_val)
                     links = fl.make_request_urls(sort_rparams)
                     current_sort_obj = LastUpdatedOrderedDict()
                     current_sort_obj['id'] = links['html']
                     current_sort_obj['json'] = links['json']
                     current_sort_obj['type'] = act_sort['type']
                     current_sort_obj['label'] = act_sort['label']
                     current_sort_obj['oc-api:sort-order'] = order_opt['order']
                     in_active_list = False
                     for cur_act_sort in self.current_sorting:
                         if act_sort['type'] == cur_act_sort['type'] \
                            and order_opt['order'] == cur_act_sort['oc-api:sort-order']:
                             # the current sort option is ALREADY in use
                             in_active_list = True
                     if in_active_list is False:
                         # only add the sort option if it's not already in use
                         self.sort_links.append(current_sort_obj)
             else:
                 if self.using_default_sorting is False:
                     # only add a link to the default sorting if
                     # we are not currently using it
                     fl = FilterLinks()
                     fl.base_search_link = self.base_search_link
                     fl.base_request_json = json.dumps(request_dict,
                                                       ensure_ascii=False,
                                                       indent=4)
                     fl.spatial_context = self.spatial_context
                     links = fl.make_request_urls(request_dict)
                     current_sort_obj = LastUpdatedOrderedDict()
                     current_sort_obj['id'] = links['html']
                     current_sort_obj['json'] = links['json']
                     current_sort_obj['type'] = act_sort['type']
                     current_sort_obj['label'] = act_sort['label']
                     current_sort_obj['oc-api:sort-order'] = 'descending'
                     self.sort_links.append(current_sort_obj)
Esempio n. 2
0
    def make_paging_links(self, start, rows, ini_request_dict_json):
        """ makes links for paging for start, rows, with
            an initial request dict json string

            a big of a hassle to avoid memory errors with FilterLinks()
        """
        start = int(start)
        start = str(start)
        rows = str(rows)
        fl = FilterLinks()
        fl.base_search_link = self.base_search_link
        fl.base_request_json = ini_request_dict_json
        fl.spatial_context = self.spatial_context
        fl.remove_start_param = False
        start_rparams = fl.add_to_request('start', start)
        start_rparams_json = json.dumps(start_rparams,
                                        ensure_ascii=False,
                                        indent=4)
        fl.base_request_json = start_rparams_json
        new_rparams = fl.add_to_request('rows', rows)
        return fl.make_request_urls(new_rparams)
Esempio n. 3
0
    def make_paging_links(self, start, rows, ini_request_dict_json):
        """ makes links for paging for start, rows, with
            an initial request dict json string

            a big of a hassle to avoid memory errors with FilterLinks()
        """
        start = int(start)
        start = str(start)
        rows = str(rows)
        fl = FilterLinks()
        fl.base_search_link = self.base_search_link
        fl.base_request_json = ini_request_dict_json
        fl.spatial_context = self.spatial_context
        fl.remove_start_param = False
        start_rparams = fl.add_to_request('start',
                                          start)
        start_rparams_json = json.dumps(start_rparams,
                                        ensure_ascii=False,
                                        indent=4)
        fl.base_request_json = start_rparams_json
        new_rparams = fl.add_to_request('rows',
                                        rows)
        return fl.make_request_urls(new_rparams)