Skip to content

Commit de2fa6a

Browse files
committed
modificando home
1 parent 717869a commit de2fa6a

31 files changed

+183
-1221
lines changed

my-app/conexion/conexionBD.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
# Importando Libreria mysql.connector para conectar Python con MySQL
44
import mysql.connector
5-
from mysql.connector.errors import Error
65

76

87
def connectionBD():
@@ -22,9 +21,5 @@ def connectionBD():
2221
# print("Conexión exitosa a la BD")
2322
return connection
2423

25-
# except mysql.connector.errors.InterfaceError:
26-
# Si se produce un error de conexión, significa que el servidor no está en línea
27-
# print("El servidor de MySQL está apagado")
28-
2924
except mysql.connector.Error as error:
3025
print(f"No se pudo conectar: {error}")

my-app/controllers/funciones_home.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,31 @@ def generarReporteExcel():
214214

215215
# Enviar el archivo como respuesta HTTP
216216
return send_file(ruta_archivo, as_attachment=True)
217+
218+
219+
def buscarEmpleadoBD(search):
220+
try:
221+
with connectionBD() as conexion_MySQLdb:
222+
with conexion_MySQLdb.cursor(dictionary=True) as mycursor:
223+
querySQL = ("""
224+
SELECT
225+
e.id_empleado,
226+
e.nombre_empleado,
227+
e.apellido_empleado,
228+
e.salario_empleado,
229+
CASE
230+
WHEN e.sexo_empleado = 1 THEN 'Masculino'
231+
ELSE 'Femenino'
232+
END AS sexo_empleado
233+
FROM tbl_empleados AS e
234+
WHERE e.nombre_empleado LIKE %s
235+
ORDER BY e.id_empleado DESC
236+
""")
237+
search_pattern = f"%{search}%" # Agregar "%" alrededor del término de búsqueda
238+
mycursor.execute(querySQL, (search_pattern,))
239+
resultado_busqueda = mycursor.fetchall()
240+
return resultado_busqueda
241+
242+
except Exception as e:
243+
print(f"Ocurrió un error en def buscarEmpleadoBD: {e}")
244+
return []

my-app/controllers/funciones_login.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def procesar_update_perfil(data_form):
104104
return cursor.rowcount or []
105105
except Exception as e:
106106
print(
107-
f"Ocurrió un error al actualizar el perfil: {e}")
107+
f"Ocurrió en procesar_update_perfil: {e}")
108108
return []
109109
else:
110110
return 0
@@ -125,8 +125,7 @@ def updatePefilSinPass(id_user, name_surname):
125125
conexion_MySQLdb.commit()
126126
return cursor.rowcount
127127
except Exception as e:
128-
print(
129-
f"Ocurrió un error en la funcion updatePefilSinPass: {e}")
128+
print(f"Ocurrió un error en la funcion updatePefilSinPass: {e}")
130129
return []
131130

132131

my-app/routers/controller_page_not_found.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
@app.errorhandler(404)
77
def page_not_found(error):
88
if 'conectado' in session and request.method == 'GET':
9-
return redirect(url_for('cpanelListConsignaciones'))
9+
return redirect(url_for('inicio'))
1010
else:
11-
return redirect(url_for('inicioCpanel'))
11+
return redirect(url_for('inicio'))

my-app/routers/router_home.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,16 @@
77
# Importando cenexión a BD
88
from controllers.funciones_home import *
99

10-
PATH_URL = "public/cpanel"
11-
12-
13-
# Lista de Consignaciones recibidas
14-
@app.route('/home', methods=['GET'])
15-
def cpanelListConsignaciones():
16-
if 'conectado' in session:
17-
return render_template(f'{PATH_URL}/list_consignaciones.html')
18-
else:
19-
flash('primero debes iniciar sesión.', 'error')
20-
return redirect(url_for('inicioCpanel'))
10+
PATH_URL = "public/empleados"
2111

2212

