acte/house/prince/dateitem route working

develop
gwen 2 years ago
parent 3ddc9ad7d1
commit d34cb275dc

@ -1,5 +1,6 @@
import typing as t import typing as t
import urllib.parse import urllib.parse
from unidecode import unidecode
from flask import Blueprint, abort, render_template, request, send_from_directory from flask import Blueprint, abort, render_template, request, send_from_directory
from pymongo import MongoClient from pymongo import MongoClient
@ -10,13 +11,51 @@ from .helper import find_one_or_404
main = Blueprint("main", __name__, url_prefix="/") main = Blueprint("main", __name__, url_prefix="/")
# FIXME : put the mongodb connector in the flask app object
# database connexion # database connexion
username = urllib.parse.quote_plus(dbadmin) username = urllib.parse.quote_plus(dbadmin)
password = urllib.parse.quote_plus(dbpassword) password = urllib.parse.quote_plus(dbpassword)
dbclient = MongoClient(f'mongodb://{username}:{password}@{server_ip}:27017') dbclient = MongoClient(f'mongodb://{username}:{password}@{server_ip}:27017')
actesdb = dbclient["actesdb"] actesdb = dbclient["actesdb"]
#
housecol = actesdb["house"] housecol = actesdb["house"]
actecol = actesdb["acte"]
helpers = actesdb["helpers"]
#
helpers_dicts = helpers.find_one()
house_trigram = helpers_dicts["house_trigram"]
prince_bigram = helpers_dicts["prince_bigram"]
def normalize_trigrams(trigram):
"""noramlizes names like Alençon -> Alencon
or Orléans -> Orleans for the url routes to be clean
"""
return {unidecode(value):key for key, value in trigram.items()}
# normalized_trigrams
house_trigram = normalize_trigrams(house_trigram)
prince_bigram = normalize_trigrams(prince_bigram)
def bigram_prince(prince):
"Translates Charles_i -> ch_i"
name, number = prince.split("_")
return prince_bigram[name] + "_" + number
def trigram_house(house):
return house_trigram[house]
# TODO: write tests in the datascience project
#print(bigram_prince("Agnes"))
#print(bigram_prince("Arthur"))
#print(bigram_prince("Bernard"))
#print(trigram_house("Anjou"))
#print(trigram_house("Orleans"))
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"
return "_".join([trigram_house(house), bigram_prince(prince), date_and_item])
@main.route("/") @main.route("/")
def home(): def home():
@ -43,30 +82,46 @@ def corpora_all():
@main.route("/actes/<house>") # dont put a slash at the end @main.route("/actes/<house>") # dont put a slash at the end
def actes(house): def actes(house):
"""actes route""" """actes route
shows the princes in the selected house
"""
#house = "Berry" #house = "Berry"
# FIXME faire des princes correspondant à la maison (house) sélectionnée # FIXME faire des princes correspondant à la maison (house) sélectionnée
# FIXME : supprimer ces ids
# Corpus > Bourbon # Corpus > Bourbon
princes = [("Charles Ier de Bourbon", 36), ("Agnès de Bourgogne", 38), princes = [("Charles Ier de Bourbon", 36), ("Agnès de Bourgogne", 38),
("Marie de Berry", 39)] ("Marie de Berry", 39)]
return render_template("corpus.html", house=house, princes=princes) return render_template("corpus.html", house=house, princes=princes)
# FIXME SLUGGIFY the house
# FIXME supprimer cet id de prince et remplacer par le slug du prince
@main.route("/actes/<house>/<prince>") # don't put a slash at the end @main.route("/actes/<house>/<prince>") # don't put a slash at the end
def prince_corpus(house=None, prince=None): def prince_corpus(house=None, prince=None):
"""copora prince, **timeline view**""" """copora prince, **timeline view**"""
return "FIXME" # FIXME
return "FIXME" # make_acteid_from_route(house, prince)
@main.route("/acte/<house>/<prince>/<dateitem>") # don't put a slash at the end
def acte(house=None, prince=None, dateitem=None):
"""specific prince's acte view
:params: - house
- prince
- date + item (sample: 1441_08_05a)
:url location sample: /acte/Anjou/Isabelle_i/1441_08_05a
url transcription samples:
/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
"""
filestem = make_acteid_from_route(house, prince, dateitem)
result = actecol.find_one({'_id': filestem})
return render_template("acte.html", house=house, prince=prince,
#infos=None, place=None, doc=None, arch=None,
#diplo=diplo_t[0].replace("_", " "), state=state[0],
output_doc=result.get('xmlcontent'), name_prince=result.get("prince_name"),
transcribers=result.get('transcribers'))
# FIXME : slugigy this route (remove acte_id) (prince and acte)
# FIXME: isn't it /acte/house/prince/slug instead of /acte/prince/slug ?
@main.route("/acte/<prince>/<acte_id>") # don't put a slash at the end
def acte(house=None, prince=None, acte_id=None):
"""specific prince's acte"""
return "FIXME"
@main.route("/contact") @main.route("/contact")
def contact() -> t.Text: def contact() -> t.Text:

@ -19,8 +19,15 @@
{{output_doc|safe}} {{output_doc|safe}}
<p class="font-italic font-weight-light fs-6"> <p class="font-italic font-weight-light fs-6">
Transcription : {% for name in transcribers %}{% if name == transcribers[0] %}{{name}}{% elif name == transcribers[-1] %} et {{name}}{% else %}, {{name}}{% endif %}{% endfor %}. Transcription :
{% for name in transcribers %}
{% if name == transcribers[0] %}{{name}}
{% elif name == transcribers[-1] %}
et {{name}}
{% else %}, {{name}}
{% endif %}
{% endfor %}.
</p> </p>
<!--<p class="font-italic font-weight-light fs-6">Transcription : {{transcriber}}.</p>--> <!--<p class="font-italic font-weight-light fs-6">Transcription : {{transcriber}}.</p>-->
</div><!-- /.container --> </div><!-- /.container -->
{% endblock %} {% endblock %}

@ -1,5 +1,3 @@
#beautifulsoup4==4.11.1
#bs4==0.0.1
click==8.1.3 click==8.1.3
dnspython==2.4.2 dnspython==2.4.2
email-validator==2.0.0.post2 email-validator==2.0.0.post2
@ -22,4 +20,5 @@ Flask-WTF==1.1.1
WTForms==3.0.1 WTForms==3.0.1
zipp==3.9.0 zipp==3.9.0
pyyaml==6.0.1 pyyaml==6.0.1
Unidecode==1.3.6

Loading…
Cancel
Save