예제 #1
0
def dokument(identifier):
    """
    Gibt Dokumenten-Detailseite aus
    """
    result = db.get_submissions(references=[identifier],
                        get_attachments=True,
                        get_consultations=True,
                        get_thumbnails=True)
    if len(result) == 0:
        abort(404)
    return render_template('dokument_detailseite.html', submission=result[0])
예제 #2
0
def dokument(identifier):
    """
    Gibt Dokumenten-Detailseite aus
    """
    result = db.get_submissions(references=[identifier],
                                get_attachments=True,
                                get_consultations=True,
                                get_thumbnails=True)
    if len(result) == 0:
        abort(404)
    return render_template('dokument_detailseite.html', submission=result[0])
예제 #3
0
파일: api.py 프로젝트: GeoDodo/offeneskoeln
def api_documents():
    """
    API-Methode zur Suche von Dokumenten bzw. zum Abruf eines einzelnen
    Dokuments anhand einer Kennung (reference).
    Ist der URL-Parameter "reference" angegeben, handelt es sich um eine
    Dokumentenabfrage anhand der Kennung(en). Ansonsten ist es eine Suche.
    """
    start_time = time.time()
    jsonp_callback = request.args.get('callback', None)
    ref = request.args.get('reference', '')
    references = ref.split(',')
    if references == ['']:
        references = None
    output = request.args.get('output', '').split(',')
    q = request.args.get('q', '*:*')
    fq = request.args.get('fq', '')
    sort = request.args.get('sort', 'score desc')
    start = int(request.args.get('start', '0'))
    numdocs = int(request.args.get('docs', '10'))
    date_param = request.args.get('date', '')
    get_attachments = 'attachments' in output
    get_thumbnails = 'thumbnails' in output and get_attachments
    get_consultations = 'consultations' in output
    get_facets = 'facets' in output
    #get_relations = 'relations' in output
    request_info = {}  # Info über die Anfrage
    query = False
    docs = False
    submission_ids = []
    # TODO: entscheiden, was mit get_relations passiert
    """
    Anhand der übergebenen Parameter wird entschieden, ob eine Solr-Suche
    durchgeführt wird, oder ob die Abfrage direkt anhand von Kennungen
    (references) erfolgen kann.
    """
    if references is None:
        # Suche wird durchgeführt
        # (References-Liste via Suchmaschine füllen)
        query = db.query_submissions(q=q, fq=fq, sort=sort, start=start,
                           docs=numdocs, date=date_param, facets=get_facets)
        if query['numhits'] > 0:
            submission_ids = [x['_id'] for x in query['result']]
        else:
            docs = []
    else:
        # Direkte Abfrage
        request_info = {
            'references': references
        }
    request_info['output'] = output

    # Abrufen der benötigten Dokumente aus der Datenbank
    if references is not None:
        docs = db.get_submissions(references=references,
                        get_attachments=get_attachments,
                        get_consultations=get_consultations,
                        get_thumbnails=get_thumbnails)
    elif len(submission_ids) > 0:
        docs = db.get_submissions(submission_ids=submission_ids,
                        get_attachments=get_attachments,
                        get_consultations=get_consultations,
                        get_thumbnails=get_thumbnails)

    ret = {
        'status': 0,
        'duration': int((time.time() - start_time) * 1000),
        'request': request_info,
        'response': {}
    }
    if docs:
        ret['response']['documents'] = docs
        ret['response']['numdocs'] = len(docs)
        if query and 'maxscore' in query:
            ret['response']['maxscore'] = query['maxscore']
        for n in range(len(docs)):
            docs[n]['reference'] = docs[n]['identifier']
            del docs[n]['identifier']

    if query:
        ret['response']['numhits'] = query['numhits']
        if get_facets and 'facets' in query:
            ret['response']['facets'] = query['facets']

    ret['response']['start'] = start
    ret['request']['sort'] = sort

    json_output = json.dumps(ret, cls=util.MyEncoder, sort_keys=True)
    if jsonp_callback is not None:
        json_output = jsonp_callback + '(' + json_output + ')'
    response = make_response(json_output, 200)
    response.mimetype = 'application/json'
    response.headers['Expires'] = util.expires_date(hours=24)
    response.headers['Cache-Control'] = util.cache_max_age(hours=24)
    return response
