def leihen_edit(leihe_id=None): """ Create und update for Leihen. Wertet auf die URL-Query Parameter kunde_id und station_id aus, die die entsprechenden Felder voreinstellen. """ leihe = None try: if leihe_id: leihe = Leihe(**rest_get_id("leihen", leihe_id)) form = LeiheForm(request.form, leihe) else: form = LeiheForm() form.kunde_id.choices = [(kunde["id"], kunde["name"]) for kunde in rest_get_all("kunden")] form.car_id.choices = [(car["id"], car["platenumber"]) for car in rest_get_all("cars")] form.station_abhol_id.choices = [(station["id"], station["name"]) for station in rest_get_all("stations")] form.station_return_id.choices = [(station["id"], station["name"]) for station in rest_get_all("stations")] if u'kunde_id' in request.args: form.kunde_id.data = int(request.args[u'kunde_id']) if u'station_id' in request.args: form.station_abhol_id.data = int(request.args[u'station_id']) form.station_return_id.data = int(request.args[u'station_id']) if form.validate_on_submit(): kunde = Kunde(**rest_get_id("kunden", form.data["kunde_id"])) data = form.data data["von"] = form.data["von"].isoformat() data["bis"] = form.data["bis"].isoformat() if not leihe_id: del(data["id"]) rest_post("leihen", data) flash(u"Leihe für %s wurde neu angelegt" % kunde.name, category="success") else: rest_put("leihen", leihe_id, data) flash(u"Leihe für %s wurde neu geändert" % kunde.name, category="success") return redirect(url_for('leihen_list')) except HTTPError, e: return errorpage(e)
laendernamen = [c[1] for c in COUNTRIES] if kunde_id: if kunde.country in laendernamen: del(laendernamen[laendernamen.index(kunde.country)]) laendernamen.insert(0, kunde.country) choices = zip(laendernamen, laendernamen) form.country.choices = zip(laendernamen, laendernamen) if form.validate_on_submit(): try: if not kunde_id: # Delete possible id-Field for new Kunden del(form['id']) rest_post("kunden", form.data) flash(("Kunde %s wurde neu angelegt" % form.data["name"])) else: rest_put("kunden", kunde_id, form.data) flash(("Kunde %s wurde gespeichert" % form.data["name"])) except HTTPError, e: return errorpage(e) return redirect(url_for('kunden_list')) return render_template("kunden_edit.html", form=form, kunde=kunde, leihen=leihen, leihen_fields=LEIHE_FIELDS) @app.route("/kunde/<int:kunde_id>/delete/") def kunden_delete(kunde_id): """ Löschen eines Kunden - aber nur wenn er keine offenen Leihen gibt. """ kunde = Kunde(**rest_get_id("kunden", kunde_id)) name = kunde.name leihen_not_beendet = len([leihe["returned"] for leihe in kunde.leihen if not leihe["returned"]]) if leihen_not_beendet>0: