Profilo di emanuel_b

Nome emanuel_b
Indirizzo email n/a
Messaggi4
  • Re: Problema Flask inserimento dati in db con SqlAlchemy
    Forum >> Programmazione Python >> Web e Reti
    Ciao Daniele e grazie per l'aiuto. Ho risolto. Praticamente mancava il Csrf token per cui il forum is_validate() restituiva sempre falso ed il forma non veniva caricato.
  • Problema Flask inserimento dati in db con SqlAlchemy
    Forum >> Programmazione Python >> Web e Reti
    Salve a tutti, sto scrivendo questa web-app per la raccolta ordini di una tintoria utilizzando Flask. Il sito in se si muove unico problema è che dalla pagina Add.html non riesco ad aggiungere alcun ordine al db. Chiedo il vostro aiuto, non riesco a capire dove ho sbagliato!
    ##############GESTIONEORDINI.py###########
    import os
    from flask import Flask, render_template, url_for, redirect, session
    from flask_sqlalchemy import SQLAlchemy
    from flask_migrate import Migrate
    import datetime
    from forms import AddOrdine, DelOrdine
    app = Flask(__name__)
    
    app.config['SECRET_KEY'] = 'mysecretkey'
    
    ############################################
    ####          SQL DB SECTION      ##########
    ############################################
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    db = SQLAlchemy(app)
    Migrate(app, db)
    
    
    #########            MODEL          ######################
    ##########################################################
    ######### TABELLA ORDINE/UTENTE     ######################
    
    class OrdineUtente(db.Model):
        __tablename__ = 'ordineutente'
        id = db.Column(db.Integer, primary_key=True)
        nomeut = db.Column(db.Text)
        gc = db.Column(db.Integer)
        pant = db.Column(db.Integer)
        cam = db.Column(db.Integer)
        note = db.Column(db.UnicodeText)
        date = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    
        def __init__(self, nomeut, gc, pant, cam, note, date):
            self.nomeut = nomeut
            self.cam = cam
            self.gc = gc
            self.pant = pant
            self.note = note
            self.date = date
    
        def __repr__(self):
            return self.id, self.nomeut, self.gc, self.pant, self.cam, self.id
    db.create_all()
    
    #########################################
    ###### View Functions - Have Forms ######
    #########################################
    @app.route('/')
    def index():
        return render_template("home.html")
    
    @app.route('/add', methods=['GET', 'POST'])
    def add_ordine():
        form = AddOrdine()
        if form.validate_on_submit():
            newordine = OrdineUtente(
                form.nomeutente.data,
                form.giacche.data,
                form.pantaloni.data,
                form.camicie.data,
                form.note.data
                )
    
            db.session.add(newordine)
            db.session.commit()
            return redirect(url_for('lista'))
        return render_template('add.html', form=form)
    
    @app.route('/del', methods=['GET', 'POST'])
    def delete_ordine():
            form = DelOrdine()
            if form.validate_on_submit():
                id = form.id.data
                pup= OrdineUtente.query.get(id)
                db.session.delete(pup)
                db.session.commit()
                return redirect(url_for('lista'))
            return render_template('delete.html', form=form)
    
    @app.route('/lista')
    def lista_ordine():
        items = OrdineUtente.query.all()
        return render_template('lista.html', items=items)
    
    if __name__=='__main__':
        app.run(debug=True)
    
    
    ##########FORMS.py##########
    from flask_wtf import FlaskForm
    from wtforms import SelectField, SubmitField, TextAreaField, IntegerField
    
    class AddOrdine(FlaskForm):
        nomeut = SelectField(u'User Name:',
                             choices = [('pippo','Pippo'),
                                       ('pluto','Pluto'),
                                       ('paperino','Paperino'),
                                       ('topolina','Topolina'),
                                       ('topolino','Topolino')
                                       ])
        giacche = SelectField(u'Shirts:',
                         choices = [('1','1'),
                                   ('2','2'),
                                   ('3','3'),
                                   ('4','4')
                                   ])
    
        pantaloni = SelectField(u'Pants:',
                         choices = [('1','1'),
                                   ('2','2'),
                                   ('3','3'),
                                   ('4','4')
                                   ])
        camicie = SelectField(u'Jackets:',
                         choices = [('1','1'),
                                   ('2','2'),
                                   ('3','3'),
                                   ('4','4')
                                   ])
    
        note = TextAreaField('Note: ')
        submit = SubmitField()
    
    class DelOrdine(FlaskForm):
    
        id = IntegerField('Order to delete ')
    
        submit = SubmitField("delete")ù
    
    ###########ADD.html###########
    {%extends "base.html"%}
    {%block content%}
    <form method="post">
     {{form.nomeut.label}}{{form.nomeut}}
     {{form.giacche.label}}{{form.giacche}}
     {{form.camicie.label}}{{form.camicie}}
     {{form.pantaloni.label}}{{form.pantaloni}}
     {{form.note.label}}{{form.note}}
    
    {{form.submit}}
    {%endblock%}
    </form>
    ##############################
    





  • Re: Script per schedulazione chiusura automatica
    Forum >> Programmazione Python >> Scripting
    Allora ho seguito il consiglio di Daniele ed analizzato tutto il codice isolando e i problemi ad un ad uno. Beh, errore mio, lo script che ho postato funziona l’errore si trovava nella parte non ancora implementata del bottone_count: impostandolo a zero il programma va alla grande. Sicuramente sarà da migliorare... questione di tempo ;).
  • Script per schedulazione chiusura automatica
    Forum >> Programmazione Python >> Scripting
    Ciao a tutti! Sono niubbissimo di Python e questa è la mia prima applicazione. Serve per chiudere automaticamente una serranda ad un determinato orario, la chiusura può pero essere posticipata premendo un pulsante (parte da implementare con i GPIO di raspberry). Sicuramente avrei bisogno di qualche consiglio sulla scrittura del codice, ma mi chiedo il perchè non funzioni o meglio perchè se l'avvio da pycharm e imposto l'orario di chiusura l'applicazione non chiude?
    import datetimefrom datetime 
    import timedelta
    import time
    import schedule
    
    def chiudi():
        serranda_down_PL = requests.get('http://192.168.1.2:8080/status.xml?pl3=1')
        time.sleep(180)
        luci_PL = requests.get('http://192.168.1.2:8080/status.xml?pl2=1')
    
    def apri():
        serranda_up = requests.get('http://192.168.1.2:8080/status.xml?pl4=1')
    
    def portiere():
        bottone_count = 1  # contatore di quante volte è stato premuto il pulsante da integrare con moduloGPIO
        now = datetime.datetime.now()  # ora attuale
        t = now.time()
        x = t.strftime("%X")  # estrapolazione dell'ora in formato xx:xx
        ora_chiusura = datetime.time(19,40,00)
        ritardo_chiusura = datetime.timedelta(minutes=20)
        t1 = ora_chiusura.strftime ( "%H"':'"%M" )
        while bottone_count == 0:
            return t1
        while bottone_count >= 0 and bottone_count <= 3:  # ogni volta che il bottone viene premuto incrementa il ritardo di
            # chiusura di  minuti = d4
            t3 = datetime.datetime.combine(datetime.date(1,1,1), t)+ ritardo_chiusura
            print(type(t3))
            t4 = t3.strftime("%H"':'"%M")
            return t4
            while bottone_count > 3:
                return t4
    
    def chiusura_automatica():
        def job():
            chiudi()
        def job2():
            apri()
    
    
        schedule.every().day.at(portiere()).do(job)
        schedule.every().day.at("7:50").do(job2)
    
        while True:
            schedule.run_pending()



    --- Ultima modifica di emanuel_b in data 2018-12-03 20:11:32 ---