def facet_wrapper(self, facet, value, count): if facet == "publish_year": return [int(value), count] elif facet == "publisher_facet": return web.storage(name=value, count=count, key="/publishers/" + value.replace(" ", "_")) elif facet == "author_facet": author = read_author_facet(value) return web.storage(name=author[1], key="/authors/" + author[0], count=count) elif facet in [ "subject_facet", "person_facet", "place_facet", "time_facet" ]: return web.storage( key=finddict(SUBJECTS, facet=facet).prefix + str_to_key(value).replace(" ", "_"), name=value, count=count, ) elif facet == "has_fulltext": return [value, count] else: return web.storage(name=value, count=count)
def subject_count(field, subject): key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8') data = urlopen('http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' % (solr_works, field, key)).read() try: ret = simplejson.loads(data) except: print data return 0 return ret['response']['numFound']
def subject_count(field, subject): key = re_escape.sub(r"\\\1", str_to_key(subject)).encode("utf-8") data = urlopen("http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s" % (solr_works, field, key)).read() try: ret = simplejson.loads(data) except: print data return 0 return ret["response"]["numFound"]
def subject_count(field, subject): key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8') data = urlopen( 'http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' % (solr_works, field, key)).read() try: ret = simplejson.loads(data) except: print data return 0 return ret['response']['numFound']
def make_query(self, key, filters): meta = self.get_meta(key) q = {meta.facet_key: str_to_key(meta.path).lower()} if filters: if filters.get("has_fulltext") == "true": q['has_fulltext'] = "true" if filters.get("publish_year"): q['publish_year'] = filters['publish_year'] return q
def facet_wrapper(self, facet, value, count): if facet == "publish_year": return [int(value), count] elif facet == "publisher_facet": return web.storage(name=value, count=count, key="/publishers/" + value.replace(" ", "_")) elif facet == "author_facet": author = read_author_facet(value) return web.storage(name=author[1], key="/authors/" + author[0], count=count) elif facet in ["subject_facet", "person_facet", "place_facet", "time_facet"]: return web.storage(key=finddict(SUBJECTS, facet=facet).prefix + str_to_key(value).replace(" ", "_"), name=value, count=count) elif facet == "has_fulltext": return [value, count] else: return web.storage(name=value, count=count)
def subject_count(field, subject): if len(subject) > 256: subject = subject[:256] key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8') url = 'http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' % (solr_works, field, key) for attempt in range(5): try: data = urlopen(url).read() break except IOError: pass print 'exception in subject_count, retry, attempt:', attempt print url try: ret = simplejson.loads(data) except: print data return 0 return ret['response']['numFound']
def normalize_key(self, key): return str_to_key(key).lower()
def test_str_to_key(): assert str_to_key('x') == 'x' assert str_to_key('X') == 'x' assert str_to_key('[X]') == 'x' assert str_to_key('!@<X>;:') == '!x' assert str_to_key('!@(X);:') == '!(x)'
def test_str_to_key(): assert str_to_key("x") == "x" assert str_to_key("X") == "x" assert str_to_key("[X]") == "x" assert str_to_key("!@<X>;:") == "!x" assert str_to_key("!@(X);:") == "!(x)"