all routes ok

develop
gwen 2 years ago
parent 8f2df04dbe
commit ba693793d1

@ -8,10 +8,10 @@ with the pymongo library.
""" """
import urllib.parse import urllib.parse
from unidecode import unidecode # to remove accents in house and prince names in the urls
from pymongo import MongoClient from pymongo import MongoClient
from .config import dbadmin, dbpassword, server_ip from .config import dbadmin, dbpassword, server_ip
from .helper import normalize_trigrams
# ______________________________________________________________________________ # ______________________________________________________________________________
# database connexion # database connexion
@ -36,7 +36,9 @@ helpers = actesdb["helpers"]
# storage extractor utilities # storage extractor utilities
def make_acteid_from_route(house=None, prince=None, date_and_item=None): def make_acteid_from_route(house=None, prince=None, date_and_item=None):
"/acte/Anjou/Isabelle_i/1441_08_05a -> anj_isa_i_1441_08_05a" """
/acte/Anjou/Isabelle_i/1441_08_05a -> anj_isa_i_1441_08_05a
"""
return "_".join([trigram_house(house), bigram_prince(prince), date_and_item]) return "_".join([trigram_house(house), bigram_prince(prince), date_and_item])
@ -72,10 +74,17 @@ def extract_prince_in_house(house, prince_code):
if pr['prince_code'] == prince_code: if pr['prince_code'] == prince_code:
return pr return pr
def normalize_trigrams(trigram):
"""normalizes names, usefull for the uris routes
sample: Alençon -> Alencon
Orléans -> Orleans
"""
return {unidecode(value):key for key, value in trigram.items()}
# ______________________________________________________________________________ # ______________________________________________________________________________
# in memory storage extracted 'meta' informations upon the database # in memory storage extracted 'meta' informations upon the database
# TODO: if it takes too much time at launch, put it in something like # TODO: if it takes too much time at startup, jsut put it in something like
# a `flask init` procedure # a `flask init` procedure
helpers_dicts = helpers.find_one() helpers_dicts = helpers.find_one()
@ -83,10 +92,13 @@ house_trigram = helpers_dicts["house_trigram"]
prince_bigram = helpers_dicts["prince_bigram"] prince_bigram = helpers_dicts["prince_bigram"]
princes_in_houses = extract_princes_in_houses() princes_in_houses = extract_princes_in_houses()
""" """
house_trigram sample: house_trigram sample:
{'Alencon': 'alb', 'Anjou': 'anj', 'Armagnac': 'arm', 'Bourbon': 'brb', 'Bretagne': 'bre', 'Bourgogne': 'brg', 'Berry': 'bry', 'Orleans': 'orl', 'Savoie': 'sav'} {'Alencon': 'alb', 'Anjou': 'anj', 'Armagnac': 'arm', 'Bourbon': 'brb', 'Bretagne': 'bre', 'Bourgogne': 'brg', 'Berry': 'bry', 'Orleans': 'orl', 'Savoie': 'sav'}
""" """
house_trigram = normalize_trigrams(house_trigram) house_trigram = normalize_trigrams(house_trigram)
""" """
prince_bigram sample: prince_bigram sample:

@ -2,7 +2,6 @@
TODO: maybe all these calculations are to be put in the db storage TODO: maybe all these calculations are to be put in the db storage
""" """
from unidecode import unidecode # to remove accents in house and prince names in the urls
def make_timeitem_from_filename(filename): def make_timeitem_from_filename(filename):
""" """
@ -11,14 +10,6 @@ def make_timeitem_from_filename(filename):
trs_fname = filename.split('_') trs_fname = filename.split('_')
return "_".join(trs_fname[3:]) return "_".join(trs_fname[3:])
def normalize_trigrams(trigram):
"""normalizes names, usefull for the uris routes
sample: Alençon -> Alencon
Orléans -> Orleans
"""
return {unidecode(value):key for key, value in trigram.items()}
#from flask import abort #from flask import abort
# #
#def find_one_or_404(collection, **kwargs): #def find_one_or_404(collection, **kwargs):

@ -110,12 +110,18 @@ def prince_corpus(house=None, prince=None):
} }
])) ]))
transformed_query = [pr['_id'] for pr in query] transformed_query = [pr['_id'] for pr in query]
invert_prince_bigram = {val: key for key, val in prince_bigram.items()}
#print(invert_prince_bigram)
# constructing the dateitem # constructing the dateitem
for trs in transformed_query: for trs in transformed_query:
trs['timeitem'] = make_timeitem_from_filename(trs['filename']) trs['dateitem'] = make_timeitem_from_filename(trs['filename'])
bigram, number = trs['prince_code'].split('_')
long_prince_bigram = inverted_prince_bigram(bigram) + '_' + number
return render_template("prince_corpus.html", house=house, duke_name=prince_long_name, return render_template("prince_corpus.html", house=house, duke_name=prince_long_name,
prince_code=prince_code.capitalize(), actes=transformed_query) prince_name=long_prince_bigram.capitalize(), actes=transformed_query)
@main.route("/acte/<house>/<prince>/<dateitem>") @main.route("/acte/<house>/<prince>/<dateitem>")
def acte(house=None, prince=None, dateitem=None): def acte(house=None, prince=None, dateitem=None):
@ -132,7 +138,7 @@ def acte(house=None, prince=None, dateitem=None):
""" """
filestem = make_acteid_from_route(house, prince, dateitem) filestem = make_acteid_from_route(house, prince, dateitem)
result = actecol.find_one({'_id': filestem}) result = actecol.find_one({'_id': filestem})
return render_template("acte.html", house=house, prince=prince, return render_template("acte.html", house=house, prince=result.get('prince_code'),
#infos=None, place=None, doc=None, arch=None, #infos=None, place=None, doc=None, arch=None,
#diplo=diplo_t[0].replace("_", " "), state=state[0], #diplo=diplo_t[0].replace("_", " "), state=state[0],
output_doc=result.get('xmlcontent'), name_prince=result.get("prince_name"), output_doc=result.get('xmlcontent'), name_prince=result.get("prince_name"),

@ -16,7 +16,7 @@
<h3>{{ acte['date'] }}</h3> <h3>{{ acte['date'] }}</h3>
</div> </div>
<div class="pboly"> <div class="pboly">
<p class="chrono-p font-weight-bold"><a href="{{url_for('main.acte', house=house, prince=prince_code, dateitem=dateitem)}}">{{ acte['analysis'] }}.</a></p> <p class="chrono-p font-weight-bold"><a href="{{url_for('main.acte', house=house.capitalize(), prince=prince_name, dateitem=acte['dateitem'])}}">{{ acte['analysis'] }}.</a></p>
<p style="margin-bottom: 5%"> <p style="margin-bottom: 5%">
{% if acte['place'] != 'NS' %} {% if acte['place'] != 'NS' %}
<span class="badge badge-pill badge" style="background-color: #284AA7; color: white; font-size: small;">{{ acte['place'] }}</span> <span class="badge badge-pill badge" style="background-color: #284AA7; color: white; font-size: small;">{{ acte['place'] }}</span>

Loading…
Cancel
Save