def index(self, page=1, format=None): "index page" total_found = 0 search_time = 0 num_items = session.get('organizations_num_items', 10) qry = request.GET.get('q', None) kwds = {} if qry: kwds['presliced_list'] = True conn = SphinxClient() sphinxopts = extract_sphinx_opts(config['sphinx.url']) conn.SetServer(sphinxopts.get('host', '127.0.0.1')) conn.SetMatchMode(SPH_MATCH_EXTENDED2) if page == 1: conn.SetLimits(0, num_items, 500) else: page = int(page) offset = (page - 1) * num_items conn.SetLimits(offset, num_items, 500) qry = clean_sphinx_q(qry) try: results = conn.Query(qry, 'organizations, organizations_rt') except (socket.timeout, struct.error): redirect(request.path_qs) qry = restore_sphinx_q(qry) if results and results['matches']: ids = [hit['id'] for hit in results['matches']] orgs = Session.query(Group)\ .filter(Group.id.in_(ids))\ .all() total_found = results['total_found'] search_time = results['time'] orgcount = total_found else: orgs = [] ocount = 0 orgcount = 0 else: orgs = Session.query(Group) ocount = Session.query(Group.id) if 'orgcount' not in locals(): orgcount = ocount.count() items = paginate.Page(orgs, page=int(page), items_per_page=num_items, item_count=orgcount, **kwds) if format == 'json': response.headers['Content-Type'] = 'application/json' data = convert_org_to_json(items) return data c.page = items c.q = qry c.total_found = total_found c.search_time = search_time return self.render('/organizations/index.html')
def index(self, page=1, format=None): "index page" total_found = 0 search_time = 0 num_items = session.get('organizations_num_items', 10) q = request.GET.get('q', None) kwds = {} if q: kwds['presliced_list'] = True conn = SphinxClient() conn.SetMatchMode(SPH_MATCH_EXTENDED2) if page == 1: conn.SetLimits(0, num_items, 500) else: page = int(page) offset = (page - 1) * num_items conn.SetLimits(offset, num_items, 500) q = clean_sphinx_q(q) results = conn.Query(q, 'organizations, organizations_rt') q = restore_sphinx_q(q) if results and results['matches']: ids = [hit['id'] for hit in results['matches']] orgs = Session.query(Group)\ .filter(Group.id.in_(ids))\ .all() total_found = results['total_found'] search_time = results['time'] orgcount = total_found else: orgs = [] ocount = 0 orgcount = 0 else: orgs = Session.query(Group) ocount = Session.query(Group.id) if not 'orgcount' in locals(): orgcount = ocount.count() items = paginate.Page(orgs, page=int(page), items_per_page=num_items, item_count=orgcount, **kwds) if format == 'json': response.headers['Content-Type'] = 'application/json' data = convert_org_to_json(items) return data c.page = items c.q = q c.total_found = total_found c.search_time = search_time return render('/organizations/index.html')