Skip to content

Commit e16dd54

Browse files
committed
proyecto culminado en cuanto a funciones
1 parent 77b9d69 commit e16dd54

20 files changed

+489
-63
lines changed

my-app/controllers/funciones_home.py

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,3 +240,123 @@ def buscarEmpleadoBD(search):
240240
except Exception as e:
241241
print(f"Ocurrió un error en def buscarEmpleadoBD: {e}")
242242
return []
243+
244+
245+
def buscarEmpleadoUnico(id):
246+
try:
247+
with connectionBD() as conexion_MySQLdb:
248+
with conexion_MySQLdb.cursor(dictionary=True) as mycursor:
249+
querySQL = ("""
250+
SELECT
251+
e.id_empleado,
252+
e.nombre_empleado,
253+
e.apellido_empleado,
254+
e.sexo_empleado,
255+
e.telefono_empleado,
256+
e.email_empleado,
257+
e.profesion_empleado,
258+
e.salario_empleado,
259+
e.foto_empleado
260+
FROM tbl_empleados AS e
261+
WHERE e.id_empleado =%s LIMIT 1
262+
""")
263+
mycursor.execute(querySQL, (id,))
264+
empleado = mycursor.fetchone()
265+
return empleado
266+
267+
except Exception as e:
268+
print(f"Ocurrió un error en def buscarEmpleadoUnico: {e}")
269+
return []
270+
271+
272+
def procesar_actualizacion_form(data):
273+
try:
274+
with connectionBD() as conexion_MySQLdb:
275+
with conexion_MySQLdb.cursor(dictionary=True) as cursor:
276+
nombre_empleado = data.form['nombre_empleado']
277+
apellido_empleado = data.form['apellido_empleado']
278+
sexo_empleado = data.form['sexo_empleado']
279+
telefono_empleado = data.form['telefono_empleado']
280+
email_empleado = data.form['email_empleado']
281+
profesion_empleado = data.form['profesion_empleado']
282+
283+
salario_sin_puntos = re.sub(
284+
'[^0-9]+', '', data.form['salario_empleado'])
285+
salario_empleado = int(salario_sin_puntos)
286+
id_empleado = data.form['id_empleado']
287+
288+
if data.files['foto_empleado']:
289+
file = data.files['foto_empleado']
290+
fotoForm = procesar_imagen_perfil(file)
291+
292+
querySQL = """
293+
UPDATE tbl_empleados
294+
SET
295+
nombre_empleado = %s,
296+
apellido_empleado = %s,
297+
sexo_empleado = %s,
298+
telefono_empleado = %s,
299+
email_empleado = %s,
300+
profesion_empleado = %s,
301+
salario_empleado = %s,
302+
foto_empleado = %s
303+
WHERE id_empleado = %s
304+
"""
305+
values = (nombre_empleado, apellido_empleado, sexo_empleado,
306+
telefono_empleado, email_empleado, profesion_empleado,
307+
salario_empleado, fotoForm, id_empleado)
308+
else:
309+
querySQL = """
310+
UPDATE tbl_empleados
311+
SET
312+
nombre_empleado = %s,
313+
apellido_empleado = %s,
314+
sexo_empleado = %s,
315+
telefono_empleado = %s,
316+
email_empleado = %s,
317+
profesion_empleado = %s,
318+
salario_empleado = %s
319+
WHERE id_empleado = %s
320+
"""
321+
values = (nombre_empleado, apellido_empleado, sexo_empleado,
322+
telefono_empleado, email_empleado, profesion_empleado,
323+
salario_empleado, id_empleado)
324+
325+
cursor.execute(querySQL, values)
326+
conexion_MySQLdb.commit()
327+
328+
return cursor.rowcount or []
329+
except Exception as e:
330+
print(f"Ocurrió un error en procesar_actualizacion_form: {e}")
331+
return None
332+
333+
334+
# Lista de Usuarios creados
335+
def lista_usuariosBD():
336+
try:
337+
with connectionBD() as conexion_MySQLdb:
338+
with conexion_MySQLdb.cursor(dictionary=True) as cursor:
339+
querySQL = "SELECT id, name_surname, email_user, created_user FROM users"
340+
cursor.execute(querySQL,)
341+
usuariosBD = cursor.fetchall()
342+
return usuariosBD
343+
except Exception as e:
344+
print(f"Error en lista_usuariosBD : {e}")
345+
return []
346+
347+
# Eliminar usuario
348+
349+
350+
def eliminarUsuario(id):
351+
try:
352+
with connectionBD() as conexion_MySQLdb:
353+
with conexion_MySQLdb.cursor(dictionary=True) as cursor:
354+
querySQL = "DELETE FROM users WHERE id=%s"
355+
cursor.execute(querySQL, (id,))
356+
conexion_MySQLdb.commit()
357+
resultado_eliminar = cursor.rowcount
358+
359+
return resultado_eliminar
360+
except Exception as e:
361+
print(f"Error en eliminarUsuario : {e}")
362+
return []

my-app/routers/router_home.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from app import app
22
from flask import render_template, request, flash, redirect, url_for, session, jsonify
3-
43
from mysql.connector.errors import Error
54

65

@@ -69,6 +68,45 @@ def viewBuscarEmpleadoBD():
6968
return jsonify({'fin': 0})
7069

7170

