コード例 #1
0
ファイル: main.py プロジェクト: PierreGe/villo
def drop_bike(station_id, bike_id):
    user = current_user()
    if user.is_admin():
        active_trip = filter(lambda t: t.bike_id == bike_id, user.active_trips)
        if len(active_trip) != 1:
            flash(u"Vous n'utilisez actuellement pas le villo %d" % bike_id, "danger")
            return redirect("/")
        else:
            trip = active_trip.pop()
    else:
        trip = current_user().current_trip

    try:
        station = get_db().Station.get(station_id)
    except KeyError:
        flash(u"Station %d inconnue", "danger")
        return redirect("/")
    
    if not trip:
        flash(u"Vous n'avez pas de location en cours", "danger")
    elif trip.bike_id != bike_id:
        flash(u"Vous n'utilisez' actuellement pas le villo %d" % bike_id, "danger")
    elif station.free_slots == 0:
        flash(u"Il n'y a pas de point d'attache libre à %s" % station.name, "danger")
    else:
        trip.arrival_station_id = station_id
        trip.arrival_date = datetime.now()
        trip.update()
        flash(u"Vous avez déposé votre vélo à la station %s" % station.name, "success")
    return redirect("/")
コード例 #2
0
ファイル: main.py プロジェクト: PierreGe/villo
def subscription():
    if current_user():
        current_user().renew()
        return redirect(url_for('index'))
    else:
        F = {k: v[0] for k,v in dict(request.form).iteritems()}
        print F
        if F['subscriber'] == 'true':
            new_user = get_db().User.create(
                password=F['userPassword'],
                card=F['userBankData'],
                firstname=F['userFirstName'],
                lastname=F['userLastName'],
                phone_number=F['userPhone'],
                address_street=F['userStreet'],
                address_streenumber= F['userNumber'] ,
                address_zipcode=F['userPostalCode'],
                address_city= F['userCity'],
                address_country=F['userCountry'],
                entry_date= datetime.now(),
                rfid= get_db().User.newUniqueRFID(),
                expire_date=datetime.now() + timedelta(days=365))
        else:
            dt = timedelta(days=7 if F['tempAmount'] == '7j' else 1)
            new_user = get_db().User.create(
                password=F['userPassword'],
                expire_date=datetime.now()+dt)
        connect_user(new_user)
        return render_template("welcome.html", user=new_user)
コード例 #3
0
ファイル: main.py プロジェクト: PierreGe/villo
def billing():
    if current_user().is_admin():
        return redirect("/")
    user = current_user()
    starting = user.expire_date - timedelta(days=(365))
    periodeFact = (starting.strftime("%d-%m-%Y"), str(user.expire_date.strftime("%d-%m-%Y")))
    billedTrip = user.billable_trips(to_time=user.expire_date)
    total = 32.60 + sum(map(lambda x: x.price(), billedTrip))
    return render_template("billing.html",periodeBilling = periodeFact, totalBilled=str(total), trip_list=billedTrip)
コード例 #4
0
ファイル: main.py プロジェクト: PierreGe/villo
def billing_post():
    starting = current_user().expire_date - timedelta(days=(365))
    detail = "Type;Prix;Date de debut;Date de fin;Station de depart;Station de fin\n"
    detail += "Abonnement;32.6;"+starting.strftime("%d-%m-%Y")+";" +str(current_user().expire_date.strftime("%d-%m-%Y"))+ ";None;None\n"
    for trip in current_user().trips :
        if trip.departure_date > starting:
            detail+= "Trajet;" +str(trip.price()) + ";" +str(trip.departure_date) + ";" + str(trip.arrival_date) + ";" + trip.arrival_station.name + ";" + trip.departure_station.name + "\n"
            #detail += "De "+trip.departure_station.name+" ("+str(trip.departure_date)+") à "+trip.arrival_station.name+" ("+str(trip.arrival_date)+ ") : " + str(trip.price()) + "\n"
    response = make_response(detail)
    response.headers["Content-Disposition"] = "attachment; filename=facture-details.csv"
    return response
