-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
163 lines (125 loc) · 5.26 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
from flask import Flask, render_template, request, redirect, url_for, flash, session
from flask_bcrypt import Bcrypt
from config import Config
from database import *
from datetime import datetime
#instancia de la app
app = Flask(__name__, template_folder='front/html', static_folder='front/static')
flask_bcrypt = Bcrypt(app)
# instancia de la base de datos
db = ConexionBD(Config.MYSQL_HOST,
Config.MYSQL_PORT,
Config.MYSQL_USER,
Config.MYSQL_PASSWORD,
Config.MYSQL_DB,
flask_bcrypt)
# Configurar la clave secreta
app.config['SECRET_KEY'] = Config.SECRET_KEY
#ruta de pagina principal
@app.route('/')
def index():
return render_template('index.html')
#ruta para iniciar sesion
@app.route('/inicio', methods=['GET', 'POST'])
def inicio():
if request.method == 'GET':
return render_template('inicio.html')
email = str(request.form['email'])
contrasena = str(request.form['contrasena'])
# Consulta el usuario en la base de datos usando el email proporcionado
usuario = db.consultar_usuario(email)
verificacion = flask_bcrypt.check_password_hash(usuario['contrasena'], contrasena)
# Verificar la contraseña
if verificacion:
# Contraseña correcta, redirigir al usuario a la página principal
session['user_id'] = usuario['id']
flash('Inicio de sesión exitoso', 'success')
return redirect(url_for('principal'))
else:
# Autenticación fallida
flash('Email o contraseña incorrectos', 'error')
return redirect(url_for('inicio'))
#ruta para registrar cuenta
@app.route('/registro', methods=['GET', 'POST'])
def registro():
if request.method == 'GET':
return render_template('registro.html')
#estandarizamos los datos para usarlos
nombre = str(request.form['nombre'])
apellido = str(request.form['apellido'])
email = str(request.form['email'])
contrasena = request.form['contrasena']
#logica de registro
db.crear_usuario(nombre, apellido, email, contrasena)
flash('Usuario registrado exitosamente', 'success')
return redirect(url_for('index'))
@app.route('/agregarAutomovil' ,methods=['GET','POST'])
def agregarAutomovil():
if request.method == 'POST':
marca = request.form.get('marca')
modelo = request.form.get('modelo')
anio = request.form.get('anio')
vin = request.form.get('vin')
kilometraje = request.form.get('kilometraje')
combustible = request.form.get('combustible')
#logica de registro
# Obtener el ID del usuario desde la sesión
user_id = session.get('user_id')
if user_id:
# Lógica de registro
db.cargar_auto(marca, modelo, anio, vin, kilometraje, combustible, user_id)
flash('Automóvil registrado exitosamente', 'success')
else:
flash('Debe iniciar sesión para registrar un automóvil', 'error')
return redirect(url_for('inicio'))
return redirect(url_for('principal'))
return render_template('agregarAutomovil.html')
@app.route('/principal')
def principal():
return render_template('principal.html')
@app.route('/misAutos')
def misAutos():
user_id = session.get('user_id')
if user_id:
autos = db.consultar_autos(user_id)
return render_template('misAutos.html', autos=autos)
else:
flash('Debe iniciar sesión para ver sus automóviles', 'error')
return redirect(url_for('inicio'))
@app.route('/mantenimientos/<int:auto_id>')
def mantenimientos(auto_id):
# Conectar a la base de datos
mantenimientos = db.consultar_mantenimientos(auto_id)
# Renderizar la plantilla HTML y pasar los mantenimientos como contexto
return render_template('mantenimientos.html', mantenimientos=mantenimientos, auto_id=auto_id)
@app.route('/agregar_mantenimiento/<int:auto_id>', methods=['GET', 'POST'])
def agregar_mantenimiento(auto_id):
user_id = session.get('user_id')
if not user_id:
flash('Debe iniciar sesión para agregar un mantenimiento', 'error')
return redirect(url_for('inicio'))
if request.method == 'POST':
control = request.form.get('control')
fecha = request.form.get('fecha')
prox_control = request.form.get('prox_control')
try:
db.cargar_mantenimiento(control, fecha, prox_control, auto_id)
flash('Mantenimiento registrado exitosamente', 'success')
return redirect(url_for('mantenimientos',auto_id=auto_id))
except ValueError as e:
flash(str(e), 'error')
return redirect(url_for('agregar_mantenimiento', auto_id=auto_id))
except Exception as e:
flash(f'Error inesperado: {str(e)}', 'error')
return redirect(url_for('agregar_mantenimiento', auto_id=auto_id))
return render_template('agregar_mantenimiento.html', auto_id=auto_id)
# Nueva ruta para cerrar sesión
@app.route('/logout')
def logout():
# Eliminar la información de sesión del usuario
session.pop('user_id', None)
flash('Sesión cerrada exitosamente', 'success')
return redirect(url_for('index'))
#ejecucion de la app
if __name__ == '__main__':
app.run(debug=True)