71+
@app.route("/editar-empleado/<int:id>", methods=['GET'])
72+
def viewEditarEmpleado(id):
73+
if 'conectado' in session:
74+
respuestaEmpleado = buscarEmpleadoUnico(id)
75+
if respuestaEmpleado:
76+
return render_template(f'{PATH_URL}/form_empleado_update.html', respuestaEmpleado=respuestaEmpleado)
77+
else:
78+
flash('El empleado no existe.', 'error')
79+
return redirect(url_for('inicio'))
80+
else:
81+
flash('Primero debes iniciar sesión.', 'error')
82+
return redirect(url_for('inicio'))
83+
84+
85+
# Recibir formulario para actulizar informacion de empleado
86+
@app.route('/actualizar-empleado', methods=['POST'])
87+
def actualizarEmpleado():
88+
resultData = procesar_actualizacion_form(request)
89+
if resultData:
90+
return redirect(url_for('lista_empleados'))
91+
92+
93+
@app.route("/lista-de-usuarios", methods=['GET'])
94+
def usuarios():
95+
if 'conectado' in session:
96+
resp_usuariosBD = lista_usuariosBD()
97+
return render_template('public/usuarios/lista_usuarios.html', resp_usuariosBD=resp_usuariosBD)
98+
else:
99+
return redirect(url_for('inicioCpanel'))
100+
101+
102+
@app.route('/borrar-usuario/<string:id>', methods=['GET'])
103+
def borrarUsuario(id):
104+
resp = eliminarUsuario(id)
105+
if resp:
106+
flash('El Usuario fue eliminado correctamente', 'success')
107+
return redirect(url_for('usuarios'))
108+
109+
72110
@app.route("/descargar-informe-empleados/", methods=['GET'])
73111
def reporteBD():
74112
if 'conectado' in session:

my-app/routers/router_login.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def cerraSesion():
144144
session.pop('name_surname', None)
145145
session.pop('email', None)
146146
flash('tu sesión fue cerrada correctamente.', 'success')
147-
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
147+
return redirect(url_for('inicio'))
148148
else:
149149
flash('recuerde debe iniciar sesión.', 'error')
150150
return render_template(f'{PATH_URL_LOGIN}/base_login.html')
Binary file not shown.
417 KB
Loading
201 KB
Loading

my-app/templates/public/base_cpanel.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<div class="layout-page">
2222
<div class="content-wrapper">
2323
<div class="container-xxl flex-grow-1 container-p-y">
24-
{% include 'public/includes/message_cpanel.html' %}
24+
{% include 'public/includes/messages.html' %}
2525
<!---->
2626
{% block body %}
2727
<!--fin del bloque-->

my-app/templates/public/empleados/detalles_empleado.html

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% extends 'public/base_cpanel.html' %}
22
<!--Cambiando el title-->
3-
{% block title %}Crud | Registrar Empleado{% endblock %}
3+
{% block title %}Crud con Python 🐍 | Registrar Empleado{% endblock %}
44
<!---->
55
{% block customCSS %}
66
<link
@@ -16,17 +16,17 @@
1616
<div class="row justify-content-center mb-2">
1717
<div class="col-md-12">
1818
<h3 class="text-center mt-5 mb-3">
19-
<a href="/lista-de-empleados"
20-
><i class="bi bi-arrow-left-circle"></i
21-
></a>
19+
<a href="/lista-de-empleados">
20+
<i class="bi bi-arrow-left-circle"></i>
21+
</a>
2222
INFORMACIÓN DEL EMPLEADO
2323
</h3>
2424
<hr />
2525
</div>
2626
</div>
2727

2828
<div class="row justify-content-center mb-2">
29-
<div class="col-md-6">
29+
<div class="col-md-10">
3030
<div class="card-body">
3131
<div class="row">
3232
<div class="col-md-6">
@@ -91,16 +91,11 @@ <h3 class="text-center mt-5 mb-3">
9191
</div>
9292
<div class="col-md-6">
9393
<label for="" class="form-label"> IMAGEN DEL EMPLEADO </label>
94-
95-
<div class="avatar-upload">
96-
<div class="avatar-preview">
97-
<div
98-
id="imagePreview"
99-
style="
100-
background-image: url('/static/fotos_empleados/{{ detalle_empleado.foto_empleado }}');
101-
"></div>
102-
</div>
103-
</div>
94+
<br />
95+
<img
96+
style="width: 200px"
97+
src="/static/fotos_empleados/{{ detalle_empleado.foto_empleado }}"
98+
alt="imagen-empleado" />
10499
</div>
105100
</div>
106101
</div>

my-app/templates/public/empleados/form_empleado.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% extends 'public/base_cpanel.html' %}
22
<!--Cambiando el title-->
3-
{% block title %}Crud | Registrar Empleado{% endblock %}
3+
{% block title %}Crud con Python 🐍 | Registrar Empleado{% endblock %}
44
<!---->
55
{% block customCSS %}
66
<link
@@ -19,7 +19,7 @@ <h3 class="text-center mt-5 mb-3">REGISTRAR NUEVO EMPLEADO</h3>
1919
</div>
2020

2121
<div class="row justify-content-center mb-2">
22-
<div class="col-md-6">
22+
<div class="col-md-10">
2323
<form
2424
class="form-horizontal mx-auto"
2525
method="POST"

0 commit comments

Comments
 (0)