improved display and storage of Werk.Erscheinungsdatum:
- values are displayed in three separate input fields that are being validated on submit - values are stored in the DB as either NULL or a string in format YYYY, YYYY-MM or YYYY-MM-DD - also renamed template
This commit is contained in:
parent
08f39e0d22
commit
ef7947ff41
@ -1,5 +1,6 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% set create_mode = (werk['ID'] == 0) %}
|
{% set create_mode = (werk['ID'] == 0) %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
{% if create_mode %}
|
{% if create_mode %}
|
||||||
Neues Werk erstellen
|
Neues Werk erstellen
|
||||||
@ -9,6 +10,27 @@ Werk bearbeiten
|
|||||||
{% endblock title %}
|
{% endblock title %}
|
||||||
|
|
||||||
{% block script %}
|
{% block script %}
|
||||||
|
<script>
|
||||||
|
function validate_date() {
|
||||||
|
let t = document.getElementById("form_Erscheinungstag");
|
||||||
|
let m = document.getElementById("form_Erscheinungsmonat");
|
||||||
|
let j = document.getElementById("form_Erscheinungsjahr");
|
||||||
|
t.setCustomValidity("");
|
||||||
|
m.setCustomValidity("");
|
||||||
|
console.log("This is function validate_date(): tag/monat/jahr is " + t.value + "/" + m.value + "/" + j.value); //DEBUG
|
||||||
|
if ( t.value != "" ) {
|
||||||
|
if ( j.value == "" || m.value == "" ) {
|
||||||
|
t.setCustomValidity("wenn der Tag angegeben ist, müssen Monat und Jahr ebenfalls angegeben sein");
|
||||||
|
t.reportValidity();
|
||||||
|
}
|
||||||
|
} else if ( m.value != "" ) {
|
||||||
|
if ( j.value == "") {
|
||||||
|
m.setCustomValidity("wenn der Monat angegeben ist, muss das Jahr ebenfalls angegeben sein");
|
||||||
|
m.reportValidity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
{% endblock script %}
|
{% endblock script %}
|
||||||
|
|
||||||
{% block heading %}
|
{% block heading %}
|
||||||
@ -65,8 +87,12 @@ Werk bearbeiten
|
|||||||
<input id="form_Preis" name="form_Preis" aria-label="Preis" placeholder="kein Preis" value="{{ werk['Preis'] }}" />
|
<input id="form_Preis" name="form_Preis" aria-label="Preis" placeholder="kein Preis" value="{{ werk['Preis'] }}" />
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Erscheinungsdatum
|
Erscheinungsdatum (TT-MM-JJJJ, MM-JJJJ, JJJJ oder leer)
|
||||||
<input type="date" id="form_Erscheinungsdatum" name="form_Erscheinungsdatum" aria-label="Erscheinungsdatum" placeholder="kein Datum" value="{{ werk['Datum'] }}" />
|
<div class="grid">
|
||||||
|
<input type="number" min="1" max="31" id="form_Erscheinungstag" name="form_Erscheinungstag" aria-label="Erscheinungstag" placeholder="Tag" value="{{ werk['Erscheinungsdatum'][8:] }}" />
|
||||||
|
<input type="number" min="1" max="12" id="form_Erscheinungsmonat" name="form_Erscheinungsmonat" aria-label="Erscheinungsmonat" placeholder="Monat" value="{{ werk['Erscheinungsdatum'][5:7] }}" />
|
||||||
|
<input type="number" min="1980" max="2100" id="form_Erscheinungsjahr" name="form_Erscheinungsjahr" aria-label="Erscheinungsjahr" placeholder="Jahr" value="{{ werk['Erscheinungsdatum'][:4] }}" />
|
||||||
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
ISBN-13
|
ISBN-13
|
||||||
@ -100,7 +126,7 @@ Werk bearbeiten
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<footer class="grid">
|
<footer class="grid">
|
||||||
<button id="form_submit" type="submit" formmethod="post" formaction="{% if create_mode %}{{ url_for('werk.create') }}{% else %}{{ url_for('werk.update', id=werk['ID']) }}{% endif %}">
|
<button id="form_submit" type="submit" onclick="return validate_date()" formmethod="post" formaction="{% if create_mode %}{{ url_for('werk.create') }}{% else %}{{ url_for('werk.update', id=werk['ID']) }}{% endif %}">
|
||||||
{% if create_mode %}Eintrag speichern{% else %}Änderungen speichern{% endif %}
|
{% if create_mode %}Eintrag speichern{% else %}Änderungen speichern{% endif %}
|
||||||
</button>
|
</button>
|
||||||
<button type="reset" title="Alle Felder auf den vorherigen Zustand zurücksetzen">Alles zurücksetzen</button>
|
<button type="reset" title="Alle Felder auf den vorherigen Zustand zurücksetzen">Alles zurücksetzen</button>
|
||||||
@ -30,7 +30,7 @@ def all():
|
|||||||
def read(id):
|
def read(id):
|
||||||
# id of zero -> create new entry
|
# id of zero -> create new entry
|
||||||
if id == 0:
|
if id == 0:
|
||||||
return render_template("views/werk_full.html", werk={"ID": 0}, reihen=db.session.scalars(select(Reihe)), verlage=db.session.scalars(select(Verlag)), werksformen=db.session.scalars(select(Werksform)))
|
return render_template("views/werk_detail.html", werk={"ID": 0, "Erscheinungsdatum": ""}, reihen=db.session.scalars(select(Reihe)), verlage=db.session.scalars(select(Verlag)), werksformen=db.session.scalars(select(Werksform)))
|
||||||
# all other ids -> update existing entry
|
# all other ids -> update existing entry
|
||||||
w = db.session.get(Werk, id)
|
w = db.session.get(Werk, id)
|
||||||
werk = {
|
werk = {
|
||||||
@ -50,10 +50,13 @@ def read(id):
|
|||||||
"Klappentext": w.Klappentext or "",
|
"Klappentext": w.Klappentext or "",
|
||||||
"Anmerkungen": w.Anmerkungen or ""
|
"Anmerkungen": w.Anmerkungen or ""
|
||||||
}
|
}
|
||||||
return render_template("views/werk_full.html", werk=werk, reihen=db.session.scalars(select(Reihe)), verlage=db.session.scalars(select(Verlag)), werksformen=db.session.scalars(select(Werksform)))
|
return render_template("views/werk_detail.html", werk=werk, reihen=db.session.scalars(select(Reihe)), verlage=db.session.scalars(select(Verlag)), werksformen=db.session.scalars(select(Werksform)))
|
||||||
|
|
||||||
@bp.route("/werk/create", methods=["POST"])
|
@bp.route("/werk/create", methods=["POST"])
|
||||||
def create():
|
def create():
|
||||||
|
datum = get_datum(request.form["form_Erscheinungsjahr"], request.form["form_Erscheinungsmonat"], request.form["form_Erscheinungstag"])
|
||||||
|
print(f"/werk/create: datum is {datum}") #DEBUG
|
||||||
|
# create new entry
|
||||||
db.session.add(Werk(
|
db.session.add(Werk(
|
||||||
Titel = request.form["form_Titel"],
|
Titel = request.form["form_Titel"],
|
||||||
Untertitel = request.form["form_Untertitel"] or None,
|
Untertitel = request.form["form_Untertitel"] or None,
|
||||||
@ -61,7 +64,7 @@ def create():
|
|||||||
Verlag = request.form["form_Verlag"] or None,
|
Verlag = request.form["form_Verlag"] or None,
|
||||||
Reihe = request.form["form_Reihe"] or None,
|
Reihe = request.form["form_Reihe"] or None,
|
||||||
Reihennummer = request.form["form_Reihennummer"] or None,
|
Reihennummer = request.form["form_Reihennummer"] or None,
|
||||||
Erscheinungsdatum = request.form["form_Erscheinungsdatum"] or None,
|
Erscheinungsdatum = datum,
|
||||||
ISBN_13 = request.form["form_ISBN_13"] or None,
|
ISBN_13 = request.form["form_ISBN_13"] or None,
|
||||||
ISBN_10 = request.form["form_ISBN_10"] or None,
|
ISBN_10 = request.form["form_ISBN_10"] or None,
|
||||||
ISSN = request.form["form_ISSN"] or None,
|
ISSN = request.form["form_ISSN"] or None,
|
||||||
@ -76,6 +79,8 @@ def create():
|
|||||||
|
|
||||||
@bp.route("/werk/update/<int:id>", methods=["POST"])
|
@bp.route("/werk/update/<int:id>", methods=["POST"])
|
||||||
def update(id):
|
def update(id):
|
||||||
|
datum = get_datum(request.form["form_Erscheinungsjahr"], request.form["form_Erscheinungsmonat"], request.form["form_Erscheinungstag"])
|
||||||
|
print(f"/werk/update/{id}: datum is {datum}") #DEBUG
|
||||||
# get record
|
# get record
|
||||||
werk = db.session.get(Werk, id)
|
werk = db.session.get(Werk, id)
|
||||||
# update values
|
# update values
|
||||||
@ -85,7 +90,7 @@ def update(id):
|
|||||||
werk.Verlag = request.form["form_Verlag"] or None
|
werk.Verlag = request.form["form_Verlag"] or None
|
||||||
werk.Reihe = request.form["form_Reihe"] or None
|
werk.Reihe = request.form["form_Reihe"] or None
|
||||||
werk.Reihennummer = request.form["form_Reihennummer"] or None
|
werk.Reihennummer = request.form["form_Reihennummer"] or None
|
||||||
werk.Erscheinungsdatum = request.form["form_Erscheinungsdatum"] or None
|
werk.Erscheinungsdatum = datum
|
||||||
werk.ISBN_13 = request.form["form_ISBN_13"] or None
|
werk.ISBN_13 = request.form["form_ISBN_13"] or None
|
||||||
werk.ISBN_10 = request.form["form_ISBN_10"] or None
|
werk.ISBN_10 = request.form["form_ISBN_10"] or None
|
||||||
werk.ISSN = request.form["form_ISSN"] or None
|
werk.ISSN = request.form["form_ISSN"] or None
|
||||||
@ -105,3 +110,14 @@ def delete(id):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
flash("Eintrag erfolgreich gelöscht")
|
flash("Eintrag erfolgreich gelöscht")
|
||||||
return redirect(url_for("werk.all"))
|
return redirect(url_for("werk.all"))
|
||||||
|
|
||||||
|
def get_datum(jahr, monat, tag):
|
||||||
|
if tag != "":
|
||||||
|
return "-".join([jahr, monat.zfill(2), tag.zfill(2)])
|
||||||
|
elif monat != "":
|
||||||
|
return "-".join([jahr, monat.zfill(2)])
|
||||||
|
elif jahr != "":
|
||||||
|
return jahr
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user