From df698ed1a9905cabbd5a6282ef0f91d6f64962f2 Mon Sep 17 00:00:00 2001 From: LMOlivera Date: Thu, 7 Mar 2019 21:58:20 -0300 Subject: [PATCH 1/4] =?UTF-8?q?Refactorizaci=C3=B3n=20del=20c=C3=B3digo=20?= =?UTF-8?q?en=20Flask=20parte=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se crearon clases para los Insert, Delete y Select en la base de datos, por lo que se redujo bastante la lógica de negocio que estaba en route.py Aún falta la mitad del trabajo. --- app/logic/clsSqlDelete.py | 29 +++++++++++ app/logic/clsSqlInsert.py | 35 +++++++++++++ app/logic/clsSqlSelect.py | 34 ++++++++++++ app/routes.py | 105 ++++++++++++++------------------------ 4 files changed, 137 insertions(+), 66 deletions(-) create mode 100644 app/logic/clsSqlDelete.py create mode 100644 app/logic/clsSqlInsert.py create mode 100644 app/logic/clsSqlSelect.py diff --git a/app/logic/clsSqlDelete.py b/app/logic/clsSqlDelete.py new file mode 100644 index 0000000..65226a6 --- /dev/null +++ b/app/logic/clsSqlDelete.py @@ -0,0 +1,29 @@ +import pymysql.cursors + +class SqlDelete: + def __init__(self): + self.conexion = pymysql.connect(host='localhost', + user='root', + password='', + db='uruguia_bd_test', + charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor) + + def borrarUsuario(self, id_usuario, tipo): + with self.conexion.cursor() as cursor: + query = """ + DELETE FROM usuario WHERE id_usuario=%s + """ + cursor.execute(query,(id_usuario)) + if tipo=='turista': + query = """ + DELETE FROM turista WHERE id=%s + """ + cursor.execute(query,(id_usuario)) + else: + query = """ + DELETE FROM empresa WHERE id=%s + """ + cursor.execute(query,(id_usuario)) + self.conexion.commit() + pass \ No newline at end of file diff --git a/app/logic/clsSqlInsert.py b/app/logic/clsSqlInsert.py new file mode 100644 index 0000000..9dca909 --- /dev/null +++ b/app/logic/clsSqlInsert.py @@ -0,0 +1,35 @@ +import pymysql.cursors + +class SqlInsert: + def __init__(self): + self.conexion = pymysql.connect(host='localhost', + user='root', + password='', + db='uruguia_bd_test', + charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor) + self.userdata = "" + + def insertarLugar(self, nombre, descripcion, ubicacion, tipo, horario, fecha): + with self.conexion.cursor() as cursor: + query = """ + INSERT INTO lugar + (nombre, descripcion, ubicacion, tipo, horario, fecha) + VALUES + (%s,%s,%s,%s,%s, %s) + """ + cursor.execute(query,(nombre, descripcion, ubicacion, tipo, horario, fecha)) + self.conexion.commit() + pass + + def insertar_pertenece_a(self, ide, idc): + with self.conexion.cursor() as cursor: + query = """ + INSERT INTO pertenece_a + (ide, idc) + VALUES + (%s,%s) + """ + cursor.execute(query,(ide, idc)) + self.conexion.commit() + pass \ No newline at end of file diff --git a/app/logic/clsSqlSelect.py b/app/logic/clsSqlSelect.py new file mode 100644 index 0000000..ee45739 --- /dev/null +++ b/app/logic/clsSqlSelect.py @@ -0,0 +1,34 @@ +import pymysql.cursors + +class SqlSelect: + def __init__(self): + self.conexion = pymysql.connect(host='localhost', + user='root', + password='', + db='uruguia_bd_test', + charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor) + self.userdata = "" + + def login(self, email, password): + with self.conexion.cursor() as cursor: + query = "SELECT id_usuario, email, nombre, tipo FROM usuario WHERE email=%s AND contrasena=%s" + cursor.execute(query,(email,password)) + self.userdata = cursor.fetchone() + results = cursor.rowcount + if results==0: + return False + else: + return True + pass + + def conseguir_ide(self, nombre): + with self.conexion.cursor() as cursor: + query = """ + SELECT ide FROM lugar + WHERE nombre=%s + """ + cursor.execute(query,(nombre)) + ide = cursor.fetchone() + return ide['ide'] + pass \ No newline at end of file diff --git a/app/routes.py b/app/routes.py index 4d515e4..f1e86e8 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,9 +1,10 @@ from flask import render_template, flash, redirect, session, request -from app import app +from app import app, logic +from app.logic import clsSqlSelect, clsSqlInsert, clsSqlDelete from app.forms import LoginForm, RegisterForm, ModifyForm, AgregarLugar import pymysql.cursors -# Connect to the database +# En cuanto se termine el refactor hay que borrar esto connection = pymysql.connect(host='localhost', user='root', password='', @@ -11,36 +12,33 @@ charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) - @app.route('/', methods=['GET', 'POST']) @app.route('/index', methods=['GET', 'POST']) def bienvenido(): if session.get('logueado'): return redirect('/principal') else: - form = LoginForm() # Formulario de forms.py, se importa - if form.validate_on_submit(): #Al submitear data se corre esto - with connection.cursor() as cursor: - email=form.email.data - password=form.password.data - query = "SELECT id_usuario, email, nombre, tipo FROM usuario WHERE email=%s AND contrasena=%s" - cursor.execute(query,(email,password)) - userdata = cursor.fetchone() - results = cursor.rowcount - if results==0: - flash('Usuario y/o contraseña inválidos') - session['invalid_user']="true" - return redirect('/') - else: - session.pop('invalid_user', None) - session['logueado']=True - session['id_usuario'] = userdata['id_usuario'] - session['email'] = userdata['email'] - session['nombre'] = userdata['nombre'] - session['tipo'] = userdata['tipo'] - return redirect('/principal') + form = LoginForm() + if form.validate_on_submit(): + SqlSelect = clsSqlSelect.SqlSelect() + email=form.email.data + password=form.password.data + if SqlSelect.login(email, password): + session.pop('invalid_user', None) + session['logueado']=True + session['id_usuario'] = SqlSelect.userdata['id_usuario'] + session['email'] = SqlSelect.userdata['email'] + session['nombre'] = SqlSelect.userdata['nombre'] + session['tipo'] = SqlSelect.userdata['tipo'] + del SqlSelect + return redirect('/principal') + else: + flash('Usuario y/o contraseña inválidos') + session['invalid_user']="true" + return redirect('/') return render_template('bienvenido.html', title='¡Bienvenido a UruGuia!', form=form) +# PENDIENTE @app.route('/index/registro', methods=['GET', 'POST']) def registro(): if session.get('logueado'): @@ -96,6 +94,7 @@ def registro(): print('Algo malo acaba de ocurrir: ' + NameError) return render_template('registro.html', title="Registrar un nuevo usuario", form=form, tipo=nuevo['tipo']) +# PENDIENTE @app.route('/principal') def index(): if session.get('logueado'): @@ -105,6 +104,7 @@ def index(): return redirect('/') return render_template('principal.html', title="Página principal") +# PENDIENTE @app.route('/principal/usuario') def usuario(): if not session.get('logueado'): @@ -112,6 +112,7 @@ def usuario(): return redirect('/') return render_template('usuario.html', title='Datos de la cuenta') +# PENDIENTE @app.route('/principal/usuario/modificar', methods=['GET','POST']) def modificarUsuario(): if not session.get('logueado'): @@ -185,33 +186,18 @@ def agregar_lugar(): tipo = form.tipo.data horario = form.horario.data fecha = form.fecha.data - with connection.cursor() as cursor: - #INSERTA EN lugar - query = """ - INSERT INTO lugar - (nombre, descripcion, ubicacion, tipo, horario, fecha) - VALUES - (%s,%s,%s,%s,%s, %s) - """ - cursor.execute(query,(nombre, descripcion, ubicacion, tipo, horario, fecha)) - - #CONSIGUE ide DE lugar - query = """ - SELECT ide FROM lugar - WHERE nombre=%s - """ - cursor.execute(query,(nombre)) - lugar = cursor.fetchone() - #INSERTA EN pertenece_a BASANDOSE EN EL ide - query = """ - INSERT INTO pertenece_a - (ide, idc) - VALUES - (%s,%s) - """ - cursor.execute(query,(lugar['ide'],categoria)) - connection.commit() + #INSERTA EN lugar + SqlInsert = clsSqlInsert.SqlInsert() + SqlInsert.insertarLugar(nombre, descripcion, ubicacion, tipo, horario, fecha) + + #CONSIGUE ide DE lugar + SqlSelect = clsSqlSelect.SqlSelect() + ide = SqlSelect.conseguir_ide(nombre) + + #INSERTA EN pertenece_a BASANDOSE EN EL ide + SqlInsert.insertar_pertenece_a(ide,categoria) + return redirect("/principal") except: return redirect('/') @@ -223,22 +209,9 @@ def logout(): idu = request.args.to_dict() iduINT = int(idu['id_usuario']) ses = int(session['id_usuario']) - with connection.cursor() as cursor: - query = """ - DELETE FROM usuario WHERE id_usuario=%s - """ - cursor.execute(query,(ses)) - if session['tipo']=='turista': - query = """ - DELETE FROM turista WHERE id=%s - """ - cursor.execute(query,(ses)) - else: - query = """ - DELETE FROM empresa WHERE id=%s - """ - cursor.execute(query,(ses)) - connection.commit() + if iduINT==ses: + SqlDelete = clsSqlDelete.SqlDelete() + SqlDelete.borrarUsuario(ses,session['tipo']) except: print("Logout") session.clear() From c55e1e27bba3a55f2e9e1cf73a841b6157d87744 Mon Sep 17 00:00:00 2001 From: LMOlivera Date: Sat, 9 Mar 2019 12:00:30 -0300 Subject: [PATCH 2/4] =?UTF-8?q?Refactorizaci=C3=B3n=20del=20c=C3=B3digo=20?= =?UTF-8?q?en=20Flask=20parte=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finalizada la refactorización. Creadas clases que se encargan de una acción en la base de datos. --- app/logic/clsSqlInsert.py | 32 ++++++++- app/logic/clsSqlSelect.py | 54 ++++++++++++++- app/logic/clsSqlUpdate.py | 37 ++++++++++ app/routes.py | 126 ++++++++--------------------------- app/templates/principal.html | 11 ++- 5 files changed, 160 insertions(+), 100 deletions(-) create mode 100644 app/logic/clsSqlUpdate.py diff --git a/app/logic/clsSqlInsert.py b/app/logic/clsSqlInsert.py index 9dca909..f5a1876 100644 --- a/app/logic/clsSqlInsert.py +++ b/app/logic/clsSqlInsert.py @@ -32,4 +32,34 @@ def insertar_pertenece_a(self, ide, idc): """ cursor.execute(query,(ide, idc)) self.conexion.commit() - pass \ No newline at end of file + pass + + def crearUsuario(self, email, nombre, password, tipo, id, edad, pais, nombreEmpresa): + with self.conexion.cursor() as cursor: + query = """ + INSERT INTO usuario + (email,nombre,contrasena,tipo) + VALUES + (%s,%s,%s,%s) + """ + cursor.execute(query,(email,nombre,password,tipo)) + + if tipo=='turista': + query = """ + INSERT INTO turista + (id,edad,pais_origen) + VALUES + (%s,%s,%s) + """ + cursor.execute(query,(id,edad,pais)) + else: + query = """ + INSERT INTO empresa + (id,nombre) + VALUES + (%s,%s) + """ + cursor.execute(query,(id,nombreEmpresa)) + self.conexion.commit() + pass + diff --git a/app/logic/clsSqlSelect.py b/app/logic/clsSqlSelect.py index ee45739..2369195 100644 --- a/app/logic/clsSqlSelect.py +++ b/app/logic/clsSqlSelect.py @@ -22,6 +22,26 @@ def login(self, email, password): return True pass + def listarLugares(self, id): + with self.conexion.cursor() as cursor: + query = """ + SELECT l.nombre, + l.descripcion, + l.ubicacion, + l.tipo, + l.horario, + l.fecha + FROM tiene t + INNER JOIN lugar l + ON t.ide=l.ide + WHERE id=%s + """ + cursor.execute(query,(id)) + listaLugares = cursor.fetchall() + return listaLugares + self.conexion.commit() + pass + def conseguir_ide(self, nombre): with self.conexion.cursor() as cursor: query = """ @@ -31,4 +51,36 @@ def conseguir_ide(self, nombre): cursor.execute(query,(nombre)) ide = cursor.fetchone() return ide['ide'] - pass \ No newline at end of file + pass + + def listarDatosUsuario(self, id, tipo): + with self.conexion.cursor() as cursor: + query="SELECT nombre, contrasena FROM usuario WHERE id_usuario=" + str(id) + cursor.execute(query) + usuario=cursor.fetchone() + empresa={} + turista={} + if tipo=='turista': + query="SELECT edad, pais_origen FROM turista WHERE id=" + str(id) + cursor.execute(query) + turista=cursor.fetchone() + empresa={"nombre":"Ninguno"} + else: + query="SELECT nombre FROM empresa WHERE id=" + str(id) + cursor.execute(query) + empresa=cursor.fetchone() + turista={"edad":"0", "pais_origen":"Ninguno"} + userdata={"contrasena": usuario['contrasena'],"edad": turista['edad'],"pais_origen": turista['pais_origen'],"nombre": empresa['nombre']} + return userdata + pass + + def conseguir_id(self, email): + with self.conexion.cursor() as cursor: + query = """ + SELECT id_usuario FROM usuario + WHERE email=%s + """ + idU = cursor.execute(query,(email)) + return idU + self.conexion.commit() + pass diff --git a/app/logic/clsSqlUpdate.py b/app/logic/clsSqlUpdate.py new file mode 100644 index 0000000..fd1b109 --- /dev/null +++ b/app/logic/clsSqlUpdate.py @@ -0,0 +1,37 @@ +import pymysql.cursors + +class SqlUpdate: + def __init__(self): + self.conexion = pymysql.connect(host='localhost', + user='root', + password='', + db='uruguia_bd_test', + charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor) + + + def actualizarUsuario(self, nombre, password, id, tipo, edad, pais, nombreEmpresa): + with self.conexion.cursor() as cursor: + query=""" + UPDATE usuario + SET nombre=%s, + contrasena=%s + WHERE id_usuario=""" + str(id) + cursor.execute(query,(nombre,password)) + if tipo=='turista': + query=""" + UPDATE turista + SET edad=%s, + pais_origen=%s + WHERE id=""" + str(id) + cursor.execute(query,(edad,pais)) + pass + else: + query=""" + UPDATE empresa + SET nombre=%s + WHERE id=""" + str(id) + cursor.execute(query,(nombreEmpresa)) + pass + self.conexion.commit() + pass \ No newline at end of file diff --git a/app/routes.py b/app/routes.py index f1e86e8..be22f79 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,16 +1,7 @@ from flask import render_template, flash, redirect, session, request from app import app, logic -from app.logic import clsSqlSelect, clsSqlInsert, clsSqlDelete +from app.logic import clsSqlInsert, clsSqlDelete, clsSqlUpdate, clsSqlSelect from app.forms import LoginForm, RegisterForm, ModifyForm, AgregarLugar -import pymysql.cursors - -# En cuanto se termine el refactor hay que borrar esto -connection = pymysql.connect(host='localhost', - user='root', - password='', - db='uruguia_bd_test', - charset='utf8mb4', - cursorclass=pymysql.cursors.DictCursor) @app.route('/', methods=['GET', 'POST']) @app.route('/index', methods=['GET', 'POST']) @@ -38,7 +29,6 @@ def bienvenido(): return redirect('/') return render_template('bienvenido.html', title='¡Bienvenido a UruGuia!', form=form) -# PENDIENTE @app.route('/index/registro', methods=['GET', 'POST']) def registro(): if session.get('logueado'): @@ -48,63 +38,39 @@ def registro(): form = RegisterForm() if form.validate_on_submit(): try: - with connection.cursor() as cursor: - email = form.email.data - nombre = form.nombre.data - password = form.password.data - tipo = nuevo['tipo'] - query = """ - INSERT INTO usuario - (email,nombre,contrasena,tipo) - VALUES - (%s,%s,%s,%s) - """ - cursor.execute(query,(email,nombre,password,tipo)) - query = """ - SELECT id_usuario FROM usuario - WHERE email=%s - """ - cursor.execute(query,(email)) - userdata = cursor.fetchone() - id_usuario=userdata['id_usuario'] - - if nuevo['tipo']=='turista': - edad = form.edad.data - pais = form.pais.data - query = """ - INSERT INTO turista - (id,edad,pais_origen) - VALUES - (%s,%s,%s) - """ - cursor.execute(query,(id_usuario,edad,pais)) - else: - nombreEmpresa = form.nombreEmpresa.data - query = """ - INSERT INTO empresa - (id,nombre) - VALUES - (%s,%s) - """ - cursor.execute(query,(id_usuario,nombreEmpresa)) - connection.commit() + SqlSelect = clsSqlSelect.SqlSelect() + SqlInsert = clsSqlInsert.SqlInsert() + SqlInsert.crearUsuario(form.email.data, + form.nombre.data, + form.password.data, + nuevo['tipo'], + SqlSelect.conseguir_id(email), + form.edad.data, + form.pais.data, + form.nombreEmpresa.data) session.clear() return redirect('/index') - except NameError: - print('Algo malo acaba de ocurrir: ' + NameError) + except: + return redirect('/index') return render_template('registro.html', title="Registrar un nuevo usuario", form=form, tipo=nuevo['tipo']) -# PENDIENTE @app.route('/principal') def index(): if session.get('logueado'): - print('ok') + if session['tipo']=='turista': + listalugares={} + pass + else: + try: + SqlSelect = clsSqlSelect.SqlSelect() + listalugares = SqlSelect.listarLugares(session['id_usuario']) + except: + listalugares={} else: session.clear() return redirect('/') - return render_template('principal.html', title="Página principal") + return render_template('principal.html', title="Página principal", lugares=listalugares) -# PENDIENTE @app.route('/principal/usuario') def usuario(): if not session.get('logueado'): @@ -112,7 +78,6 @@ def usuario(): return redirect('/') return render_template('usuario.html', title='Datos de la cuenta') -# PENDIENTE @app.route('/principal/usuario/modificar', methods=['GET','POST']) def modificarUsuario(): if not session.get('logueado'): @@ -127,48 +92,15 @@ def modificarUsuario(): edad = form.edad.data pais = form.pais.data nombreEmpresa = form.nombreEmpresa.data - with connection.cursor() as cursor: - query=""" - UPDATE usuario - SET nombre=%s, - contrasena=%s - WHERE id_usuario=""" + str(session['id_usuario']) - cursor.execute(query,(nombre,password)) - if session['tipo']=='turista': - query=""" - UPDATE turista - SET edad=%s, - pais_origen=%s - WHERE id=""" + str(session['id_usuario']) - cursor.execute(query,(edad,pais)) - else: - query=""" - UPDATE empresa - SET nombre=%s - WHERE id=""" + str(session['id_usuario']) - cursor.execute(query,(nombreEmpresa)) - connection.commit() + SqlUpdate = clsSqlUpdate.SqlUpdate() + SqlUpdate.actualizarUsuario(nombre, password, session['id_usuario'], session['tipo'], edad, pais, nombreEmpresa) session['nombre'] = nombre return redirect("/principal/usuario") - with connection.cursor() as cursor: - query="SELECT nombre, contrasena FROM usuario WHERE id_usuario=" + str(session['id_usuario']) - cursor.execute(query) - usuario=cursor.fetchone() - if session['tipo']=='turista': - query="SELECT edad, pais_origen FROM turista WHERE id=" + str(session['id_usuario']) - cursor.execute(query) - turista=cursor.fetchone() - empresa={"nombre":"Ninguno"} - else: - query="SELECT nombre FROM empresa WHERE id=" + str(session['id_usuario']) - cursor.execute(query) - empresa=cursor.fetchone() - turista={"edad":"0", "pais_origen":"Ninguno"} - connection.commit() + SqlSelect = clsSqlSelect.SqlSelect() + userdata = SqlSelect.listarDatosUsuario(session['id_usuario'], session['tipo']) except: - return redirect('/') - print(session["tipo"]) - return render_template('modificar_usuario.html', title="Modificar datos de la cuenta", form=form, contrasena=usuario['contrasena'], edad=turista['edad'], pais=turista['pais_origen'], nombreEmpresa=empresa['nombre']) + return redirect('/') + return render_template('modificar_usuario.html', title="Modificar datos de la cuenta", form=form, contrasena=userdata['contrasena'], edad=userdata['edad'], pais=userdata['pais_origen'], nombreEmpresa=userdata['nombre']) @app.route('/principal/agregar_lugar', methods=['GET','POST']) def agregar_lugar(): diff --git a/app/templates/principal.html b/app/templates/principal.html index 0281ef4..a7f97c4 100644 --- a/app/templates/principal.html +++ b/app/templates/principal.html @@ -28,7 +28,16 @@
- + {% for lugar in lugares %} +

