diff --git a/api.py b/api.py index e3b74b9826a105ae395fd82c17aa0f11c9167f23..02cd993c0547f57047be5cd58f855558d3483569 100644 --- a/api.py +++ b/api.py @@ -120,8 +120,18 @@ def filter(): elif anfang != merkeLetter[len(merkeLetter)-1]["name"]: merkeLetter.append({"name" : anfang}) merke.append({"anfang" : anfang, "name" : actor}) - - return render_template('filter.html', letters = merkeLetter, objects = merke, filter = True, text = '') + #Filter für ungefähres Datum: + merkeDate = [] + dateQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in distinct-values(/root/object/descriptiveMetadata/datum/text()) order by $x return $x") + for a,datum in dateQuery.iter(): + merkeDate.append({"datum" : datum}) + #Filter für Ort: + merkeOrt = [] + ortQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in distinct-values(/root/object/descriptiveMetadata/ort/text()) order by $x return $x") + for a,ort in ortQuery.iter(): + merkeOrt.append({"ort" : ort}) + + return render_template('filter.html', letters = merkeLetter, objects = merke, dates = merkeDate, orte = merkeOrt, filter = True, text = '') @app.route('/filter/actor/<path:kunstler>', methods=['GET']) def filterActor(kunstler): @@ -158,5 +168,75 @@ def filterActor(kunstler): return render_template('index.html', objects = merke, searchBool = True, text = text) +@app.route('/filter/ort/<path:ort>', methods=['GET']) +def filterOrt(ort): + text = ort + merke = [] + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/bildLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/descriptiveMetadata/actor/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/ort[contains(text(),'" + ort + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x") + + urlList = [] + actorList = [] + titleList = [] + + for a,url in urlQuery.iter(): + urlList.append(url) + + for b,actor in actorQuery.iter(): + actorList.append(actor) + + for c,title in titleQuery.iter(): + titleList.append(title) + + + for i in range(0, len(urlList)): + url = urlList[i] + actor = actorList[i] + title = titleList[i] + eintrag = {"url" : url, "actor" : actor, "title" : title} + merke.append(eintrag) + + urlQuery.close() + actorQuery.close() + titleQuery.close() + + return render_template('index.html', objects = merke, searchBool = True, text = text) + +@app.route('/filter/datum/<path:datum>', methods=['GET']) +def filterDatum(datum): + text = datum + merke = [] + urlQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/bildLink/text()) return $x") + actorQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/descriptiveMetadata/actor/text()) return $x") + titleQuery = session.query("declare namespace lido=\"http://www.lido-schema.org\"; for $x in (/root/object[descriptiveMetadata/datum[contains(text(),'" + datum + "')]]/descriptiveMetadata/objectIdentificationWrap/title/text()) return $x") + + urlList = [] + actorList = [] + titleList = [] + + for a,url in urlQuery.iter(): + urlList.append(url) + + for b,actor in actorQuery.iter(): + actorList.append(actor) + + for c,title in titleQuery.iter(): + titleList.append(title) + + + for i in range(0, len(urlList)): + url = urlList[i] + actor = actorList[i] + title = titleList[i] + eintrag = {"url" : url, "actor" : actor, "title" : title} + merke.append(eintrag) + + urlQuery.close() + actorQuery.close() + titleQuery.close() + + return render_template('index.html', objects = merke, searchBool = True, text = text) + if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True) \ No newline at end of file