2313
@app.route('/registrar-empleado', methods=['GET'])
2414
def viewFormEmpleado():
2515
if 'conectado' in session:
26-
return render_template(f'{PATH_URL}/empleados/form_empleado.html')
16+
return render_template(f'{PATH_URL}/form_empleado.html')
2717
else:
2818
flash('primero debes iniciar sesión.', 'error')
29-
return redirect(url_for('inicioCpanel'))
19+
return redirect(url_for('inicio'))
3020

3121

3222
@app.route('/form-registrar-empleado', methods=['POST'])
@@ -36,22 +26,22 @@ def formEmpleado():
3626
foto_perfil = request.files['foto_empleado']
3727
resultado = procesar_form_empleado(request.form, foto_perfil)
3828
if resultado:
39-
return render_template(f'{PATH_URL}/empleados/form_empleado.html')
29+
return render_template(f'{PATH_URL}/form_empleado.html')
4030
else:
4131
flash('El empleado NO fue registrado.', 'error')
42-
return render_template(f'{PATH_URL}/empleados/form_empleado.html')
32+
return render_template(f'{PATH_URL}/form_empleado.html')
4333
else:
4434
flash('primero debes iniciar sesión.', 'error')
45-
return redirect(url_for('inicioCpanel'))
35+
return redirect(url_for('inicio'))
4636

4737

4838
@app.route('/lista-de-empleados', methods=['GET'])
4939
def lista_empleados():
5040
if 'conectado' in session:
51-
return render_template(f'{PATH_URL}/empleados/lista_empleados.html', empleados=sql_lista_empleadosBD())
41+
return render_template(f'{PATH_URL}/lista_empleados.html', empleados=sql_lista_empleadosBD())
5242
else:
5343
flash('primero debes iniciar sesión.', 'error')
54-
return redirect(url_for('inicioCpanel'))
44+
return redirect(url_for('inicio'))
5545

5646

5747
@app.route("/detalles-empleado/", methods=['GET'])
@@ -60,13 +50,23 @@ def detalleEmpleado(idEmpleado=None):
6050
if 'conectado' in session:
6151
# Verificamos si el parámetro idEmpleado es None o no está presente en la URL
6252
if idEmpleado is None:
63-
return redirect(url_for('inicioCpanel'))
53+
return redirect(url_for('inicio'))
6454
else:
6555
detalle_empleado = sql_detalles_empleadosBD(idEmpleado) or []
66-
return render_template(f'{PATH_URL}/empleados/detalles_empleado.html', detalle_empleado=detalle_empleado)
56+
return render_template(f'{PATH_URL}/detalles_empleado.html', detalle_empleado=detalle_empleado)
6757
else:
6858
flash('Primero debes iniciar sesión.', 'error')
69-
return redirect(url_for('inicioCpanel'))
59+
return redirect(url_for('inicio'))
60+
61+
62+
# Buscadon de empleados
63+
@app.route("/buscando-empleado", methods=['POST'])
64+
def viewBuscarEmpleadoBD():
65+
resultadoBusqueda = buscarEmpleadoBD(request.json['busqueda'])
66+
if resultadoBusqueda:
67+
return render_template(f'{PATH_URL}/resultado_busqueda_empleado.html', dataBusqueda=resultadoBusqueda)
68+
else:
69+
return jsonify({'fin': 0})
7070

7171

7272
@app.route("/descargar-informe-empleados/", methods=['GET'])
@@ -75,4 +75,4 @@ def reporteBD():
7575
return generarReporteExcel()
7676
else:
7777
flash('primero debes iniciar sesión.', 'error')
78-
return redirect(url_for('inicioCpanel'))
78+
return redirect(url_for('inicio'))

my-app/routers/router_login.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,41 @@
1010

1111
# Importando controllers para el modulo de login
1212
from controllers.funciones_login import *
13+
PATH_URL_LOGIN = "public/login"
1314

1415

1516
@app.route('/', methods=['GET'])
16-
def inicioCpanel():
17+
def inicio():
1718
if 'conectado' in session:
18-
return render_template('public/cpanel/base_cpanel.html', dataLogin=dataLoginSesion())
19+
return render_template('public/base_cpanel.html', dataLogin=dataLoginSesion())
1920
else:
20-
return render_template('public/login/base_login.html')
21+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
2122

