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("/")
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)
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)
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
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
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
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)
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("/")
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'))
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'))
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'))
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()
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'))
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'))
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'))
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)
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)
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)
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")
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
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)
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)
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)
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)
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)
def user_processor(): return {'user': current_user()}
def session_status(): if current_user(): return 'Logged in as %s' % escape(current_user().id) return 'You are not logged in'
def sqltest(): connect_user(get_db().User.get(0)) return current_user().newUniqueRFID()
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)
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)