+ {{ lugar['nombre'] }} + {{ lugar['descripcion'] }} + {{ lugar['ubicacion'] }} + {{ lugar['tipo'] }} + {{ lugar['horario'] }} + {{ lugar['fecha'] }} +

+ {% endfor %}
{% endif %} {% endblock %} \ No newline at end of file From d3bcdaedb52a5215dc00726e743492e5d0bc373a Mon Sep 17 00:00:00 2001 From: LMOlivera Date: Sat, 9 Mar 2019 12:26:43 -0300 Subject: [PATCH 3/4] =?UTF-8?q?Correcci=C3=B3n=20de=20requerimiento=209?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Olvidé refactorizar un insert a la base de datos. --- app/logic/clsSqlInsert.py | 12 ++++++++++++ app/routes.py | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/app/logic/clsSqlInsert.py b/app/logic/clsSqlInsert.py index f5a1876..c828012 100644 --- a/app/logic/clsSqlInsert.py +++ b/app/logic/clsSqlInsert.py @@ -33,6 +33,18 @@ def insertar_pertenece_a(self, ide, idc): cursor.execute(query,(ide, idc)) self.conexion.commit() pass + + def insertar_tiene(self, ide, id): + with self.conexion.cursor() as cursor: + query = """ + INSERT INTO tiene + (ide, id) + VALUES + (%s,%s) + """ + cursor.execute(query,(ide, id)) + self.conexion.commit() + pass def crearUsuario(self, email, nombre, password, tipo, id, edad, pais, nombreEmpresa): with self.conexion.cursor() as cursor: diff --git a/app/routes.py b/app/routes.py index 4a9c17c..164d22e 100644 --- a/app/routes.py +++ b/app/routes.py @@ -129,6 +129,10 @@ def agregar_lugar(): #INSERTA EN pertenece_a BASANDOSE EN EL ide SqlInsert.insertar_pertenece_a(ide,categoria) + + #INSERTA EN tiene + SqlInsert.insertar_tiene(ide,session['id_usuario']) + return redirect("/principal") except: return redirect('/') From ba3b6e3f99d3059eaef31bb11ce2c0328924d0c6 Mon Sep 17 00:00:00 2001 From: LMOlivera Date: Sat, 9 Mar 2019 14:25:13 -0300 Subject: [PATCH 4/4] =?UTF-8?q?Base=20de=20datos=20versi=C3=B3n=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementada nueva versión de la base de datos creada por Juan Pablo. Arreglado error importante al momento de crear un usuario. Co-Authored-By: jprolando --- Base de datos/uruguia_bd_test.sql | 27 +++++++++++++++------------ app/logic/clsSqlInsert.py | 22 +++++++++++----------- app/logic/clsSqlSelect.py | 17 ++++++++++++++++- app/routes.py | 19 +++++++++++-------- 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/Base de datos/uruguia_bd_test.sql b/Base de datos/uruguia_bd_test.sql index 146157b..6a64098 100644 --- a/Base de datos/uruguia_bd_test.sql +++ b/Base de datos/uruguia_bd_test.sql @@ -1,20 +1,22 @@ --- phpMyAdmin SQL Dump --- version 3.5.1 --- http://www.phpmyadmin.net --- --- Servidor: localhost --- Tiempo de generación: 06-03-2019 a las 23:07:26 --- Versión del servidor: 5.5.24-log --- Versión de PHP: 5.4.3 - -SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; +-- phpMyAdmin SQL Dump +-- version 4.8.4 +-- https://www.phpmyadmin.net/ +-- +-- Servidor: 127.0.0.1:3306 +-- Tiempo de generación: 08-03-2019 a las 23:13:49 +-- Versión del servidor: 5.7.24 +-- Versión de PHP: 7.2.14 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; -- -- Base de datos: `uruguia_bd_test` @@ -115,7 +117,8 @@ CREATE TABLE IF NOT EXISTS `tiene` ( CREATE TABLE IF NOT EXISTS `turista` ( `id` int(11) NOT NULL, `edad` int(11) NOT NULL, - `pais_origen` varchar(100) NOT NULL + `pais_origen` varchar(100) NOT NULL, + PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- diff --git a/app/logic/clsSqlInsert.py b/app/logic/clsSqlInsert.py index c828012..e425c21 100644 --- a/app/logic/clsSqlInsert.py +++ b/app/logic/clsSqlInsert.py @@ -46,24 +46,24 @@ def insertar_tiene(self, ide, id): self.conexion.commit() pass - def crearUsuario(self, email, nombre, password, tipo, id, edad, pais, nombreEmpresa): + def crearUsuario(self, email, nombre, password, tipo, id_nuevoUsuario, edad, pais, nombreEmpresa): with self.conexion.cursor() as cursor: query = """ INSERT INTO usuario - (email,nombre,contrasena,tipo) + (id_usuario,email,nombre,contrasena,tipo) VALUES - (%s,%s,%s,%s) + (%s,%s,%s,%s,%s) """ - cursor.execute(query,(email,nombre,password,tipo)) + cursor.execute(query,(id_nuevoUsuario,email,nombre,password,tipo)) if tipo=='turista': query = """ - INSERT INTO turista - (id,edad,pais_origen) - VALUES - (%s,%s,%s) - """ - cursor.execute(query,(id,edad,pais)) + INSERT INTO turista + (id,edad,pais_origen) + VALUES + (%s,%s,%s) + """ + cursor.execute(query,(id_nuevoUsuario,edad,pais)) else: query = """ INSERT INTO empresa @@ -71,7 +71,7 @@ def crearUsuario(self, email, nombre, password, tipo, id, edad, pais, nombreEmpr VALUES (%s,%s) """ - cursor.execute(query,(id,nombreEmpresa)) + cursor.execute(query,(id_nuevoUsuario,nombreEmpresa)) self.conexion.commit() pass diff --git a/app/logic/clsSqlSelect.py b/app/logic/clsSqlSelect.py index 2369195..6ce4cb0 100644 --- a/app/logic/clsSqlSelect.py +++ b/app/logic/clsSqlSelect.py @@ -80,7 +80,22 @@ def conseguir_id(self, email): SELECT id_usuario FROM usuario WHERE email=%s """ - idU = cursor.execute(query,(email)) + cursor.execute(query,(email)) + idU = cursor.fetchone() return idU self.conexion.commit() pass + + def conseguir_ultimo_idMasUno(self): + with self.conexion.cursor() as cursor: + query = """ + SELECT id_usuario + FROM usuario + ORDER BY id_usuario + DESC LIMIT 1 + """ + cursor.execute(query) + idU = cursor.fetchone() + return (idU['id_usuario']+1) + self.conexion.commit() + pass \ No newline at end of file diff --git a/app/routes.py b/app/routes.py index 164d22e..2887c10 100644 --- a/app/routes.py +++ b/app/routes.py @@ -33,24 +33,27 @@ def bienvenido(): def registro(): if session.get('logueado'): return redirect('/principal') - else: + else: nuevo = request.args.to_dict() form = RegisterForm() if form.validate_on_submit(): try: SqlSelect = clsSqlSelect.SqlSelect() SqlInsert = clsSqlInsert.SqlInsert() + print(SqlSelect.conseguir_ultimo_idMasUno()) SqlInsert.crearUsuario(form.email.data, - form.nombre.data, - form.password.data, - nuevo['tipo'], - SqlSelect.conseguir_id(email), - form.edad.data, - form.pais.data, - form.nombreEmpresa.data) + form.nombre.data, + form.password.data, + nuevo['tipo'], + SqlSelect.conseguir_ultimo_idMasUno(), + form.edad.data, + form.pais.data, + form.nombreEmpresa.data + ) session.clear() return redirect('/index') except: + print('Algo malo pasó') return redirect('/index') return render_template('registro.html', title="Registrar un nuevo usuario", form=form, tipo=nuevo['tipo'])