def kunden_list(): """ List all Kunden """ kunden = rest_get_all("kunden") kunden = tidy_objects(kunden, KUNDE_FIELDS) return render_template("kunden_list.html", kunden=kunden)
def cars_list(): """ List all Cars """ cars = rest_get_all("cars") cars = tidy_objects(cars, CAR_FIELDS) return render_template("cars_list.html", cars=cars, fields=CAR_FIELDS)
def create_db(): """ Call :py:meth:`models.initialize_database` and recreate the database """ d = {} try: flash("Database Queryied") d["cars"] = tidy_objects(rest_get_all("cars"), CAR_FIELDS) d["stations"] = tidy_objects(rest_get_all("stations"), STATION_FIELDS) d["kunden"] = tidy_objects(rest_get_all("kunden"), KUNDE_FIELDS) d["leihen"] = rest_get_all("leihen") d["car_fields"] = CAR_FIELDS d["stations_fields"] = STATION_FIELDS d["kunden_fields"] = KUNDE_FIELDS d["leihen_fields"] = LEIHE_FIELDS except OperationalError, e: flash(str(e), category='error')
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)
def kunden_edit(kunde_id=None): """ Legt entweder einen neuen Kunden an oder editiert einen bestehenden. Wie immer gibt es das Problem, das create und update sehr ähnlich sind - hier habe ich beides auf einmale implementiert. Mgl kann mit Classbased Views strukturierter vorgegangen werden """ leihen = [] kunde = None if kunde_id: try: kunde_dict = rest_get_id("kunden", kunde_id) kunde = Kunde(**kunde_dict) leihen = rest_get_all("leihen") leihen = [Leihe(**d) for d in leihen if d["kunde_id"] == kunde_id] form = KundenForm(request.form, kunde) except HTTPError, e: return errorpage(e)
def leihe_neu1(kunde_id): """ Klickt man bei der Kunden-Detail View auf "Neue Leihe" werden in dieser View anhand der Adresse des Kunden die Distanzen zu unseren Verleihstationen berechnet und als Tabelle angezeigt. """ try: kunde = Kunde(**rest_get_id("kunden", kunde_id)) stationen = [Station(**d) for d in rest_get_all("stations")] cachehits = 0 for station in stationen: try: station.distance, cachehit = get_distance(kunde.adresse, station.adresse) except DistanceServiceError: station.distance = {'distance' : { 'text' : 'Unavailable', 'value' : -1}, 'duration' : { 'text' : "bis ans Ende der Zeit", 'value' : -1}} cachehit = False if cachehit: cachehits += 1 stationen.sort(key=lambda x: x.distance['duration']['value']) flash("Cachehits bei der Distanzberechnung: %d" % cachehits) return render_template("neue_leihe_kunde1.html", kunde=kunde, stationen=stationen) except HTTPError, e: return errorpage(e)
def leihen_list(): leihen = rest_get_all("leihen") leihen = [Leihe(**d) for d in leihen] leihen.sort(key=lambda x: x.id) return render_template("leihen_list.html", leihen=leihen)