예제 #4
0
파일: api.py 프로젝트: Reimerei/ris-web
def api_documents():
    """
    API-Methode zur Suche von Dokumenten bzw. zum Abruf eines einzelnen
    Dokuments anhand einer Kennung (reference).
    Ist der URL-Parameter "reference" angegeben, handelt es sich um eine
    Dokumentenabfrage anhand der Kennung(en). Ansonsten ist es eine Suche.
    """
    start_time = time.time()
    jsonp_callback = request.args.get('callback', None)
    ref = request.args.get('reference', '')
    references = ref.split(',')
    if references == ['']:
        references = None
    output = request.args.get('output', '').split(',')
    q = request.args.get('q', '*:*')
    fq = request.args.get('fq', '')
    sort = request.args.get('sort', 'score desc')
    start = int(request.args.get('start', '0'))
    numdocs = int(request.args.get('docs', '10'))
    date_param = request.args.get('date', '')
    get_attachments = 'attachments' in output
    get_thumbnails = 'thumbnails' in output and get_attachments
    get_consultations = 'consultations' in output
    get_facets = 'facets' in output
    #get_relations = 'relations' in output
    request_info = {}  # Info über die Anfrage
    query = False
    docs = False
    submission_ids = []
    # TODO: entscheiden, was mit get_relations passiert
    """
    Anhand der übergebenen Parameter wird entschieden, ob eine ES-Suche
    durchgeführt wird, oder ob die Abfrage direkt anhand von Kennungen
    (references) erfolgen kann.
    """

    if references is None:
        # Suche wird durchgeführt
        # (References-Liste via Suchmaschine füllen)
        query = db.query_submissions(q=q,
                                     fq=fq,
                                     sort=sort,
                                     start=start,
                                     docs=numdocs,
                                     date=date_param,
                                     facets=get_facets)
        if query['numhits'] > 0:
            submission_ids = [x['_id'] for x in query['result']]
        else:
            docs = []
    else:
        # Direkte Abfrage
        request_info = {'references': references}
    request_info['output'] = output

    # Abrufen der benötigten Dokumente aus der Datenbank
    if references is not None:
        docs = db.get_submissions(references=references,
                                  get_attachments=get_attachments,
                                  get_consultations=get_consultations,
                                  get_thumbnails=get_thumbnails)
    elif len(submission_ids) > 0:
        docs = db.get_submissions(submission_ids=submission_ids,
                                  get_attachments=get_attachments,
                                  get_consultations=get_consultations,
                                  get_thumbnails=get_thumbnails)

    ret = {
        'status': 0,
        'duration': int((time.time() - start_time) * 1000),
        'request': request_info,
        'response': {}
    }
    if docs:
        ret['response']['documents'] = docs
        ret['response']['numdocs'] = len(docs)
        if query and 'maxscore' in query:
            ret['response']['maxscore'] = query['maxscore']
        for n in range(len(docs)):
            docs[n]['reference'] = docs[n]['identifier']
            del docs[n]['identifier']

    if query:
        ret['response']['numhits'] = query['numhits']
        if get_facets and 'facets' in query:
            ret['response']['facets'] = query['facets']

    ret['response']['start'] = start
    ret['request']['sort'] = sort
    ret['request']['fq'] = fq

    json_output = json.dumps(ret, cls=util.MyEncoder, sort_keys=True)
    if jsonp_callback is not None:
        json_output = jsonp_callback + '(' + json_output + ')'
    response = make_response(json_output, 200)
    response.mimetype = 'application/json'
    response.headers['Expires'] = util.expires_date(hours=24)
    response.headers['Cache-Control'] = util.cache_max_age(hours=24)
    return response
예제 #5
0
파일: app.py 프로젝트: micahdlamb/mywaiver
async def search_submissions(template):
    query = request.args.get('query')
    return jsonify(await (db.search_submissions(template, query)
                          if query else db.get_submissions(template)))
예제 #6
0
파일: api.py 프로젝트: marians/offeneskoeln
def api_documents():
    """
    API-Methode zur Suche von Dokumenten bzw. zum Abruf eines einzelnen
    Dokuments anhand einer Kennung (reference).
    Ist der URL-Parameter "reference" angegeben, handelt es sich um eine
    Dokumentenabfrage anhand der Kennung(en). Ansonsten ist es eine Suche.
    """
    start_time = time.time()
    jsonp_callback = request.args.get("callback", None)
    ref = request.args.get("reference", "")
    references = ref.split(",")
    if references == [""]:
        references = None
    output = request.args.get("output", "").split(",")
    q = request.args.get("q", "*:*")
    fq = request.args.get("fq", "")
    sort = request.args.get("sort", "score desc")
    start = int(request.args.get("start", "0"))
    numdocs = int(request.args.get("docs", "10"))
    date_param = request.args.get("date", "")
    get_attachments = "attachments" in output
    get_thumbnails = "thumbnails" in output and get_attachments
    get_consultations = "consultations" in output
    get_facets = "facets" in output
    # get_relations = 'relations' in output
    request_info = {}  # Info über die Anfrage
    query = False
    docs = False
    submission_ids = []
    # TODO: entscheiden, was mit get_relations passiert
    """
    Anhand der übergebenen Parameter wird entschieden, ob eine Solr-Suche
    durchgeführt wird, oder ob die Abfrage direkt anhand von Kennungen
    (references) erfolgen kann.
    """
    if references is None:
        # Suche wird durchgeführt
        # (References-Liste via Suchmaschine füllen)
        query = db.query_submissions(
            q=q, fq=fq, sort=sort, start=start, docs=numdocs, date=date_param, facets=get_facets
        )
        if query["numhits"] > 0:
            submission_ids = [x["_id"] for x in query["result"]]
        else:
            docs = []
    else:
        # Direkte Abfrage
        request_info = {"references": references}
    request_info["output"] = output

    # Abrufen der benötigten Dokumente aus der Datenbank
    if references is not None:
        docs = db.get_submissions(
            references=references,
            get_attachments=get_attachments,
            get_consultations=get_consultations,
            get_thumbnails=get_thumbnails,
        )
    elif len(submission_ids) > 0:
        docs = db.get_submissions(
            submission_ids=submission_ids,
            get_attachments=get_attachments,
            get_consultations=get_consultations,
            get_thumbnails=get_thumbnails,
        )

    ret = {"status": 0, "duration": int((time.time() - start_time) * 1000), "request": request_info, "response": {}}
    if docs:
        ret["response"]["documents"] = docs
        ret["response"]["numdocs"] = len(docs)
        if query and "maxscore" in query:
            ret["response"]["maxscore"] = query["maxscore"]
        for n in range(len(docs)):
            docs[n]["reference"] = docs[n]["identifier"]
            del docs[n]["identifier"]

    if query:
        ret["response"]["numhits"] = query["numhits"]
        if get_facets and "facets" in query:
            ret["response"]["facets"] = query["facets"]

    ret["response"]["start"] = start
    ret["request"]["sort"] = sort

    json_output = json.dumps(ret, cls=util.MyEncoder, sort_keys=True)
    if jsonp_callback is not None:
        json_output = jsonp_callback + "(" + json_output + ")"
    response = make_response(json_output, 200)
    response.mimetype = "application/json"
    response.headers["Expires"] = util.expires_date(hours=24)
    response.headers["Cache-Control"] = util.cache_max_age(hours=24)
    return response