|
|
|
|
@ -27,10 +27,11 @@ from pymongo import ASCENDING
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from .dbinit import *
|
|
|
|
|
from .helper import make_timeitem_from_filename
|
|
|
|
|
from .helper import make_timeitem_from_filename, plaintext_response
|
|
|
|
|
|
|
|
|
|
main = Blueprint("main", __name__, url_prefix="/")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ______________________________________________________________________________
|
|
|
|
|
# routes
|
|
|
|
|
|
|
|
|
|
@ -39,62 +40,41 @@ def home():
|
|
|
|
|
"""home route"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
#actecol.find({key: { $regex: new RegExp(search, 'i')}})
|
|
|
|
|
query = [
|
|
|
|
|
{
|
|
|
|
|
"$match": {
|
|
|
|
|
"xmlcontent": {
|
|
|
|
|
"$regex": search,
|
|
|
|
|
"$options" :'i' # case-insensitive
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'$group': {'_id': {'prince_name': '$prince_name',
|
|
|
|
|
'house': '$house',
|
|
|
|
|
'date': '$date',
|
|
|
|
|
'prince_code': '$prince_code',
|
|
|
|
|
'filename': '$filename',
|
|
|
|
|
"place": "$place.name",
|
|
|
|
|
"diplo_state": "$diplo_state",
|
|
|
|
|
"diplo_type": "$diplo_type"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}]
|
|
|
|
|
results = list(actecol.aggregate(query))
|
|
|
|
|
transformed_query = [pr['_id'] for pr in results]
|
|
|
|
|
invert_prince_bigram = {val: key for key, val in prince_bigram.items()}
|
|
|
|
|
|
|
|
|
|
# constructing the dateitem
|
|
|
|
|
for trs in transformed_query:
|
|
|
|
|
trs['house'] = trs['house'].capitalize()
|
|
|
|
|
trs['dateitem'] = make_timeitem_from_filename(trs['filename'])
|
|
|
|
|
bigram, number = trs['prince_code'].split('_')
|
|
|
|
|
long_prince_bigram = inverted_prince_bigram(bigram) + '_' + number
|
|
|
|
|
trs['prince_url'] = prince_name=long_prince_bigram.capitalize()
|
|
|
|
|
return render_template("plainsearch.html", search=search, actes=transformed_query)
|
|
|
|
|
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
return render_template("home.html")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/about/", methods=('GET', 'POST'))
|
|
|
|
|
def about():
|
|
|
|
|
"""about route"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
return render_template("about.html")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/actes/")
|
|
|
|
|
@main.route("/actes/", methods=('GET', 'POST'))
|
|
|
|
|
def corpora_all():
|
|
|
|
|
"""copora all
|
|
|
|
|
|
|
|
|
|
lists houses
|
|
|
|
|
sample_house_names = ["Bourbon", "Berry", "Anjou", ...]
|
|
|
|
|
"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
houses = list(housecol.find())
|
|
|
|
|
return render_template("corpora_all.html", houses=houses)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/actes/<house>")
|
|
|
|
|
@main.route("/actes/<house>", methods=('GET', 'POST'))
|
|
|
|
|
def actes(house):
|
|
|
|
|
"""*actes* route, sample route: '/actes/Bourbon' or '/actes/Berry'
|
|
|
|
|
|
|
|
|
|
@ -104,6 +84,12 @@ def actes(house):
|
|
|
|
|
with a capital letter at the beginning
|
|
|
|
|
example: `house = "Berry"`
|
|
|
|
|
"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
# house in the store shall be in lower case, but let's force it, just in case
|
|
|
|
|
house = house.lower()
|
|
|
|
|
# sample result:
|
|
|
|
|
@ -116,12 +102,18 @@ def actes(house):
|
|
|
|
|
return render_template("corpus.html", house=house.capitalize(), princes=princes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/actes/<house>/<prince>")
|
|
|
|
|
@main.route("/actes/<house>/<prince>", methods=('GET', 'POST'))
|
|
|
|
|
def prince_corpus(house=None, prince=None):
|
|
|
|
|
"""copora prince, *timeline* view
|
|
|
|
|
|
|
|
|
|
sample route: '/actes/Berry/je_i' or '/actes/Anjou/lo_i'
|
|
|
|
|
"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
prince_code = prince.lower()
|
|
|
|
|
house = house.lower()
|
|
|
|
|
prince_long_name = extract_prince_in_house(house, prince_code)['prince_name']
|
|
|
|
|
@ -158,7 +150,7 @@ def prince_corpus(house=None, prince=None):
|
|
|
|
|
return render_template("prince_corpus.html", house=house, duke_name=prince_long_name,
|
|
|
|
|
prince_name=long_prince_bigram.capitalize(), actes=transformed_query)
|
|
|
|
|
|
|
|
|
|
@main.route("/acte/<house>/<prince>/<dateitem>")
|
|
|
|
|
@main.route("/acte/<house>/<prince>/<dateitem>", methods=('GET', 'POST'))
|
|
|
|
|
def acte(house=None, prince=None, dateitem=None):
|
|
|
|
|
"""specific prince's acte view
|
|
|
|
|
|
|
|
|
|
@ -171,6 +163,12 @@ def acte(house=None, prince=None, dateitem=None):
|
|
|
|
|
/acte/Anjou/Isabelle_i/1441_08_05a -> anj_isa_i_1441_08_05a
|
|
|
|
|
/acte/Bourbon/Anne_i/1388_09_15a -> brb_ann_i_1388_09_15a
|
|
|
|
|
"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
filestem = make_acteid_from_route(house, prince, dateitem)
|
|
|
|
|
result = actecol.find_one({'_id': filestem})
|
|
|
|
|
return render_template("acte.html", house=house, prince=result.get('prince_code'),
|
|
|
|
|
@ -181,8 +179,14 @@ def acte(house=None, prince=None, dateitem=None):
|
|
|
|
|
transcribers=result.get('transcribers'),
|
|
|
|
|
image=result.get('image'))
|
|
|
|
|
|
|
|
|
|
@main.route("/geolocalisation")
|
|
|
|
|
@main.route("/geolocalisation", methods=('GET', 'POST'))
|
|
|
|
|
def geolocalisation():
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
"global folium/leaflet map"
|
|
|
|
|
m = folium.Map(location=[46.603354, 1.888334], zoom_start=6)
|
|
|
|
|
for result in actecol.find():
|
|
|
|
|
@ -199,19 +203,37 @@ def geolocalisation():
|
|
|
|
|
geolocalisation = m._repr_html_()
|
|
|
|
|
return render_template("map.html", geolocalisation=geolocalisation)
|
|
|
|
|
|
|
|
|
|
@main.route("/contact")
|
|
|
|
|
@main.route("/contact", methods=('GET', 'POST'))
|
|
|
|
|
def contact() -> t.Text:
|
|
|
|
|
"""Displays the Contact page"""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
return render_template("contact.html", title="Contact")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/termsofservice")
|
|
|
|
|
@main.route("/termsofservice", methods=('GET', 'POST'))
|
|
|
|
|
def terms() -> t.Text:
|
|
|
|
|
"""Displaysthe T&C page."""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
return render_template("terms.html", title="Mentions légales")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/privacy")
|
|
|
|
|
@main.route("/privacy", methods=('GET', 'POST'))
|
|
|
|
|
def privacy() -> t.Text:
|
|
|
|
|
"""Displays the privacy policy page."""
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
search = request.form['search']
|
|
|
|
|
return render_template("plainsearch.html",
|
|
|
|
|
search=search,
|
|
|
|
|
actes=plaintext_response(search, actecol, prince_bigram))
|
|
|
|
|
|
|
|
|
|
return render_template("privacy.html", title="Politique de confidentialité")
|
|
|
|
|
|