Exemple #1
0
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'))
Exemple #3
0
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'))
Exemple #5
0
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'))
Exemple #6
0
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'))
Exemple #8
0
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'))