Este proyecto implementa un sistema de gestión utilizando Flask y SQLAlchemy. El sistema permite manejar usuarios con diferentes roles (administradores, docentes y estudiantes), salas de tutoría, y suscripciones entre usuarios y salas.
Antes de comenzar, asegúrate de tener instalados los siguientes elementos:
- Python 3.7 o superior
- MySQL o MariaDB
- Librerías necesarias:
- Flask==2.3.2
- Flask-SQLAlchemy==3.0.2
- Flask-Login==0.6.2
- Flask-WTF==1.0.1
- Flask-Migrate==3.1.0
├── app.py # Punto de entrada de la aplicación
├── config.py # Configuración de la aplicación (por ejemplo, base de datos, claves secretas)
├── models.py # Modelos de base de datos con SQLAlchemy
├── templates/ # Plantillas HTML para renderizar las vistas
│ ├── index.html # Página de inicio principal
│ ├── login.html # Página de inicio de sesión
│ ├── registrar.html # Formulario de registro de usuarios
│ ├── admin/ # Paneles de administración
│ │ ├── dashboard_admin.html # Dashboard principal para admin
│ │ ├── dashboard_admin_tutorias.html # Gestión de tutorías
│ │ ├── dashboard_admin_crear_sala.html # Formulario para crear salas
│ │ ├── dashboard_admin_editar_sala.html # Formulario para editar salas
│ │ ├── dashboard_admin_usuarios.html # Gestión de usuarios
│ │ ├── dashboard_admin_usuarios_agregar_usuarios.html # Formulario para agregar usuarios
│ │ └── dashboard_admin_usuarios_editar_usuarios.html # Formulario para editar usuarios
│ ├── usuario/ # Paneles para estudiantes
│ │ ├── dashboard_usuarios.html # Dashboard para estudiantes
│ └── docentes/ # Paneles para docentes
│ ├── dashboard_docentes.html # Dashboard para docentes
│ └── ver_estudiantes.html # Vista para listar estudiantes inscritos en una sala
├── static/ # Archivos estáticos como estilos CSS, imágenes y scripts JS
│ ├── css/ # Archivos CSS para estilos personalizados
│ └── img/ # Imágenes utilizadas en el sitio
Este documento describe los endpoints de la aplicación, organizados por su importancia y funcionalidad. Los endpoints se dividen en varias categorías según su propósito.
Estas rutas son esenciales para la gestión de la sesión de los usuarios.
-
/login
: Iniciar sesión
Método
:GET, POST
Permite a los usuarios iniciar sesión en el sistema. -
/logout
: Cerrar sesión
Método
:GET
Permite cerrar la sesión actual del usuario autenticado. -
/registrar
: Crear nuevo usuario
Método
:GET, POST
Permite crear nuevos usuarios en el sistema.
Estas rutas permiten la creación, edición, eliminación y visualización de salas de tutoría.
-
/crear_sala
: Crear nueva sala
Método
:GET, POST
Permite a los administradores y docentes crear nuevas salas de tutoría. -
/dashboard_admin_tutorias
: Listar tutorías
Método
:GET
Muestra una lista de todas las tutorías disponibles en el sistema. -
/editar_sala/<int:sala_id>
: Editar una sala
Método
:GET, POST
Permite a los administradores y docentes editar los detalles de una sala de tutoría existente. -
/eliminar_sala/<int:sala_id>
: Eliminar una sala
Método
:POST
Permite eliminar una sala de tutoría existente.
Estas rutas permiten gestionar los usuarios del sistema, incluyendo la creación, edición, eliminación y listado de usuarios.
-
/dashboard_admin_usuarios
: Listar usuarios
Método
:GET
Muestra una lista de todos los usuarios registrados en el sistema. -
/editar_usuario/<int:user_id>
: Editar usuario
Método
:GET, POST
Permite editar la información de un usuario existente. -
/eliminar_usuario/<int:user_id>
: Eliminar usuario
Método
:POST, GET
Permite eliminar un usuario del sistema. -
/agregar_usuario
: Agregar usuario
Método
:GET, POST
Permite agregar usuarios al sistema de forma manual.
Permiten a los usuarios suscribirse y eliminar suscripciones de las salas.
-
/suscribirse_sala/<int:sala_id>
: Suscribirse a una sala
Método
:POST
Permite a los usuarios suscribirse a una sala de tutoría. -
/eliminar_suscripcion/<int:sala_id>
: Eliminar suscripción
Método
:POST
Permite a los usuarios eliminar su suscripción a una sala de tutoría.
Rutas para que los estudiantes y docentes gestionen o vean las tutorías a las que están inscritos.
-
/dashboard_usuarios
: Dashboard para estudiantes
Método
:GET
Muestra el dashboard de las tutorías a las que el estudiante está suscrito. -
/dashboard_docentes
: Dashboard para docentes
Método
:GET
Muestra el dashboard de las tutorías que el docente está gestionando. -
/ver_estudiantes/<int:sala_id>
: Ver estudiantes en una sala
Método
:GET
Permite a los docentes ver la lista de estudiantes suscritos a una sala de tutoría.
Rutas generales de la aplicación que no requieren que el usuario esté autenticado.
/
: Página de inicio
Método
:GET
Página principal de la aplicación.
-
Clona este repositorio: git clone https://github.com/Zanyllect58/usta_tutoriales.git
-
cd usta_tutoriales
-
python -m venv venv
-
venv\Scripts\activate
-
pip install -r requirements.txt
-
pip install mysql-connector-python
-
python user_admin.py
-
python models.py
-
python app.py
query sql
-- Crear la tabla 'user' CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(128) NOT NULL, role ENUM('admin', 'student', 'teacher') NOT NULL, identificacion VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(120) NOT NULL UNIQUE, career VARCHAR(120), semester VARCHAR(120) );
-- Crear la tabla 'tutoria' CREATE TABLE tutoria ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100) NOT NULL, tema VARCHAR(200), compromiso VARCHAR(200), horario DATETIME, ubicacion VARCHAR(100), docente_id INT NOT NULL, estado BOOLEAN DEFAULT TRUE, fecha DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (docente_id) REFERENCES user(id) ON DELETE CASCADE );
-- Crear la tabla 'suscripciones' CREATE TABLE suscripciones ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, tutoria_id INT NOT NULL, FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE, FOREIGN KEY (tutoria_id) REFERENCES tutoria(id) ON DELETE CASCADE );