def setParking(): parking = request.form['parking'] command = request.form['command'] parking = parking.split('/')[1] piano = parking[0] numero = int(parking[1:]) park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1)[0] park.stato = command park.put() if command == "Occupato": # la prenotazione effettiva parte dal momento dell'occupazione prenotazione = Booking.query( Booking.parking == parking).order(-Booking.start).fetch(1) if len(prenotazione) > 0: fmt = '%Y-%m-%d %H:%M:%S' dat_now = datetime.now() datetime_str = dat_now.strftime(fmt) prenotazione[0].start = datetime.strptime(datetime_str, fmt) prenotazione[0].put() logging.info("Hai ricevuto il comando: " + command + ", dal parcheggio: " + parking) return Response(status=200)
def parking(): command = request.form['command'] parking = request.form['parcheggio'] piano = parking[0] numero = int(parking[1:]) try: park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1) if command == 'libera': park[0].stato = 'Libero' elif command == 'occupa': park[0].stato = 'Occupato' stato = park[0].stato park[0].put() return render_template('admin/parking.html', parking=parking, stato=stato, livello=piano) except: flash("Errore modifica parcheggio") return redirect(url_for('admin.index'))
def parking(): if request.method == 'GET': piano = request.args.get('level') parks = Parking().query(Parking.piano == piano).fetch() # classi dipendenti dallo stato del parcheggio, utili per la modifica dello stile dei bottoni try: list_for_view = [(str(park.number), "btn btn-danger" if park.stato == 'Occupato' else "btn btn-success" if park.stato == 'Libero' else "btn btn-warning" if park.stato == 'Prenotato' else "btn btn-dark" if park.stato == 'Fuori Servizio' else "btn btn-primary") for park in parks] return render_template('user/prenota.html', level=piano, parking=list_for_view) except: flash('Errore nel caricamento dei parcheggi') redirect(url_for('main.index')) elif request.method == 'POST': # gestione pagina relativa al singolo parcheggio parking = request.form['parking'] piano = parking[0] numero = int(parking[1:]) park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1) # se esiste il parcheggio if len(park) > 0: stato = park[0].stato user = User().query(User.email == session['user']['email']).fetch(1)[0] # targhe form = Prenota() targhe = user.targa.split(',') my_choices = [] for i, tar in enumerate(targhe): my_choices.append((str(i + 1), tar)) form.targa.choices = my_choices return render_template('user/parking.html', parking=parking, stato=stato, form=form, livello=piano) else: flash("Errore caricamento parcheggio") return redirect(url_for('main.index'))
def gestisci(): if request.method == 'GET': piano = request.args.get('level') parks = Parking().query(Parking.piano == piano).fetch() # classi per i diversi bottoni try: list_for_view = [ (str(park.number), "btn btn-danger" if park.stato == 'Occupato' else "btn btn-success" if park.stato == 'Libero' else "btn btn-warning" if park.stato == 'Prenotato' else "btn btn-dark" if park.stato == 'Fuori Servizio' else "btn btn-primary") for park in parks ] return render_template('admin/gestisci.html', level=piano, parking=list_for_view) except: flash('Errore nel caricamento dei parcheggi') redirect(url_for('admin.index')) elif request.method == 'POST': # gestione pagina relativa al singolo parcheggio parking = request.form['parking'] piano = parking[0] numero = int(parking[1:]) park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1) # se esiste il parcheggio if len(park) > 0: stato = park[0].stato return render_template('admin/parking.html', parking=parking, stato=stato, livello=piano) else: flash("Errore caricamento parcheggio") return redirect(url_for('admin.index'))
def add_data(): if request.method == 'GET': #utente usr = User() usr.nome = "Luca" usr.cognome = "Puggioninu" usr.uuid = str(uuid.uuid4()) usr.password = hashlib.sha1("ciaone").hexdigest() usr.email = "*****@*****.**" usr.targa = "GF6543" usr.tariffa = "Tariffa 1" usr.is_valid = True usr.put() #admin usr = User() usr.nome = "Claudio" usr.cognome = "Marche" usr.uuid = str(uuid.uuid4()) usr.password = hashlib.sha1("ciaone").hexdigest() usr.email = "*****@*****.**" usr.tariffa = "Tariffa 1" usr.targa = "GF6543" usr.is_valid = True usr.has_superuser = True usr.put() #tariffa tar = Tariffa() tar.tariffa = 'Tariffa 1' tar.description = "La piu' bella gazz" tar.prezzo = 5.00 tar.order = 1 tar.visibilita = True tar.put() tar = Tariffa() tar.tariffa = 'Tariffa 2' tar.description = "La meno bella gazz" tar.order = 2 tar.prezzo = 5.00 tar.visibilita = False tar.put() #parcheggi state = ['Libero', 'Prenotato', 'Occupato', 'Fuori Servizio'] for piano in ['A', 'B', 'C', 'D']: for i in range(1, 41): parking = Parking() parking.piano = piano parking.number = i parking.stato = state[randint(0, 3)] parking.put() flash("Dati Aggiunti") return redirect(url_for('auth.login'))
def addParking(): piano = request.args.get('level') for i in range(1, 41): parking = Parking() parking.piano = piano parking.number = i parking.put() return "Parcheggi piano " + str(piano) + " inseriti."
def fuori_servizio(): parking = request.form['fuori_servzio'] piano = parking[0] numero = int(parking[1:]) stato = "Fuori Servizio" try: park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1) park[0].stato = stato park[0].put() return render_template('admin/parking.html', parking=parking, stato=stato, livello=piano) except: flash("Errore modifica parcheggio") return redirect(url_for('admin.index'))
def prenota(): if request.method == 'GET': # gestione violazione violazione = request.args.get('violazione') parcheggio = request.args.get('parcheggio') if violazione == "option1": text = "Parcheggio gia' occupato" elif violazione == "option2": text = "Il parcheggio non identifica la mia auto" if violazione == "option3": return redirect(url_for('main.violazione', parcheggio=parcheggio)) else: object = "[VIOLAZIONE COMUNE]" text = "L'utente " + get_username(session) + ", nel parcheggio " + parcheggio + \ ", ha riscontrato una violazione del tipo: " + \ text + "." + "\nRispondi all'email: " + session['user']['email'] if send_email(object, text): flash('Violazione segnalata correttamente') else: flash("Errore nella segnalazione. Ti preghiamo di riprovare piu' tardi") return redirect(url_for('main.index')) # prenotazione elif request.method == 'POST': # check if exist a booking uuid = session['user']['user_id'] prenotazione = Booking.query(Booking.uuid == uuid).order(-Booking.start).fetch(1) if len(prenotazione) > 0: if prenotazione[0].start is None: return render_template('user/prenotazione_in_corso.html', username=get_username(session), parking=prenotazione[0].parking) else: return redirect(url_for('main.paga')) parking = request.form['parcheggio'] piano = parking[0] numero = int(parking[1:]) park = Parking().query(Parking.piano == piano, Parking.number == numero).fetch(1) # se esiste il parcheggio if len(park) > 0: park[0].stato = "Prenotato" park[0].put() idx_targa = int(request.form['targa']) user = User().query(User.email == session['user']['email']).fetch(1)[0] targhe = user.targa.split(',') targa = targhe[idx_targa - 1] # send signal to arduino (p = prenotazione) if not publishMQTT(parking, "p"): flash("Errore nella prenotazione. Riprova") return redirect(url_for('main.index')) # creo prenotazione book = Booking() book.uuid = session['user']['user_id'] book.name = session['user']['nome'] book.surname = session['user']['cognome'] book.targa = targa book.parking = parking book.put() flash("Prenotazione effettuata correttamente") return redirect(url_for('main.index')) else: flash("Errore nella prenotazione. Riprova.") return redirect(url_for('main.index'))