diff --git a/README.md b/README.md
index f2f0f94..643f678 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Descargar y mover el repositorio
+## Descargar y mover el repositorio
```bash
cd ~
git clone gitea@192.168.10.40:dix/formha.git
@@ -6,12 +6,12 @@ sudo mv formha/ /var/www
cd /var/www/formha/
```
-# Entrar en modo Dios
+## Entrar en modo Dios
```bash
sudo su
```
-# Crear el ambiente virtual
+## Crear el ambiente virtual
```bash
python3 -m venv .venv
source .venv/bin/activate
@@ -19,13 +19,13 @@ pip install -r requirements.txt
deactivate
```
-# Salimos del modo Dios
+## Salimos del modo Dios
```bash
exit
```
-# Añade las variables de entorno del proyecto al archivo envars
- - si tienes problemas con las variables de entorno deberás de comentarlas y reiniciar apache, una vez reiniciado deberas descomentar las variables de entorno y volver a reiniciar apache
+## Añade las variables de entorno del proyecto al archivo **envars**
+ Sí tienes problemas con las variables de entorno deberás de comentarlas y reiniciar apache, una vez reiniciado deberás descomentar las variables de entorno y volver a reiniciar apache
```bash
sudo nano /etc/apache2/envvars
```
@@ -46,19 +46,27 @@ export forma_db='{
#/////////////////////////////////////
```
-# Movemos el archivo de configuración a Apache (solo se hace 1 vez)
-## SI TE DA ERROR PRIMERO DESACTIVA APACHE EL PROBLEMA ES LAS VARIABLES DE ENTORNO
- sudo systemctl stop apache2
+## Movemos el archivo de configuración a Apache (solo se hace 1 vez)
+### SI TE DA ERROR PRIMERO DESACTIVA APACHE EL PROBLEMA ES LAS VARIABLES DE ENTORNO
+
+```bash
+sudo systemctl stop apache2
sudo mv formha.conf /etc/apache2/sites-available/
cd /etc/apache2/sites-available/
sudo a2ensite formha.conf
-
+```
+## Reiniciar apache
```bash
sudo systemctl reload apache2
sudo systemctl restart apache2
```
+# IMPORTANTE
+- Debes de dar permisos a la ruta de archivos UPLOAD (solo se ejecuta una vez)
+```bash
+sudo chown -R www-data:www-data /var/www/uploads/formha
+sudo chmod -R 755 /var/www/uploads/formha
+```
-
diff --git a/forms_py/__pycache__/cls_form_carousel.cpython-312.pyc b/forms_py/__pycache__/cls_form_carousel.cpython-312.pyc
index 4e9f409..e8f9781 100644
Binary files a/forms_py/__pycache__/cls_form_carousel.cpython-312.pyc and b/forms_py/__pycache__/cls_form_carousel.cpython-312.pyc differ
diff --git a/forms_py/cls_form_carousel.py b/forms_py/cls_form_carousel.py
index f715361..747532b 100644
--- a/forms_py/cls_form_carousel.py
+++ b/forms_py/cls_form_carousel.py
@@ -54,7 +54,7 @@ class Carousel(FlaskForm):
]
)
- bg_color = StringField('Color de fondo del texto: ', widget=ColorInput(), validators=[DataRequired()])
+ bg_color = StringField('Color de fondo: ', widget=ColorInput(), validators=[DataRequired()])
txt_color = StringField('Color del texto: ', widget=ColorInput(), validators=[DataRequired()])
diff --git a/main.py b/main.py
index ad08105..0909de1 100644
--- a/main.py
+++ b/main.py
@@ -33,7 +33,7 @@ if 'microsoft' in platform.uname().release.lower():
folder_upload = os.path.join(os.getcwd(), "static", "uploads")
elif platform.system() == "Linux":
- folder_upload = "/var/www/formha/static/uploads/"
+ folder_upload = "/var/www/uploads/formha"
@@ -183,7 +183,7 @@ def solutions():
return render_template(v['solutions'], active_page='solutions')
@app.route('/methodology')
-@cache.cached(timeout=43200)
+# @cache.cached(timeout=43200)
def methodology():
return render_template(v['methodology'], active_page='methodology')
@@ -419,13 +419,32 @@ def recover_pswd():
recipients=[emailPswdReco] # Asegúrate que es una lista
)
- # msg.html = render_template( 'email/recover_pswd.html', temp_password=new_tmp_pswd )
-
- msg.html = """
-
Nueva contraseña temporal:
-
Contraseña: {}
-
Una vez iniciada tu sesión debes de cambiar la contraseña a una nueva que puedas recordar
Hemos recibido una solicitud para restablecer tu contraseña. A continuación te proporcionamos una contraseña temporal que podrás usar para iniciar sesión:
+
+
🔑 Contraseña temporal:{new_tmp_pswd}
+
+
Importante: Una vez que inicies sesión, te recomendamos cambiar tu contraseña por una que solo tú conozcas y puedas recordar fácilmente.
+
+
+
Este es un mensaje automático, por favor no respondas a este correo.
+
+
+
+ """
+
+
dbUsers.update_pswd(pswd=hashed_new_pswd, email=emailPswdReco)
diff --git a/static/a_home/home.css b/static/a_home/home.css
index a8a696c..54fbeb4 100644
--- a/static/a_home/home.css
+++ b/static/a_home/home.css
@@ -55,6 +55,7 @@
height: 100vh;
object-fit: cover;
}
+ main { min-height: 80dvh; }
}
/* --------- Responsivo (ajustes si necesitas) ---------- */
@@ -68,6 +69,8 @@
.carousel-caption.centered .caption-content h2 {
font-size: 1.5rem;
}
+
+ main { min-height: 80dvh; }
}
/* Tablets */
@@ -75,14 +78,24 @@
.carousel-caption.centered .caption-content h2 {
font-size: 2rem;
}
+ main { min-height: 80dvh; }
}
/* Laptops */
@media (min-width: 1024px) and (max-width: 1439px) {
/* ajustes opcionales */
+ main { min-height: 80dvh; }
}
/* Pantallas grandes */
@media (min-width: 1440px) {
/* ajustes opcionales */
+ main { min-height: 80dvh; }
}
+
+
+
+
+
+
+
diff --git a/static/c_solutions/solutions.css b/static/c_solutions/solutions.css
index 13d9803..043cf6a 100644
--- a/static/c_solutions/solutions.css
+++ b/static/c_solutions/solutions.css
@@ -163,7 +163,7 @@ main {
main {
background-size: 50% auto; /* 30% del ancho del contenedor */
- height: 80vh;
+ min-height: 70dvh;
}
}
diff --git a/static/d_methodology/methodology.css b/static/d_methodology/methodology.css
index 17eb681..c626bff 100644
--- a/static/d_methodology/methodology.css
+++ b/static/d_methodology/methodology.css
@@ -1,13 +1,21 @@
-.container{
- & p {
- font-size: 1.5rem;
- }
-}
-
main {
place-items: center;
}
+#random-img {
+ width: 70%;
+ height: auto;
+
+ background-color: #fff;
+ border-radius: 12px;
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
+ padding: 1rem;
+}
+
+
+
+
+
/* Smartphones (hasta 767px) */
@media (max-width: 767px) {
/* main{ background-color: black; } */
diff --git a/static/h_tmp_user/i_carousel_form/carousel_form.js b/static/h_tmp_user/i_carousel_form/carousel_form.js
index 7866bb6..4d30f42 100644
--- a/static/h_tmp_user/i_carousel_form/carousel_form.js
+++ b/static/h_tmp_user/i_carousel_form/carousel_form.js
@@ -1,6 +1,12 @@
import { simpleNotification } from '../../z_comps/notify.js';
+// valida los archivos que se cargan en el formulario
+// solo permite jpg, jpeg, png, mp4
+// y los archivos que no son de imagen se eliminan
+// y se muestra un mensaje de error
+
+
let form = document.querySelector("form");
let img = document.getElementById("img");
diff --git a/static/h_tmp_user/i_carousel_form/datatable_carousel.js b/static/h_tmp_user/i_carousel_form/datatable_carousel.js
new file mode 100644
index 0000000..eba9ac3
--- /dev/null
+++ b/static/h_tmp_user/i_carousel_form/datatable_carousel.js
@@ -0,0 +1,99 @@
+new DataTable('#tblCarousel', {
+ responsive: {
+ details: {
+ type: 'column',
+ renderer: function (api, rowIdx, columns) {
+ const data = $.map(columns, function (col) {
+ // Excluir columnas ocultas con títulos no deseados
+ if (
+ col.hidden &&
+ !(
+ col.title.includes("ID") ||
+ col.title === 'Acciones'
+ )
+ ) {
+ return `
+