def get_frequency(environ,start_response): status = '200 OK' headers = [('Content-type', 'application/json; charset=UTF-8'),("Access-Control-Allow-Origin","*")] start_response(status,headers) environ["SCRIPT_FILENAME"] = environ["SCRIPT_FILENAME"].replace('scripts/get_frequency.py', '') cgi = urlparse.parse_qs(environ["QUERY_STRING"],keep_blank_values=True) frequency_field = cgi.get('frequency_field',[''])[0] db, path_components, q = parse_cgi(environ) q['field'] = frequency_field if q['q'] == '' and q["no_q"]: hits = db.get_all(db.locals['default_object_level']) else: hits = db.query(q["q"],q["method"],q["arg"],**q["metadata"]) if q["format"] == "json": while not len(hits): time.sleep(0.5) ## this should be enough time to write all results to disk in most instances.... better fix later q["interval_start"] = 0 q["interval_end"] = len(hits) bib_values = dict([(i, j) for i, j in q['metadata'].iteritems() if j]) field, results = r.generate_frequency(hits, q, db) new_results = [] for label, result in sorted(results.iteritems(), key=lambda (x, y): y["count"], reverse=True): if frequency_field == "title": author = get_author(label, db) if author: label = label + " (%s)" % author.decode('utf-8', 'ignore') formatted_result = {"search_term": q['q'], "frequency_field": frequency_field, "results": label, "count": result["count"], "url": "dispatcher.py/" + result["url"].replace('./', ''), "bib_values": bib_values} new_results.append(formatted_result) yield json.dumps(new_results) else: field, results = r.generate_frequency(hits, q, db) yield json.dumps(results,indent=2)
def get_frequency(environ,start_response): status = '200 OK' headers = [('Content-type', 'application/json; charset=UTF-8'),("Access-Control-Allow-Origin","*")] start_response(status,headers) config = f.WebConfig() db = DB(config.db_path + '/data/') request = WSGIHandler(db, environ) if request.q == '' and request.no_q: if request.no_metadata: hits = db.get_all(db.locals['default_object_level']) else: hits = db.query(**request.metadata) else: hits = db.query(request["q"],request["method"],request["arg"],**request.metadata) results = r.generate_frequency(hits, request, db, config) yield json.dumps(results)
def get_frequency(environ, start_response): status = '200 OK' headers = [('Content-type', 'application/json; charset=UTF-8'), ("Access-Control-Allow-Origin", "*")] start_response(status, headers) config = f.WebConfig() db = DB(config.db_path + '/data/') request = WSGIHandler(db, environ) setattr(request, 'frequency_field', json.dumps( eval('"%s"' % request.frequency_field))) if request.q == '' and request.no_q: if request.no_metadata: hits = db.get_all(db.locals['default_object_level']) else: hits = db.query(**request.metadata) else: hits = db.query(request["q"], request["method"], request["arg"], **request.metadata) hits.finish() results = r.generate_frequency(hits, request, db, config) results['results'] = sorted(results['results'].iteritems(), key=lambda x: x[1]['count'], reverse=True) yield json.dumps(results)
#!/usr/bin/env python import os import sys sys.path.append('..') from functions.wsgi_handler import parse_cgi import reports as r import cgi import json if __name__ == "__main__": environ = os.environ environ["SCRIPT_FILENAME"] = environ["SCRIPT_FILENAME"].replace('scripts/get_frequency', '') form = cgi.FieldStorage() frequency_field = form.getvalue('frequency_field') db, path_components, q = parse_cgi(environ) q['field'] = frequency_field hits = db.query(q["q"],q["method"],q["arg"],**q["metadata"]) field, results = r.generate_frequency(hits, q, db) print "Content-Type: text/html\n" print json.dumps(results)
#!/usr/bin/env python import os import sys sys.path.append('..') from functions.wsgi_handler import parse_cgi import reports as r import cgi import json if __name__ == "__main__": environ = os.environ environ["SCRIPT_FILENAME"] = environ["SCRIPT_FILENAME"].replace( 'scripts/get_frequency', '') form = cgi.FieldStorage() frequency_field = form.getvalue('frequency_field') db, path_components, q = parse_cgi(environ) q['field'] = frequency_field hits = db.query(q["q"], q["method"], q["arg"], **q["metadata"]) field, results = r.generate_frequency(hits, q, db) print "Content-Type: text/html\n" print json.dumps(results)