diff --git a/main.py b/main.py index 935d4b0..63c3f1f 100755 --- a/main.py +++ b/main.py @@ -78,6 +78,46 @@ def person(person_id: int) -> str | Response: ) +@app.route("/person//split", methods=["GET", "POST"]) +def split_person(person_id: int) -> str | Response: + """Split person.""" + item = model.Person.query.get(person_id) + assert not item.wikidata_qid + if flask.request.method == "GET": + return flask.render_template( + "person/split.html", + item=item, + ) + + names = flask.request.form["names"].strip().splitlines() + print(names) + assert len(names) > 1 + + item.name = names[0] + for cp in item.conferences_association: + cp.named_as = names[0] + + for num, name in enumerate(names[1:], start=2): + person = model.Person(name=name) + database.session.add(person) + + for cp0 in item.conferences_association: + cp = model.ConferencePerson( + person=person, named_as=name, conference_id=cp0.conference_id + ) + database.session.add(cp) + + for event0 in item.events_association: + ep = model.EventPerson( + person=person, event_id=event0.event_id, position=num + ) + database.session.add(ep) + + database.session.commit() + + return flask.redirect(flask.url_for("person", person_id=person_id)) + + @app.route("/event/") def event_page(event_id: int) -> str: item = model.Event.query.get(event_id) diff --git a/templates/person.html b/templates/person.html index 786998d..520b496 100644 --- a/templates/person.html +++ b/templates/person.html @@ -62,9 +62,11 @@
- +
+
split person
+ {% if show_wikidata_matches %} {% if wikidata_hits %}

Possible Wikidata matches

diff --git a/templates/person/split.html b/templates/person/split.html new file mode 100644 index 0000000..ece29da --- /dev/null +++ b/templates/person/split.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% block title %}Split speaker – Conference archive{% endblock %} + +{% block content %} +

{{ item.name }}

+ +
+
+ +
+ + +{% endblock %}