2223

2324
@app.route('/mi-perfil', methods=['GET'])
2425
def perfil():
2526
if 'conectado' in session:
26-
print('aqui')
27-
return render_template('public/cpanel/perfil/perfil.html', info_perfil_session=info_perfil_session())
27+
return render_template(f'public/perfil/perfil.html', info_perfil_session=info_perfil_session())
2828
else:
29-
return render_template('public/login/base_login.html')
29+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
3030

3131

3232
# Crear cuenta de usuario
3333
@app.route('/register-user', methods=['GET'])
3434
def cpanelRegisterUser():
3535
if 'conectado' in session:
36-
return redirect(url_for('inicioCpanel'))
36+
return redirect(url_for('inicio'))
3737
else:
38-
return render_template('public/login/auth_register.html')
38+
return render_template(f'{PATH_URL_LOGIN}/auth_register.html')
3939

4040

4141
# Recuperar cuenta de usuario
4242
@app.route('/recovery-password', methods=['GET'])
4343
def cpanelRecoveryPassUser():
4444
if 'conectado' in session:
45-
return redirect(url_for('inicioCpanel'))
45+
return redirect(url_for('inicio'))
4646
else:
47-
return render_template('public/login/auth_forgot_password.html')
47+
return render_template(f'{PATH_URL_LOGIN}/auth_forgot_password.html')
4848

4949

5050
# Crear cuenta de usuario
@@ -60,24 +60,23 @@ def cpanelResgisterUserBD():
6060
name_surname, email_user, pass_user)
6161
if (resultData != 0):
6262
flash('la cuenta fue creada correctamente.', 'success')
63-
return render_template('public/login/base_login.html')
63+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
6464
else:
6565
flash('el registro no fue procesado, por favor verifique.', 'error')
66-
return render_template('public/login/base_login.html')
66+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
6767
else:
6868
flash('el método HTTP es incorrecto', 'error')
69-
return render_template('public/login/base_login.html')
69+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
7070

7171

7272
# Actualizar datos de mi perfil
7373
@app.route("/actualizar-datos-perfil", methods=['POST'])
7474
def actualizarPerfil():
7575
if 'conectado' in session:
7676
respuesta = procesar_update_perfil(request.form)
77-
print(respuesta)
7877
if respuesta == 1:
7978
flash('Los datos fuerón actualizados correctamente.', 'success')
80-
return redirect(url_for('inicioCpanel'))
79+
return redirect(url_for('inicio'))
8180
elif respuesta == 0:
8281
flash('La contraseña actual esta incorrecta, por favor verifique.', 'error')
8382
return redirect(url_for('perfil'))
@@ -89,14 +88,14 @@ def actualizarPerfil():
8988
return redirect(url_for('perfil'))
9089
else:
9190
flash('primero debes iniciar sesión.', 'error')
92-
return render_template('public/login/base_login.html')
91+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
9392

9493

9594
# Validar sesión
9695
@app.route('/login', methods=['GET', 'POST'])
9796
def loginCliente():
9897
if 'conectado' in session:
99-
return redirect(url_for('inicioCpanel'))
98+
return redirect(url_for('inicio'))
10099
else:
101100
if request.method == 'POST' and 'email_user' in request.form and 'pass_user' in request.form:
102101

@@ -119,17 +118,17 @@ def loginCliente():
119118
session['email_user'] = account['email_user']
120119

121120
flash('la sesión fue correcta.', 'success')
122-
return redirect(url_for('inicioCpanel'))
121+
return redirect(url_for('inicio'))
123122
else:
124123
# La cuenta no existe o el nombre de usuario/contraseña es incorrecto
125124
flash('datos incorrectos por favor revise.', 'error')
126-
return render_template('public/login/base_login.html')
125+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
127126
else:
128127
flash('el usuario no existe, por favor verifique.', 'error')
129-
return render_template('public/login/base_login.html')
128+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
130129
else:
131130
flash('primero debes iniciar sesión.', 'error')
132-
return render_template('public/login/base_login.html')
131+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
133132