コード例 #5
0
def registr():
    name = request.form['nm']
    sername = request.form['sername']
    login = request.form['login']
    pass1 = request.form['pass1']
    pass2 = request.form['pass2']
    phone = request.form['phone']
    check = ''
    try:
        check = request.form['check']
    except:
        check = 'no'

    if pass1 != pass2:
        return False
    elif re.search(r"^([7]\d{10})$", phone, re.MULTILINE) == None:
        return False
    elif check == 'no':
        return False
    else:
        data = work_database.get_auth_from_db()
        print()
        work_database.push_data_to_db_auth(login, pass1, phone,
                                           data[-1][0] + 1)
        one_user = user.current_user()
        one_user.set_id(data[-1][0] + 1)
        one_user.set_login(login)
        one_user.set_phone(phone)
        return one_user
コード例 #6
0
ファイル: main.py プロジェクト: PierreGe/villo
def history_post():
    detail = "Date de debut;Date de fin;Station de depart;Station de fin\n"
    for trip in current_user().trips :
        detail+= str(trip.departure_date) + ";" + str(trip.arrival_date) + ";" + trip.arrival_station.name + ";" + trip.departure_station.name + "\n"
    response = make_response(detail)
    response.headers["Content-Disposition"] = "attachment; filename=trajet-details.csv"
    return response
コード例 #7
0
ファイル: main.py プロジェクト: PierreGe/villo
def newbikes(station_id):
    db = get_db()
    try:
        station = db.Station.get(station_id)
    except KeyError:
        flash(u"Station %d inconnue", "danger")
        return redirect("/")

    nBikes = int(request.form['bike_number'])
    model = request.form['bike_model'].strip()

    if nBikes > station.free_slots:
        flash(
            u"Pas assez de place à %s pour créer %d villos" % (station.name, nBikes), 
            "danger")
    elif model == "":
        flash(u"Le modèle de villo ne peut pas être vide", "danger")
    else:
        created = []
        for i in range(nBikes):
            bike = db.Bike.create(model=model)
            db.Trip.create(
                user_id=current_user().id, bike_id=bike.id,
                departure_station_id=station_id, departure_date=datetime.now(),
                arrival_station_id=station_id, arrival_date=datetime.now())
            created.append(str(bike.id))
        flash(pluralize(nBikes, u"Le vélo ", u"Les vélos ") +
              ', '.join(created) +
              pluralize(nBikes, u" a été ajouté", u" ont été ajoutés"), 
              "success")
    return redirect("/station/%d" % station_id)
コード例 #8
0
ファイル: main.py プロジェクト: PierreGe/villo
def rent_bike(station_id, bike_id):
    user = current_user()
    try:
        station = get_db().Station.get(station_id)
    except KeyError:
        flash(u"Station %d inconnue", "warning")
        return redirect("/station")
    
    if user.expired:
        flash(u"Renouvelez votre abonnement pour louer un villo", "danger")
        return redirect("/subscription")

    try:
        bike = get_db().Bike.get(bike_id)
    except KeyError:
        flash(u"Villo %d inconnu", "warning")
        return redirect("/rent/%d" % (station_id))

    if bike.location.id != station_id:
        flash(u"Le vélo %d ne se trouve pas à la station %s" % (bike_id, station.name), "danger")
    elif user.current_trip and not user.is_admin():
        flash(u"Vous avez déjà une location en cours", "danger")
    elif not bike.usable and not user.is_admin():
        flash(u"Ce villo n'est pas utilisable", "danger")
        return redirect("/rent/%d" % (station_id))
    else:
        get_db().Trip.create(
            user_id=user.id, bike_id=bike.id, 
            departure_station_id=station.id, departure_date=datetime.now())
        flash(u"Vous avez pris le villo %d à %s" % (bike.id, station.name), 'success')
    return redirect("/")
コード例 #9
0
def comment():
    form = request.form
    u = current_user()
    c = Comment(form)
    c.name = u.username
    if c.valid():
        c.save()
    return redirect(url_for('.index'))
コード例 #10
0
ファイル: blog.py プロジェクト: xiwenz/blog
def add():
    form = request.form
    u = current_user()
    b = Blog(form)
    b.name = u.username
    if b.valid():
        b.save()
    return redirect(url_for('.blogs'))
コード例 #11
0
def add():
    form = request.form
    u = current_user()
    t = Weibo(form)
    t.name = u.username
    if t.valid():
        t.save()
    return redirect(url_for('.index'))
