def nuevo(): formulario = MovimientosForm() if request.method == "GET": #validar si es un get o un post return render_template("alta.html", form=formulario) else: if formulario.validate(): query = "INSERT INTO movimientos (fecha, concepto, categoria, esGasto, cantidad) VALUES (?, ?, ?, ?, ?)" try: modificaTablaSQL(query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data ]) except sqlite3.Error as el_error: print("Error en SQL INSERT:", el_error) flash( "Se ha producido un error en la base de datos. Pruebe en unos minutos" ) return render_template("alta.html", form=formulario) return redirect(url_for("index")) #Redirect a la ruta "/" else: return render_template("alta.html", form=formulario)
def nuevo(): formulario = MovimientosForm() if request.method == 'GET': return render_template('alta.html', form=formulario) else: if formulario.validate(): query = "INSERT INTO movimientos (fecha, concepto, categoria, esGasto, cantidad) VALUES (?, ?, ?, ?, ?)" try: modificaTablaSQL(query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data ]) except sqlite3.Error as el_error: print("Error en SQL INSERT", el_error) flash( "Se ha producido un error en la base de datos. Pruebe en unos minutos" ) #Flash es una clase que va a inyectar el mensaje de error en la plantilla (alta.html, base.html, etc.) que le digamos, para que aparezca como mensaje generico cuando se produzca un error return render_template('alta.html', form=formulario) return redirect(url_for("index")) else: return render_template('alta.html', form=formulario)
def modificar(id): if request.method == 'GET': filas = consultaSQL("SELECT * FROM movimientos WHERE id=?", [id]) if len(filas) == 0: flash("El registro no existe", "error") return render_template('modificar.html', ) registro = filas[0] registro['fecha'] = date.fromisoformat(registro['fecha']) formulario = MovimientosForm(data=registro) return render_template('modificar.html', form=formulario) else: formulario = MovimientosForm() if formulario.validate(): try: modificaTablaSQL( "UPDATE movimientos SET fecha = ?, concepto = ?, categoria = ?, esGasto = ?, cantidad = ? WHERE id = ?", [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data, id ]) flash("Modificación realizada con éxito") return redirect(url_for("index")) except sqlite3.Error as e: print("Error en update:", e) flash( "Se ha producido un error en acceso a base de datos. Contacte con el administrador", "error") return render_template("modificar.html", form=formulario) else: return render_template("modificar.html", form=formulario)
def nuevo(): formulario = MovimientosForm() if request.method == 'GET': return render_template('alta.html', form=formulario) else: # será un POST if formulario.validate(): # insertar el movimiento en la base de datos query = """ INSERT INTO movimientos (fecha, concepto, categoria, esGasto, cantidad) VALUES (?, ?, ?, ?, ?) """ try: modificaTablaSQL(query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data ]) except sqlite3.Error as el_error: print("ERROR EN SQL", el_error) flash( 'Se ha producido un error en la base de datos. Pruebe en unos minutos' ) return render_template('alta.html', form=formulario) return redirect(url_for( 'index')) # redirect a la ruta / a través de la función index else: return render_template('alta.html', form=formulario)
def modificar(id): if request.method == 'GET': registro = dbManager.consultaUnaSQL( "SELECT * FROM movimientos WHERE id=?;", [id]) if not registro: flash('El registro no existe', 'error') return render_template('modificar.html', form=MovimientosForm()) #como la data cogida de la fila[0] (que es un diccionario con ese registro) #nos da la fecha en el formato incorrecto, se hace lo siguiente: registro['fecha'] = date.fromisoformat(registro['fecha']) formulario = MovimientosForm( data=registro ) #esto es para crear el formulario pero ya con los datos puestos del registro que vamos a modicar return render_template('modificar.html', form=formulario) #en el html. pongo form, porque le paso ese formulario que es el formulario con #los valores del registro else: formulario = MovimientosForm( ) #si no dice na coge el formulario que ha entrado, el de request.form #es la info que viene del navegador no del servidor por eso no se tomo el formulario de lo de arriba del metodo get if formulario.validate(): query = "UPDATE movimientos SET fecha=?, concepto=?, categoria=?, esGasto=?, cantidad=? WHERE id=?;" try: dbManager.modificaSQL( query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data, id ] ) #formulario porque es instancia de Movimeintos form que tiene fecha \ #que es una instancia de la clase Field con atributo data flash( 'Modificación realizada con éxito', 'aviso' ) #para que los escriba en eol navegador y no en el terminal (en el servidor) return redirect(url_for('index')) except sqlite3.Error as e: flash( 'Se ha producido un error de base de datos, vuelva a intentarlo', 'error') return render_template('modificar.html', form=formulario) else: return render_template('modificar.html', form=formulario)
def nuevo(): formulario = MovimientosForm() if request.method == 'GET': return render_template('alta.html', form=formulario) else: if formulario.validate( ): #esto es un metodo del formulario flask en el que llama a los validators query = """ INSERT INTO Movimientos (fecha, concepto, categoria, esGasto, cantidad) VALUES (?, ?, ?, ?, ?) """ #se va a inyectar query en squlite y por eso se pone en ese lengauje #comentarios = es una cadena en linea, para ponerlo en varios lineas se usan las tres comillas, #se podria utilizar '' pero no se podria divir en lineas #para informar a sqlite de que es avriable lo que se metge es poner el signo ? #tambien en vez de ? se puede poner :concepto, :categoria, ... y en execute se pone en vez #de una lista, un diccionario tipo 'fecha': formulario.fecha.data, .... #si es true, es que no hay errores (el if de formulario.validate()) #SE BUSCAN LOS COMANDOS DEL SQLITE #hay que controlar los errores de accesos try: dbManager.modificaSQL(query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data ]) except sqlite3.Error as el_error: print('Error en SQL INSERT', el_error) flash( 'Se ha producido un error en la base de datos. Pruebe en unos minutos.' ) #ahora se prepara la plantilla 'base.html' para este flash que es generico (el flash lo que hace es que este mensaje este disponbible para el html) return render_template('alta.html', form=formulario) return redirect(url_for('index')) else: return render_template('alta.html', form=formulario)
def modificar(id): if request.method == 'GET': filas = consultaSQL("SELECT * FROM movimientos WHERE id=?", [id]) if len(filas) == 0: flash("El registro no existe", "error") return render_template('modificar.html') registro = filas[0] registro['fecha'] = date.fromisoformat( registro['fecha']) #con el metodo date formulario = MovimientosForm(data=registro) return render_template('modificar.html', form=formulario) else: formulario = MovimientosForm() if formulario.validate(): try: modificaTablaSQL( "UPDATE movimientos SET fecha =?, concepto =?, categoria=?, esGasto=?, cantidad=? WHERE id=?", [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data, id ]) except sqlite3.Error as el_error: print("Error en SQL UPDATE", el_error) flash( "Se ha producido un error en la base de datos. Pruebe en unos minutos", "error") #inyecta el mensaje en la plantilla return render_template('modificar.html', form=formulario) flash("Modificación realizada con éxito", 'aviso') return redirect(url_for("index")) else: return render_template('modificar.html', form=formulario)
def nuevo(): formulario = MovimientosForm() if request.method == 'GET': return render_template('alta.html', form=formulario) else: if formulario.validate(): conexion = sqlite3.connect("movimientos.db") cur = conexion.cursor() query = "INSERT INTO movimientos (fecha, concepto, categoria, esGasto, cantidad) VALUES (?, ?, ?, ?, ?);" try: cur.execute(query, [ formulario.fecha.data, formulario.concepto.data, formulario.categoria.data, formulario.esGasto.data, formulario.cantidad.data ]) except sqlite3.Error as el_error: print("Error en SQL INSERT", el_error) return render_template('alta.html', form=formulario) conexion.commit() conexion.close() return redirect(url_for("index")) #Redirect a la ruta / else: return render_template('alta.html', form=formulario)