134133

135134
@app.route('/closed-session', methods=['GET'])
@@ -142,7 +141,7 @@ def cerraSesion():
142141
session.pop('name_surname', None)
143142
session.pop('email', None)
144143
flash('tu sesión fue cerrada correctamente.', 'success')
145-
return render_template('public/login/base_login.html')
144+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
146145
else:
147146
flash('recuerde debe iniciar sesión.', 'error')
148-
return render_template('public/login/base_login.html')
147+
return render_template(f'{PATH_URL_LOGIN}/base_login.html')

my-app/static/assets/css/my_style.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,8 @@ tbody tr:hover {
229229
cursor: pointer;
230230
border-bottom: dotted 1px #08b324;
231231
}
232+
233+
#search {
234+
min-width: 44% !important;
235+
background-color: #f3efef !important;
236+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
async function buscadorTable(tableId) {
2+
let input, busqueda, url;
3+
url = "/buscando-empleado";
4+
5+
input = document.getElementById("search");
6+
busqueda = input.value.toUpperCase();
7+
8+
const dataPeticion = { busqueda };
9+
const headers = {
10+
"Content-Type": "application/json",
11+
"Access-Control-Allow-Origin": "*",
12+
};
13+
14+
try {
15+
const response = await axios.post(url, dataPeticion, { headers });
16+
if (!response.status) {
17+
console.log(`HTTP error! status: ${response.status} 😭`);
18+
}
19+
20+
if (response.data.fin === 0) {
21+
$(`#${tableId} tbody`).html("");
22+
$(`#${tableId} tbody`).html(`
23+
<tr>
24+
<td colspan="6" style="text-align:center;color: red;font-weight: bold;">No resultados para la busqueda: <strong style="text-align:center;color: #222;">${busqueda}</strong></td>
25+
</tr>`);
26+
return false;
27+
}
28+
29+
if (response.data) {
30+
$(`#${tableId} tbody`).html("");
31+
let miData = response.data;
32+
$(`#${tableId} tbody`).append(miData);
33+
}
34+
} catch (error) {
35+
console.error(error);
36+
}
37+
}
-35 Bytes
Binary file not shown.

my-app/templates/public/cpanel/base_cpanel.html renamed to my-app/templates/public/base_cpanel.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@
77
data-assets-path="../assets/"
88
data-template="vertical-menu-template-free">
99
<head>
10-
{% include 'public/cpanel/includes_cpanel/head.html' %}
10+
{% include 'public/includes/head.html' %}
1111
<!---->
1212
{% block customCSS %} {% endblock %}
1313
</head>
1414
<body>
15-
{% include 'public/cpanel/includes_cpanel/pre_loader.html' %}
15+
{% include 'public/includes/pre_loader.html' %}
1616
<!---->
17-
{% include 'public/cpanel/includes_cpanel/navbar.html' %}
17+
{% include 'public/includes/navbar.html' %}
1818
<div class="layout-wrapper layout-content-navbar">
1919
<div class="layout-container">
20-
{% include 'public/cpanel/includes_cpanel/menu_sidebar.html' %}
20+
{% include 'public/includes/menu_sidebar.html' %}
2121
<div class="layout-page">
2222
<div class="content-wrapper">
2323
<div class="container-xxl flex-grow-1 container-p-y">
24-
{% include 'public/cpanel/includes_cpanel/message_cpanel.html' %}
25-
{% block body %}
24+
{% include 'public/includes/message_cpanel.html' %} {% block body
25+
%}
2626
<!--fin del bloque-->
2727
{% endblock %}
2828
</div>
@@ -35,7 +35,7 @@
3535
<div class="layout-overlay layout-menu-toggle"></div>
3636
</div>
3737

38-
{% include 'public/cpanel/includes_cpanel/js.html' %}
38+
{% include 'public/includes/js.html' %}
3939
<!--Custom JS-->
4040
{% block customJS %} {% endblock %}
4141
<!-- fin de mi custom JS-->

0 commit comments

Comments
 (0)