コード例 #12
0
ファイル: bbs.py プロジェクト: Gatler/blog
def comment():
    form = request.form
    u = current_user()
    c = BlogComment(form)
    c.name = u.username
    if c.valid():
        c.save()
    c.avatar = c.get_avatar()
    return c.json()
コード例 #13
0
ファイル: bbs.py プロジェクト: Gatler/blog
def add():
    form = request.form
    u = current_user()
    b = Blog(form)
    b.name = '3000'
    if b.valid():
        b.save()
    # 蓝图中的 url_for 需要加上蓝图的名字,这里是 todo
    return redirect(url_for('.index'))
コード例 #14
0
ファイル: blog.py プロジェクト: xiwenz/blog
def comment():
    form = request.form
    u = current_user()
    c = BlogComment(form)
    c.name = u.username
    if c.valid():
        c.save()
    c.avatar = c.get_avatar()
    return redirect(url_for('.blogs'))
コード例 #15
0
def add():
    form = request.form
    u = current_user()
    t = Weibo(form)
    t.name = u.username
    if t.valid():
        t.save()
    # 蓝图中的 url_for 需要加上蓝图的名字,这里是 todo
    return redirect(url_for('.index'))
コード例 #16
0
ファイル: main.py プロジェクト: PierreGe/villo
def history():
    minkm = sum([float(x.distance()) for x in current_user().trips])
    def month_displayname(date):
        months = ["Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Spetembre", "Octobre", "Novembre", "Decembre"]
        return "%s %d" % (months[date.month-1], date.year)

    trip_list = current_user().trips
    trips_by_month = []
    if len(trip_list) > 0:
        trips_by_month = [
            (month_displayname(trip_list[0].departure_date), [trip_list[0]])
        ]
        for trip in trip_list[1:]:
            name = month_displayname(trip.departure_date)
            if name == trips_by_month[-1][0]:
                trips_by_month[-1][1].append(trip)
            else:
                trips_by_month.append((name, [trip]))
    return render_template("history.html",minimum_km=minkm, trips_by_month=trips_by_month)
コード例 #17
0
ファイル: bbs.py プロジェクト: Gatler/blog
def index():
    u = current_user()
    if u is None:
        return redirect(url_for('user.login_view'))
    blogs = Blog.query.order_by(Blog.id.desc()).all()
    for i in blogs:
        i.comment = i.comments()
        for j in i.comment:
            j.avatar = j.get_avatar()
        i.comments_num = len(i.comment)
    return render_template('bbs.html', blogs=blogs)
コード例 #18
0
def index():
    u = current_user()
    if u is None:
        return redirect(url_for('user.login_view'))
    weibo_list = Weibo.query.order_by(Weibo.id.desc()).all()
    for i in weibo_list:
        i.comment = i.comments()
        for j in i.comment:
            j.avatar = j.get_avatar()
        i.comments_num = len(i.comment)
        i.avatar = i.get_avatar()
    return render_template('weibo_index.html', weibos=weibo_list)
コード例 #19
0
ファイル: main.py プロジェクト: PierreGe/villo
def index():
    user = current_user()
    if user:
        ctx = {}
        def month_displayname(date):
            months = ["Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Spetembre", "Octobre", "Novembre", "Decembre"]
            return "%s %d" % (months[date.month-1], date.year)

        trip_list = current_user().trips
        if trip_list:
            trips_by_month = []
            if len(trip_list) > 0:
                trips_by_month = [
                    (month_displayname(trip_list[0].departure_date), [trip_list[0]])
                ]
                for trip in trip_list[1:]:
                    name = month_displayname(trip.departure_date)
                    if name == trips_by_month[-1][0]:
                        trips_by_month[-1][1].append(trip)
                    else:
                        trips_by_month.append((name, [trip]))
            ctx["month_name"] = trips_by_month[0][0]
            ctx["month_trip_nbr"] = len(trips_by_month[0][1])
            price = 0
            kilometer = 0
            for t in trips_by_month[0][1]:
                price+= t.price()
                kilometer = t.distance()
            ctx["month_price"] = price
            ctx["month_kilometer"] = kilometer
        else:
            ctx["month_name"] = "Total"
            ctx["month_trip_nbr"] = 0
            ctx["month_price"] = 0
            ctx["month_kilometer"] = 0
        if user.is_admin():
            ctx['broken_bikes'] = get_db().Bike.allBroken()
        return render_template("dashboard.html", **ctx)
    return render_template("home.html")
