Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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')
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)