コード例 #20
0
ファイル: sign_in.py プロジェクト: PandaRec/metro2_0
def enter():
    data_from_auth = work_database.get_auth_from_db()
    login = request.form['login']
    password = request.form['password']

    for i in data_from_auth:
        print()
        if i[1] == login and i[2] == password:
            one_user = user.current_user()
            one_user.set_id(i[0])
            one_user.set_login(i[1])
            one_user.set_phone(i[3])
            return one_user
コード例 #21
0
def delete(weibo_id):
    u = current_user()
    w = Weibo.query.get(weibo_id)
    if w.name == u.username:
        w.delete()
        r = {
            'success': True,
            'data': w.json(),
        }
    else:
        r = {
            'success': False,
            'data': w.json(),
        }
    return json.dumps(r, ensure_ascii=False)
コード例 #22
0
def add():
    form = request.form
    u = current_user()
    t = Weibo(form)
    t.name = u.username
    r = {'data': []}
    if t.valid():
        t.save()
        r['success'] = True
        r['data'] = t.json()
    else:
        r['success'] = False
        message = t.error_message()
        r['message'] = message
    return json.dumps(r, ensure_ascii=False)
コード例 #23
0
def comment_add():
    form = request.form
    u = current_user()
    c = Comment(form)
    c.name = u.username
    r = {'data': []}
    if c.valid():
        c.save()
        r['success'] = True
        r['data'] = c.json()
    else:
        r['success'] = False
        message = c.error_message()
        r['message'] = message
    return json.dumps(r, ensure_ascii=False)
コード例 #24
0
def updata(weibo_id):
    form = request.form
    u = current_user()
    w = Weibo.query.get(weibo_id)
    log('weibo updata form', form, w)
    if w.name == u.username:
        w.weibo = form.get('weibo')
        r = {'data': []}
        if w.valid():
            w.save()
            r['success'] = True
            r['data'] = w.json()
        else:
            r['success'] = False
            message = w.error_message()
            r['message'] = message
        return json.dumps(r, ensure_ascii=False)
コード例 #25
0
def update(weibo_id):
    form = request.form
    w = Weibo.query.get(weibo_id)
    u = current_user()
    t = Weibo(form)
    print('debug', w.weibo, '1', t.weibo, '2', t.name, '3', u.username, '4', w.name, '5')
    r = {
        'data': []
    }
    if w.name == u.username:
        if t.valid():
            w.weibo = t.weibo
            w.save()
            r['success'] = True
            r['data'] = t.json()
        else:
            r['success'] = False
            message = t.error_message()
            r['message'] = message
    else:
        r['success'] = False
        r['message'] = '暗搓搓的改别人微博你这价值观有问题啊'
    return json.dumps(r, ensure_ascii=False)
コード例 #26
0
ファイル: main.py プロジェクト: PierreGe/villo
def user_processor():
    return {'user': current_user()}
コード例 #27
0
ファイル: main.py プロジェクト: PierreGe/villo
def session_status():
    if current_user():
        return 'Logged in as %s' % escape(current_user().id)
    return 'You are not logged in'
コード例 #28
0
ファイル: main.py プロジェクト: PierreGe/villo
def sqltest():
    connect_user(get_db().User.get(0))
    return current_user().newUniqueRFID()
コード例 #29
0
ファイル: main.py プロジェクト: PierreGe/villo
 def wrapper(*args, **kwargs):
     if not current_user():
         flash(u"Vous devez être connecté pour voir cette page", "warning")
         return redirect(url_for('login') + '?next=' + request.path)
     return func(*args, **kwargs)
コード例 #30
0
ファイル: main.py プロジェクト: PierreGe/villo
 def wrapper(*args, **kwargs):
     if not current_user() or not current_user().is_admin():
         flash(u"Cette page est réservée aux administrateurs seulement", "danger")
         return redirect("/")
     return func(*args, **kwargs)