From ce6333ec444d0fbc828a8b342eaecbe49893f30b Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 12:45:32 +0100 Subject: [PATCH 1/7] Corregidos archivos de puesta en marcha --- essenza/install.bat | 52 ++++++++++++++++++++++ essenza/order/tests.py | 4 +- essenza/order/views.py | 2 +- essenza/{load_samples.bat => reset_db.bat} | 44 +++++++++--------- essenza/templates/cart/cart_detail.html | 2 +- 5 files changed, 76 insertions(+), 28 deletions(-) create mode 100644 essenza/install.bat rename essenza/{load_samples.bat => reset_db.bat} (59%) diff --git a/essenza/install.bat b/essenza/install.bat new file mode 100644 index 0000000..845685c --- /dev/null +++ b/essenza/install.bat @@ -0,0 +1,52 @@ +@echo off +REM --------------------------------------------------------- +REM NOMBRE: install.bat +REM FUNCION: Prepara el entorno tecnico desde cero. +REM 1. Verifica entorno virtual. +REM 2. Instala dependencias. +REM 3. Crea archivos de migracion (Detecta modelos). +REM 4. Aplica migraciones (Crea tablas vacias). +REM --------------------------------------------------------- + +IF "%VIRTUAL_ENV%"=="" ( + echo. + echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + echo ERROR: No se detecta un entorno virtual activo. + echo Por favor, activa tu '.venv' antes de ejecutar este script. + echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + pause + exit /b 1 +) + +echo. +echo --- 1. Instalando dependencias del sistema... +pip install -r requirements.txt +IF %ERRORLEVEL% NEQ 0 GOTO :ERROR + +echo. +echo --- 2. Generando archivos de migracion... +python manage.py makemigrations +IF %ERRORLEVEL% NEQ 0 GOTO :ERROR + +echo. +echo --- 3. Construyendo la Base de Datos... +python manage.py migrate --noinput +IF %ERRORLEVEL% NEQ 0 GOTO :ERROR + +echo. +echo ======================================================= +echo !INSTALACION COMPLETADA! +echo Estructura de BD creada exitosamente. +echo Para poblar con datos de ejemplo, ejecuta: reset_db.bat +echo ======================================================= +GOTO :END + +:ERROR +echo. +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo ERROR CRITICO -> La instalacion ha fallado. +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +pause +exit /b 1 + +:END \ No newline at end of file diff --git a/essenza/order/tests.py b/essenza/order/tests.py index f9f930f..f98eea3 100644 --- a/essenza/order/tests.py +++ b/essenza/order/tests.py @@ -55,7 +55,7 @@ def _create_cart_for_user(self, quantity=1): return cart # ========================================== - # BLOQUE 1: CONTRARREMBOLSO (COD) + # BLOQUE 1: CONTRARREEMBOLSO (COD) # ========================================== def test_cod_checkout_success(self): """ @@ -231,7 +231,7 @@ def test_guest_checkout_cod(self): } session.save() - # 2. Pagar Contrarrembolso + # 2. Pagar Contrarreembolso data = { "payment_method": "cod", "shipping_name": "Invitado", diff --git a/essenza/order/views.py b/essenza/order/views.py index f85b2cd..60aca21 100644 --- a/essenza/order/views.py +++ b/essenza/order/views.py @@ -298,7 +298,7 @@ def create_checkout(request): payment_method = request.POST.get("payment_method") # 'stripe' o 'cod' - # --- OPCIÓN A: CONTRARREMBOLSO (COD) --- + # --- OPCIÓN A: CONTRARREEMBOLSO (COD) --- if payment_method == "cod": # 1. Capturamos los datos DEL FORMULARIO HTML name = request.POST.get("shipping_name") diff --git a/essenza/load_samples.bat b/essenza/reset_db.bat similarity index 59% rename from essenza/load_samples.bat rename to essenza/reset_db.bat index be0c428..3988a7d 100644 --- a/essenza/load_samples.bat +++ b/essenza/reset_db.bat @@ -1,10 +1,10 @@ @echo off REM --------------------------------------------------------- -REM IMPORTANTE: Este archivo RESTAURA TOTALMENTE la BD del proyecto. -REM 1. Verifica entorno virtual. -REM 2. Instala dependencias. -REM 3. Borra BD y Media. -REM 4. Recrea BD y copia assets de sampleo. +REM NOMBRE: reset_db.bat +REM FUNCION: restaura los datos de sampleo de la base de datos. +REM 1. Borra todos los datos. +REM 2. Copia assets multimedia. +REM 3. Carga fixtures. REM --------------------------------------------------------- IF "%VIRTUAL_ENV%"=="" ( @@ -18,22 +18,21 @@ IF "%VIRTUAL_ENV%"=="" ( ) echo. -echo --- Instalando dependencias (pip)... -pip install -r requirements.txt -IF %ERRORLEVEL% NEQ 0 GOTO :ERROR +echo !ADVERTENCIA!: Se borraran todos los datos actuales de la BD. echo. -echo --- Borrando TODOS los datos de la BD... +echo --- 1. Limpiando la Base de Datos... python manage.py flush --noinput IF %ERRORLEVEL% NEQ 0 GOTO :ERROR +REM Ejecutamos migrate por seguridad, por si hay cambios pendientes echo. -echo --- Aplicando migraciones... +echo --- 2. Verificando estructura de tablas... python manage.py migrate --noinput IF %ERRORLEVEL% NEQ 0 GOTO :ERROR echo. -echo --- Copiando imagenes de sampleo a 'media/'... +echo --- 3. Restaurando imagenes de sampleo en 'media/'... REM XCOPY [origen] [destino] /E /I /Y REM /E = Copia subdirectorios (incluso vacíos) REM /I = Si el destino no existe, asume que es un directorio @@ -42,35 +41,32 @@ XCOPY _sample_assets media /E /I /Y IF %ERRORLEVEL% NEQ 0 GOTO :ERROR echo. -echo --- Cargando datos de USER... +echo --- 4. Cargando datos de prueba... +echo Cargando Usuarios... python manage.py loaddata user/sample/sample.json IF %ERRORLEVEL% NEQ 0 GOTO :ERROR -echo. -echo --- Cargando datos de PRODUCT... +echo Cargando Productos... python manage.py loaddata product/sample/sample.json IF %ERRORLEVEL% NEQ 0 GOTO :ERROR -echo. -echo --- Cargando datos de ORDER... +echo Cargando Pedidos... python manage.py loaddata order/sample/sample.json IF %ERRORLEVEL% NEQ 0 GOTO :ERROR echo. -echo ======================================================== -echo !PROCESO COMPLETADO CON EXITO! -echo Los datos de sampleo se han cargado en la base de datos. -echo ======================================================== +echo ====================================================== +echo !RESETEO COMPLETADO! +echo La aplicacion ha vuelto al estado de fabrica (Sample). +echo ====================================================== GOTO :END :ERROR echo. echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -echo ERROR -> El script se detuvo porque un comando ha fallado. +echo ERROR -> Fallo al cargar los datos. Revisa los logs. echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! pause exit /b 1 -:END - -@echo on \ No newline at end of file +:END \ No newline at end of file diff --git a/essenza/templates/cart/cart_detail.html b/essenza/templates/cart/cart_detail.html index 51e0834..c9dd650 100644 --- a/essenza/templates/cart/cart_detail.html +++ b/essenza/templates/cart/cart_detail.html @@ -409,7 +409,7 @@

Efectivo

-

Datos de Envío para Contrarrembolso

+

Datos de Envío para Contrarreembolso

From 41205c559b855c319a05cfb7d6daf9c49c50c0c4 Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 14:09:43 +0100 Subject: [PATCH 2/7] =?UTF-8?q?A=C3=B1adidos=20archivos=20para=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- essenza/Dockerfile | 32 ++++++++++++++++++++++++++++++++ essenza/entrypoint.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 essenza/Dockerfile create mode 100644 essenza/entrypoint.sh diff --git a/essenza/Dockerfile b/essenza/Dockerfile new file mode 100644 index 0000000..7dffc4f --- /dev/null +++ b/essenza/Dockerfile @@ -0,0 +1,32 @@ +# Usamos Python 3.10 (ajustado para compatibilidad) +FROM python:3.10-slim + +# Evita que Python genere archivos .pyc y buffer de salida +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +# Directorio de trabajo dentro del contenedor +WORKDIR /app + +# Instalamos dependencias del sistema necesarias para compilar algunas librerías +RUN apt-get update && apt-get install -y --no-install-recommends \ + gcc \ + libpq-dev \ + && rm -rf /var/lib/apt/lists/* + +# Instalamos dependencias de Python +COPY requirements.txt /app/ +RUN pip install --upgrade pip && pip install -r requirements.txt + +# Copiamos todo el código +COPY . /app/ + +# Copiamos y damos permisos al script de entrada +COPY entrypoint.sh /app/entrypoint.sh +RUN chmod +x /app/entrypoint.sh + +# Exponemos el puerto 8000 +EXPOSE 8000 + +# Ejecutamos el script al iniciar +ENTRYPOINT ["/app/entrypoint.sh"] \ No newline at end of file diff --git a/essenza/entrypoint.sh b/essenza/entrypoint.sh new file mode 100644 index 0000000..95b1488 --- /dev/null +++ b/essenza/entrypoint.sh @@ -0,0 +1,32 @@ +#!/bin/sh +set -e + +echo "--- 1. Instalando dependencias (pip) ---" +pip install -r requirements.txt + +echo "--- 2. Generando migraciones ---" +python manage.py makemigrations + +echo "--- 3. Recolectando estáticos ---" +python manage.py collectstatic --no-input + +echo "--- 4. Vaciando DB (Flush) ---" +python manage.py flush --no-input + +echo "--- 5. Aplicando Migraciones (Migrate) ---" +python manage.py migrate --no-input + +echo "--- 6. Copiando imagenes de sampleo ---" +mkdir -p media +cp -r _sample_assets/* media/ 2>/dev/null || true + +echo "--- 7. Cargando datos de USER, PRODUCT, ORDER ---" +python manage.py loaddata user/sample/sample.json +python manage.py loaddata product/sample/sample.json +python manage.py loaddata order/sample/sample.json + +echo "======================================================" +echo "!PROCESO COMPLETADO! INICIANDO SERVIDOR EN PUERTO 8000" +echo "======================================================" + +exec python manage.py runserver 0.0.0.0:8000 \ No newline at end of file From eb1c3e7fdb2c379d0673394d6967b4699017632e Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 18:56:16 +0100 Subject: [PATCH 3/7] =?UTF-8?q?A=C3=B1adidos=20readme=20y=20manual=20de=20?= =?UTF-8?q?despliegue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 71 ++++++++++++++- essenza/manual_despliegue.md | 165 +++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 essenza/manual_despliegue.md diff --git a/README.md b/README.md index 52d59f0..161841a 100644 --- a/README.md +++ b/README.md @@ -1 +1,70 @@ -# PGPI-G1.11 \ No newline at end of file +# ESSENZA + +Plataforma de comercio electrónico para la gestión y venta de perfumes. + +--- + +## 📚 Documentación + +| Documento | Descripción | +| :--- | :--- | +| **[⚙️ Manual de Despliegue](./manual_despliegue.md)** | Instrucciones técnicas para el despliegue de la aplicación. | +| **[👤 Manual de Usuario](./manual_usuario.md)** | Guía funcional: navegación, carrito, checkout y gestión de cuenta. | + +--- + +## ⚡ Inicio Rápido + +Acceso inmediato a la aplicación desplegada: +**[🌐 https://pgpi-g1-11.onrender.com/](https://pgpi-g1-11.onrender.com/)** + +--- + +## 📂 Estructura del Proyecto + +~~~text +PGPI-G1.11/ +├── docs/ # Documentación completa de planificación y desarrollo +├── essenza/ # Código fuente del backend (Raíz del proyecto) +│ ├── _sample_assets/ # Imágenes de sampleo +│ ├── cart/ # App de gestión del carrito de compra +│ ├── essenza/ # Configuración principal del proyecto Django +│ ├── info/ # App de información general +│ ├── order/ # App de gestión de pedidos y pagos +│ │ └── samples/ # JSON con pedidos de sampleo +│ ├── product/ # App de catálogo y gestión de productos +│ │ └── samples/ # JSON con productos de sampleo +│ ├── static/ # Recursos estáticos +│ │ └── images/ +│ ├── templates/ # Plantillas HTML +│ ├── user/ # App de autenticación y gestión de usuarios +│ │ └── samples/ # JSON con usuarios de sampleo +│ ├── deploy.sh # Script de construcción para Render (Linux) +│ ├── Dockerfile # Definición de imagen para contenedor Docker +│ ├── entrypoint.sh # Script de arranque del contenedor +│ ├── install.bat # Script de instalación de entorno local (Windows) +│ ├── manage.py # Gestor de línea de comandos Django +│ ├── manual_despliegue.md # Guía técnica de instalación y despliegue +│ ├── manual_usuario.md # Guía funcional para el usuario final +│ ├── Procfile # Comando de inicio para Render +│ ├── requirements.txt # Lista de dependencias del proyecto +│ └── reset_db.bat # Script de reinicio y poblado de BBDD +├── .gitignore # Archivos excluidos del control de versiones +└── README.md +~~~ + +--- + +
+
+

PGPI - Grupo 1.11

+

+ Integrantes: + Nombre 1 • + Nombre 2 • + Nombre 3 • + Nombre 4 +

+

Curso 2025/2026

+
+
\ No newline at end of file diff --git a/essenza/manual_despliegue.md b/essenza/manual_despliegue.md new file mode 100644 index 0000000..4737fc5 --- /dev/null +++ b/essenza/manual_despliegue.md @@ -0,0 +1,165 @@ +# MANUAL DE INSTRUCCIONES PARA EL DESPLIEGUE DEL SISTEMA + +Este documento detalla los pasos necesarios para desplegar la aplicación y validar su funcionamiento. El sistema puede utilizarse en tres modalidades: **Acceso Web** (visualización inmediata), **Despliegue Local** (desarrollo y tests) y **Despliegue en Contenedor** (docker). + +--- + +## 1. ACCESO WEB (RENDER) + +### 1.1. Acceso Directo (Visualización) +Para una visualización rápida del producto final sin necesidad de instalación ni configuración, puede acceder a la versión actualmente desplegada: + +> **URL de Acceso:** https://pgpi-g1-11.onrender.com/ + +> **⚠️ NOTA IMPORTANTE SOBRE LA PERSISTENCIA DE DATOS ⚠️** +> +> El entorno Web en la versión gratuita es volátil. Si la aplicación permanece inactiva durante un periodo prolongado, el servicio se suspenderá automáticamente. Al reactivarse con una nueva petición, la base de datos se restablecerá a su estado inicial, borrando cualquier dato creado previamente por el usuario y restaurando los datos de sampleo. + +### 1.2. Despliegue Propio +Si desea desplegar el proyecto en su propia cuenta de Render para verificar la configuración de infraestructura, siga estos pasos: + +1. Acceda a su Dashboard en Render y seleccione **"+ Add new -> Web Service"**. +2. Conecte el repositorio del proyecto: `https://github.com/alemanrod/PGPI_G1.11` +3. Configure los siguientes parámetros en la sección de **"Settings"**: + +| Parámetro | Valor | +| :--- | :--- | +| **Name** | (Cualquiera, ej: `PGPI_G1.11`) | +| **Region** | Oregon (US West) | +| **Branch** | main | +| **Build Command** | `./deploy.sh` | +| **Start Command** | `gunicorn essenza.wsgi:application --workers 2 --log-file -` | + +4. Configure las **Variables de Entorno** (Environment Variables): + +| Clave | Valor | +| :--- | :--- | +| `DATABASE_URL` | `postgresql://essenza_db_v2_user:kMpvnyby5gZ5AWv2hcDPNfMvXA5EjCtN@dpg-d4hkqindiees73bks7pg-a/essenza_db_v2` | +| `DEBUG` | `False` | +| `DEFAULT_FROM_EMAIL` | `noreply.essenza@gmail.com` | +| `DOMAIN_URL` | `https://pgpi-g1-11.onrender.com` | +| `EMAIL_BACKEND` | `django.core.mail.backends.smtp.EmailBackend` | +| `EMAIL_HOST` | `smtp.sendgrid.net` | +| `EMAIL_HOST_PASSWORD` | `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` | +| `EMAIL_HOST_USER` | `apikey` | +| `EMAIL_PORT` | `587` | +| `EMAIL_USE_TLS` | `True` | +| `PYTHONUNBUFFERED` | `1` | +| `SECRET_KEY` | `django-insecure-7+c*kj699pt34%5ub-x04i3%nlbhc@y+7sdew3+7!z5h-z1k_v` | +| `SENDGRID_API_KEY` | `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` | +| `STRIPE_PUBLIC_KEY` | `pk_test_51SVUbZPSdCEIyPdOHsLiwZa4U88xFMVjtsM8W6mEZaSJ8JTlEGoMHFXv93zToTNltDGIQDk7ZlFBLyiZy4YCww1v00CwClXJ2a` | +| `STRIPE_SECRET_KEY` | `sk_test_51SVUbZPSdCEIyPdOSqQGDmXnAwRXW7xJe2v2HzidEoB8D2Gq9wuA7lbLqBMZXNiQ43rvUvIs49Knh5S84ARPcf0Q00oHj1w0f4` | +| `WEB_CONCURRENCY` | `1` | + +--- + +## 2. DESPLIEGUE LOCAL (WINDOWS) + +Para desplegar la aplicación en un entorno de desarrollo sobre Windows y tener acceso al código fuente, siga estos pasos. + +### 2.1. Preparación del Entorno + +1. Descargue y descomprima el archivo del proyecto (ZIP del entregable) en su equipo. +2. Abra la terminal y navegue hasta la carpeta descomprimida. +3. Ejecute los siguientes comandos para crear y activar el entorno virtual aislado: + +~~~bash +python -m venv venv +./venv\Scripts\activate +~~~ + +*(Debe ver el prefijo `(venv)` en su línea de comandos indicando que el entorno está activo)*. + +### 2.2. Instalación y Carga de Datos + +El proceso de configuración se divide en dos fases automatizadas mediante scripts incluidos en el proyecto. + +#### Fase 1: Construcción de Infraestructura +Ejecute el script de instalación. Este comando descargará las librerías necesarias, generará las migraciones y creará la estructura vacía de la base de datos. + +~~~batch +install.bat +~~~ + +#### Fase 2: Poblado de Datos +Para utilizar la aplicación con contenido, cargue los datos de sampleo (usuarios, productos, pedidos) ejecutando: + +~~~batch +reset_db.bat +~~~ + +> **⚠️ ADVERTENCIA ⚠️** +> +> El script `reset_db.bat` es **destructivo**. Ejecutarlo borrará cualquier dato existente en su base de datos local y la sobrescribirá con los datos de sampleo. + +### 2.3. Ejecución del Servidor +Para iniciar la aplicación, utilice el comando estándar de Django: + +~~~bash +python manage.py runserver +~~~ + +Si todo es correcto, verá un mensaje indicando que el servidor está escuchando en `http://127.0.0.1:8000/`. + +#### 2.3.1. Solución de Problemas (Puerto Ocupado) +Puede ocurrir que el puerto 8000 ya esté ocupado por otra aplicación. Para solucionarlo, ejecute el servidor en otro puerto (ej. 5555): + +~~~bash +python manage.py runserver 5555 +~~~ + +### 2.4. Acceso +Si ha realizado los pasos adecuadamente, puede acceder a la aplicación desde su navegador en: + +* **URL:** http://localhost:8000 (o el puerto que haya elegido). + +Debería visualizar la pantalla de inicio con los datos cargados. + +### 2.5. Ejecución de Tests (Opcional) +Para verificar la integridad técnica del sistema o evaluar módulos específicos, puede ejecutar la batería de pruebas automatizadas: + +~~~bash +python manage.py test +~~~ + +También puede testear módulos específicos añadiendo el nombre de la aplicación al final (ej. order, product, user...): +~~~bash +python manage.py test nombre_app +~~~ + +--- + +## 3. INSTRUCCIONES PARA EL DESPLIEGUE DEL CONTENEDOR (DOCKER) + +Alternativamente, se proporciona una imagen de contenedor lista para usar. + +### 3.1. Requisitos Previos +* **Software:** Docker instalado y en ejecución. +* **Archivo:** Contar con el archivo `pgpi-g1.11_essenza_v3.zip` descargado. + +### 3.2. Instalación de la Imagen + +1. Descomprima el archivo `.zip`. Obtendrá el archivo `pgpi-g1.11_essenza_v3.tar`. +2. Abra una terminal en esa ubicación. +3. Cargue la imagen en Docker ejecutando: + +~~~bash +docker load -i pgpi-g1.11_essenza_v3.tar +~~~ + +Debe recibir el mensaje: `Loaded image: pgpi-g1.11_essenza:v3`. + +### 3.3. Ejecución y Despliegue +Para iniciar el sistema automatizado, ejecute: + +~~~bash +docker run -p 8000:8000 pgpi-g1.11_essenza:v3 +~~~ + +**Nota:** Si el puerto 8000 está ocupado, sustitúyalo por otro (ej. 5555): +~~~bash +docker run -p 5555:8000 pgpi-g1.11_essenza:v3 +~~~ + +### 3.4. Acceso +Acceda desde su navegador a: http://localhost:8000 \ No newline at end of file From 69c9ddbcab9c36a14328e5aa5e87ef8c453d719b Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 18:58:04 +0100 Subject: [PATCH 4/7] =?UTF-8?q?Correci=C3=B3n=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 58 +++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 161841a..179ec8f 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ Plataforma de comercio electrónico para la gestión y venta de perfumes. | Documento | Descripción | | :--- | :--- | -| **[⚙️ Manual de Despliegue](./manual_despliegue.md)** | Instrucciones técnicas para el despliegue de la aplicación. | -| **[👤 Manual de Usuario](./manual_usuario.md)** | Guía funcional: navegación, carrito, checkout y gestión de cuenta. | +| **[⚙️ Manual de Despliegue](./essenza/manual_despliegue.md)** | Instrucciones técnicas para el despliegue de la aplicación. | +| **[👤 Manual de Usuario](./essenza/manual_usuario.md)** | Guía funcional: navegación, carrito, checkout y gestión de cuenta. | --- @@ -24,33 +24,33 @@ Acceso inmediato a la aplicación desplegada: ~~~text PGPI-G1.11/ -├── docs/ # Documentación completa de planificación y desarrollo -├── essenza/ # Código fuente del backend (Raíz del proyecto) -│ ├── _sample_assets/ # Imágenes de sampleo -│ ├── cart/ # App de gestión del carrito de compra -│ ├── essenza/ # Configuración principal del proyecto Django -│ ├── info/ # App de información general -│ ├── order/ # App de gestión de pedidos y pagos -│ │ └── samples/ # JSON con pedidos de sampleo -│ ├── product/ # App de catálogo y gestión de productos -│ │ └── samples/ # JSON con productos de sampleo -│ ├── static/ # Recursos estáticos -│ │ └── images/ -│ ├── templates/ # Plantillas HTML -│ ├── user/ # App de autenticación y gestión de usuarios -│ │ └── samples/ # JSON con usuarios de sampleo -│ ├── deploy.sh # Script de construcción para Render (Linux) -│ ├── Dockerfile # Definición de imagen para contenedor Docker -│ ├── entrypoint.sh # Script de arranque del contenedor -│ ├── install.bat # Script de instalación de entorno local (Windows) -│ ├── manage.py # Gestor de línea de comandos Django -│ ├── manual_despliegue.md # Guía técnica de instalación y despliegue -│ ├── manual_usuario.md # Guía funcional para el usuario final -│ ├── Procfile # Comando de inicio para Render -│ ├── requirements.txt # Lista de dependencias del proyecto -│ └── reset_db.bat # Script de reinicio y poblado de BBDD -├── .gitignore # Archivos excluidos del control de versiones -└── README.md +├── docs/ # Documentación completa de planificación y desarrollo +├── essenza/ # Código fuente del backend (Raíz del proyecto) +│ ├── _sample_assets/ # Imágenes de sampleo +│ ├── cart/ # App de gestión del carrito de compra +│ ├── essenza/ # Configuración principal del proyecto Django +│ ├── info/ # App de información general +│ ├── order/ # App de gestión de pedidos y pagos +│ │ └── samples/ # JSON con pedidos de sampleo +│ ├── product/ # App de catálogo y gestión de productos +│ │ └── samples/ # JSON con productos de sampleo +│ ├── static/ # Recursos estáticos +│ │ └── images/ +│ ├── templates/ # Plantillas HTML +│ ├── user/ # App de autenticación y gestión de usuarios +│ │ └── samples/ # JSON con usuarios de sampleo +│ ├── deploy.sh # Script de construcción para Render (Linux) +│ ├── Dockerfile # Definición de imagen para contenedor Docker +│ ├── entrypoint.sh # Script de arranque del contenedor +│ ├── install.bat # Script de instalación de entorno local (Windows) +│ ├── manage.py # Gestor de línea de comandos Django +│ ├── manual_despliegue.md # Guía técnica de instalación y despliegue +│ ├── manual_usuario.md # Guía funcional para el usuario final +│ ├── Procfile # Comando de inicio para Render +│ ├── requirements.txt # Lista de dependencias del proyecto +│ └── reset_db.bat # Script de reinicio y poblado de BBDD +├── .gitignore # Archivos excluidos del control de versiones +└── README.md ~~~ --- From 1d821dd91b4e9066aad931be791551fa4396e418 Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 19:57:34 +0100 Subject: [PATCH 5/7] =?UTF-8?q?Acualizados=20markdowns=20de=20informaci?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 39 ++++---- essenza/manual_despliegue.md | 165 ------------------------------- essenza/manual_usuario.md | 186 +++++++++++++++++++++++++++++++++++ 3 files changed, 205 insertions(+), 185 deletions(-) delete mode 100644 essenza/manual_despliegue.md create mode 100644 essenza/manual_usuario.md diff --git a/README.md b/README.md index 179ec8f..f0be9cd 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,23 @@ # ESSENZA -Plataforma de comercio electrónico para la gestión y venta de perfumes. +Plataforma de comercio electrónico para la gestión y venta de productos y servicios cosméticos. --- -## 📚 Documentación +## ⚡ Inicio Rápido -| Documento | Descripción | -| :--- | :--- | -| **[⚙️ Manual de Despliegue](./essenza/manual_despliegue.md)** | Instrucciones técnicas para el despliegue de la aplicación. | -| **[👤 Manual de Usuario](./essenza/manual_usuario.md)** | Guía funcional: navegación, carrito, checkout y gestión de cuenta. | +Acceso a la aplicación desplegada: +**[🌐 https://pgpi-g1-11.onrender.com/](https://pgpi-g1-11.onrender.com/)** --- -## ⚡ Inicio Rápido +## 📚 Documentación -Acceso inmediato a la aplicación desplegada: -**[🌐 https://pgpi-g1-11.onrender.com/](https://pgpi-g1-11.onrender.com/)** +Para aprender a utilizar la plataforma, consulta nuestra guía: + +> **[👤 Manual de Usuario](./essenza/manual_usuario.md)** +> +> *Incluye instrucciones paso a paso para el registro, proceso de compra, seguimiento de pedidos y gestión del panel de administración.* --- @@ -56,15 +57,13 @@ PGPI-G1.11/ ---
-
-

PGPI - Grupo 1.11

-

- Integrantes: - Nombre 1 • - Nombre 2 • - Nombre 3 • - Nombre 4 -

-

Curso 2025/2026

-
+

PGPI - Grupo 1.11

+

+ Francisco de Castro • + Celia Suárez • + Carolina Murillo • + Javier Gea • + Alejandro Mantecón +

+

Curso 2025/2026

\ No newline at end of file diff --git a/essenza/manual_despliegue.md b/essenza/manual_despliegue.md deleted file mode 100644 index 4737fc5..0000000 --- a/essenza/manual_despliegue.md +++ /dev/null @@ -1,165 +0,0 @@ -# MANUAL DE INSTRUCCIONES PARA EL DESPLIEGUE DEL SISTEMA - -Este documento detalla los pasos necesarios para desplegar la aplicación y validar su funcionamiento. El sistema puede utilizarse en tres modalidades: **Acceso Web** (visualización inmediata), **Despliegue Local** (desarrollo y tests) y **Despliegue en Contenedor** (docker). - ---- - -## 1. ACCESO WEB (RENDER) - -### 1.1. Acceso Directo (Visualización) -Para una visualización rápida del producto final sin necesidad de instalación ni configuración, puede acceder a la versión actualmente desplegada: - -> **URL de Acceso:** https://pgpi-g1-11.onrender.com/ - -> **⚠️ NOTA IMPORTANTE SOBRE LA PERSISTENCIA DE DATOS ⚠️** -> -> El entorno Web en la versión gratuita es volátil. Si la aplicación permanece inactiva durante un periodo prolongado, el servicio se suspenderá automáticamente. Al reactivarse con una nueva petición, la base de datos se restablecerá a su estado inicial, borrando cualquier dato creado previamente por el usuario y restaurando los datos de sampleo. - -### 1.2. Despliegue Propio -Si desea desplegar el proyecto en su propia cuenta de Render para verificar la configuración de infraestructura, siga estos pasos: - -1. Acceda a su Dashboard en Render y seleccione **"+ Add new -> Web Service"**. -2. Conecte el repositorio del proyecto: `https://github.com/alemanrod/PGPI_G1.11` -3. Configure los siguientes parámetros en la sección de **"Settings"**: - -| Parámetro | Valor | -| :--- | :--- | -| **Name** | (Cualquiera, ej: `PGPI_G1.11`) | -| **Region** | Oregon (US West) | -| **Branch** | main | -| **Build Command** | `./deploy.sh` | -| **Start Command** | `gunicorn essenza.wsgi:application --workers 2 --log-file -` | - -4. Configure las **Variables de Entorno** (Environment Variables): - -| Clave | Valor | -| :--- | :--- | -| `DATABASE_URL` | `postgresql://essenza_db_v2_user:kMpvnyby5gZ5AWv2hcDPNfMvXA5EjCtN@dpg-d4hkqindiees73bks7pg-a/essenza_db_v2` | -| `DEBUG` | `False` | -| `DEFAULT_FROM_EMAIL` | `noreply.essenza@gmail.com` | -| `DOMAIN_URL` | `https://pgpi-g1-11.onrender.com` | -| `EMAIL_BACKEND` | `django.core.mail.backends.smtp.EmailBackend` | -| `EMAIL_HOST` | `smtp.sendgrid.net` | -| `EMAIL_HOST_PASSWORD` | `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` | -| `EMAIL_HOST_USER` | `apikey` | -| `EMAIL_PORT` | `587` | -| `EMAIL_USE_TLS` | `True` | -| `PYTHONUNBUFFERED` | `1` | -| `SECRET_KEY` | `django-insecure-7+c*kj699pt34%5ub-x04i3%nlbhc@y+7sdew3+7!z5h-z1k_v` | -| `SENDGRID_API_KEY` | `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` | -| `STRIPE_PUBLIC_KEY` | `pk_test_51SVUbZPSdCEIyPdOHsLiwZa4U88xFMVjtsM8W6mEZaSJ8JTlEGoMHFXv93zToTNltDGIQDk7ZlFBLyiZy4YCww1v00CwClXJ2a` | -| `STRIPE_SECRET_KEY` | `sk_test_51SVUbZPSdCEIyPdOSqQGDmXnAwRXW7xJe2v2HzidEoB8D2Gq9wuA7lbLqBMZXNiQ43rvUvIs49Knh5S84ARPcf0Q00oHj1w0f4` | -| `WEB_CONCURRENCY` | `1` | - ---- - -## 2. DESPLIEGUE LOCAL (WINDOWS) - -Para desplegar la aplicación en un entorno de desarrollo sobre Windows y tener acceso al código fuente, siga estos pasos. - -### 2.1. Preparación del Entorno - -1. Descargue y descomprima el archivo del proyecto (ZIP del entregable) en su equipo. -2. Abra la terminal y navegue hasta la carpeta descomprimida. -3. Ejecute los siguientes comandos para crear y activar el entorno virtual aislado: - -~~~bash -python -m venv venv -./venv\Scripts\activate -~~~ - -*(Debe ver el prefijo `(venv)` en su línea de comandos indicando que el entorno está activo)*. - -### 2.2. Instalación y Carga de Datos - -El proceso de configuración se divide en dos fases automatizadas mediante scripts incluidos en el proyecto. - -#### Fase 1: Construcción de Infraestructura -Ejecute el script de instalación. Este comando descargará las librerías necesarias, generará las migraciones y creará la estructura vacía de la base de datos. - -~~~batch -install.bat -~~~ - -#### Fase 2: Poblado de Datos -Para utilizar la aplicación con contenido, cargue los datos de sampleo (usuarios, productos, pedidos) ejecutando: - -~~~batch -reset_db.bat -~~~ - -> **⚠️ ADVERTENCIA ⚠️** -> -> El script `reset_db.bat` es **destructivo**. Ejecutarlo borrará cualquier dato existente en su base de datos local y la sobrescribirá con los datos de sampleo. - -### 2.3. Ejecución del Servidor -Para iniciar la aplicación, utilice el comando estándar de Django: - -~~~bash -python manage.py runserver -~~~ - -Si todo es correcto, verá un mensaje indicando que el servidor está escuchando en `http://127.0.0.1:8000/`. - -#### 2.3.1. Solución de Problemas (Puerto Ocupado) -Puede ocurrir que el puerto 8000 ya esté ocupado por otra aplicación. Para solucionarlo, ejecute el servidor en otro puerto (ej. 5555): - -~~~bash -python manage.py runserver 5555 -~~~ - -### 2.4. Acceso -Si ha realizado los pasos adecuadamente, puede acceder a la aplicación desde su navegador en: - -* **URL:** http://localhost:8000 (o el puerto que haya elegido). - -Debería visualizar la pantalla de inicio con los datos cargados. - -### 2.5. Ejecución de Tests (Opcional) -Para verificar la integridad técnica del sistema o evaluar módulos específicos, puede ejecutar la batería de pruebas automatizadas: - -~~~bash -python manage.py test -~~~ - -También puede testear módulos específicos añadiendo el nombre de la aplicación al final (ej. order, product, user...): -~~~bash -python manage.py test nombre_app -~~~ - ---- - -## 3. INSTRUCCIONES PARA EL DESPLIEGUE DEL CONTENEDOR (DOCKER) - -Alternativamente, se proporciona una imagen de contenedor lista para usar. - -### 3.1. Requisitos Previos -* **Software:** Docker instalado y en ejecución. -* **Archivo:** Contar con el archivo `pgpi-g1.11_essenza_v3.zip` descargado. - -### 3.2. Instalación de la Imagen - -1. Descomprima el archivo `.zip`. Obtendrá el archivo `pgpi-g1.11_essenza_v3.tar`. -2. Abra una terminal en esa ubicación. -3. Cargue la imagen en Docker ejecutando: - -~~~bash -docker load -i pgpi-g1.11_essenza_v3.tar -~~~ - -Debe recibir el mensaje: `Loaded image: pgpi-g1.11_essenza:v3`. - -### 3.3. Ejecución y Despliegue -Para iniciar el sistema automatizado, ejecute: - -~~~bash -docker run -p 8000:8000 pgpi-g1.11_essenza:v3 -~~~ - -**Nota:** Si el puerto 8000 está ocupado, sustitúyalo por otro (ej. 5555): -~~~bash -docker run -p 5555:8000 pgpi-g1.11_essenza:v3 -~~~ - -### 3.4. Acceso -Acceda desde su navegador a: http://localhost:8000 \ No newline at end of file diff --git a/essenza/manual_usuario.md b/essenza/manual_usuario.md new file mode 100644 index 0000000..c522d9e --- /dev/null +++ b/essenza/manual_usuario.md @@ -0,0 +1,186 @@ +# MANUAL DE USUARIO · ESSENZA + +## 0. Índice + +1. [Introducción](#1-introducción) +2. [Registro e Inicio de Sesión](#2-registro-e-inicio-de-sesión) + * [2.1. Registro de usuario](#21-registro-de-usuario) + * [2.2. Inicio de sesión](#22-inicio-de-sesión) +3. [Usuario NO registrado (Invitado)](#3-usuario-no-registrado-invitado) + * [3.1. Acciones permitidas](#31-acciones-permitidas) + * [3.2. Carrito de Compra](#32-carrito-de-compra) +4. [Usuario Registrado (Cliente)](#4-usuario-registrado-cliente) + * [4.1. Perfil del Usuario](#41-perfil-del-usuario) + * [4.2. Mis Pedidos](#42-mis-pedidos) +5. [Administrador](#5-administrador) + * [5.1. Gestión de Stock](#51-gestión-de-stock) + * [5.2. Gestión de Productos](#52-gestión-de-productos) + * [5.3. Creación de Productos](#53-creación-de-productos) + * [5.4. Gestión de Pedidos](#54-gestión-de-pedidos) + * [5.5. Gestión de Usuarios](#55-gestión-de-usuarios) + * [5.6. Reportes Administrativos](#56-reportes-administrativos) +6. [Resumen de acciones por rol](#6-resumen-de-acciones-por-rol) + +--- + +## 1. Introducción + +**Essenza** es una aplicación web dedicada a la venta de productos y servicios de cosmética. + +**Los usuarios pueden:** +* Navegar por el escaparate y el catálogo completo. +* Añadir productos al carrito de compra. +* Realizar compras mediante **Tarjeta** o **Contrarreembolso**. +* Localizar pedidos específicos mediante identificador de seguimiento. +* Consultar el historial y estado de sus pedidos (solo usuarios registrados). + +**El personal de administración dispone de un panel especializado para:** +* Administrar el stock e inventario. +* Crear, editar y eliminar productos. +* Gestionar el estado de los pedidos. +* Administrar cuentas de usuarios. +* Analizar el rendimiento de la tienda mediante reportes. + +Este manual detalla el uso de la plataforma según los tres roles disponibles: **Invitado**, **Cliente** y **Administrador**. + +--- + +## 2. Registro e Inicio de Sesión + +### 2.1. Registro de usuario + +Para crear una cuenta nueva y acceder a las funciones de fidelización: + +1. Pulse el **icono de usuario** situado en la esquina superior derecha de la barra de navegación. +2. Seleccione la opción **Registrarse**. +3. Complete el formulario con sus datos personales (Nombre, Email, Contraseña). +4. Confirme el registro. + +### 2.2. Inicio de sesión + +Si ya dispone de cuenta: + +1. Pulse el **icono de usuario**. +2. Seleccione **Iniciar sesión**. +3. Introduzca sus credenciales: + * **Correo electrónico**. + * **Contraseña**. +4. Pulse el botón de entrar. + +--- + +## 3. Usuario NO registrado (Invitado) + +Un usuario invitado puede navegar libremente por la tienda, pero tiene acceso limitado a la gestión de datos. + +### 3.1. Acciones permitidas + +* **Información Legal:** Puede consultar los términos y condiciones pulsando el icono informativo situado en la barra de navegación (esquina superior izquierda). +* **Catálogo:** Acceso completo al escaparate, uso de filtros por categoría y barra de búsqueda. +* **Compra:** Posibilidad de añadir items al carrito y finalizar la compra sin registrarse. +* **Localiza tu envío:** Herramienta para consultar el estado de un pedido puntual. + 1. Acceda a la sección "Localiza tu envío". + 2. Introduzca el **ID de seguimiento** (recibido por email). + 3. Introduzca el **email** utilizado en la compra. + 4. El sistema mostrará el estado actual del pedido. + +### 3.2. Carrito de Compra + +El carrito permite gestionar la compra antes del pago: +* **Gestión:** Modificar cantidades (+) (-) o eliminar productos (papelera). +* **Resumen:** Visualización clara del subtotal y costes de envío. +* **Pago:** Selección del método de pago. + +#### 3.2.1. Pago a contrarreembolso +Al seleccionar la opción **Efectivo**: +1. Se solicitará un formulario con los datos de envío (Dirección, Ciudad, CP). +2. Al pulsar **Finalizar compra**, el pedido se guarda con estado "Pendiente" y se paga al recibirlo. + +#### 3.2.2. Pago con tarjeta (Stripe) +Al seleccionar **Tarjeta**: +1. El usuario es redirigido a la pasarela de pago segura de Stripe. +2. Se introducen los datos bancarios (Número de tarjeta, Fecha, CVC). +3. Tras la validación, el usuario regresa automáticamente a Essenza con la confirmación del pedido. + +--- + +## 4. Usuario Registrado (Cliente) + +Tras iniciar sesión, el cliente obtiene persistencia de datos y acceso al área personal. + +### 4.1. Perfil del Usuario +Desde el panel de perfil, accesible desde el menú de usuario, es posible: +* Visualizar foto, nombre, apellidos y correo asociado. +* **Editar datos:** Modificar información personal o actualizar la foto de perfil. +* **Eliminar cuenta:** Opción para borrar permanentemente los datos del usuario (requiere doble confirmación por seguridad). + +### 4.2. Mis Pedidos +Sección exclusiva para clientes que muestra el historial completo de compras. +* **Vista General:** Lista de todos los pedidos realizados, mostrando fecha, total y estado actual. +* **Vista Detallada:** Haciendo clic en cualquier pedido, se despliega el desglose de productos comprados, dirección de envío utilizada y desglose de cargos. + +--- + +## 5. Administrador + +El rol Administrador tiene acceso al Panel de Gestión Interno para controlar la operativa del negocio. + +### 5.1. Gestión de Stock +Permite visualizar el inventario en tiempo real. +* El administrador puede localizar cualquier producto y **modificar la cifra de stock** directamente. +* Los cambios se reflejan inmediatamente en la web (si el stock llega a 0, el producto aparecerá como "Agotado"). + +### 5.2. Gestión de Productos +Listado maestro de todos los artículos de la tienda. +* Permite buscar productos por nombre, así como filtrarlos. +* Permite **Editar** productos existentes (cambiar precios, descripciones o fotos). +* Permite **Eliminar** productos del catálogo. + +### 5.3. Creación de Productos +Formulario para dar de alta nuevas referencias en la tienda. Campos requeridos: +* **Nombre y Descripción:** Información visible para el cliente. +* **Categoría y Marca:** Para los filtros de búsqueda. +* **Precio:** Valor unitario. +* **Foto (opcional):** Archivo `.jpg` o `.png` representativo. +* **Producto activo:** Disponibilidad para la venta. + +### 5.4. Gestión de Pedidos +Bandeja de entrada de todas las compras realizadas por los usuarios. +* Permite filtrar pedidos por estado (En preparación, Enviados, Entregados). +* Permite ver los detalles de cada pedido. + +#### 5.4.1. Cambio de estado de pedido +Funcionalidad crítica para el flujo de trabajo: +1. El administrador entra en el detalle de un pedido. +2. Selecciona el nuevo estado en la barra del mismo (ej. cambiar de *Pendiente* a *Enviado* cuando sale del almacén). +3. Al guardar, el usuario verá el nuevo estado en su sección "Mis Pedidos" o en el localizador de envíos. + +### 5.5. Gestión de Usuarios +Panel para administrar la base de datos de clientes. +* Permite ver la lista de usuarios registrados. +* Permite ver detalles de contacto. +* Permite desactivar o bloquear usuarios en caso de actividad sospechosa. + +### 5.6. Reportes Administrativos +Cuadro de mandos visual para la toma de decisiones. Muestra gráficas generadas automáticamente sobre: +* **Historial de Ventas:** Listado de todas las ventas realizadas en la web. +* **Productos Top:** Artículos más vendidos. +* **Usuarios Top:** Usuarios con mayor número de gastos realizados. + +--- + +## 6. Resumen de acciones por rol + +| Acción | Invitado | Registrado | Administrador | +| :--- | :---: | :---: | :---: | +| **Ver productos** | ✔ | ✔ | ✔ | +| **Buscar / Filtros** | ✔ | ✔ | ✔ | +| **Añadir al carrito** | ✔ | ✔ | ❌ | +| **Finalizar compra** | ✔ | ✔ | ❌ | +| **Listar TODOS mis pedidos** | ❌ | ✔ | ❌ | +| **Seguimiento de pedido** | ✔ | ✔ | ❌ | +| **Ver TODOS los pedidos (Global)** | ❌ | ❌ | ✔ | +| **Crear / Editar productos** | ❌ | ❌ | ✔ | +| **Actualizar stock** | ❌ | ❌ | ✔ | +| **Gestionar usuarios** | ❌ | ❌ | ✔ | +| **Ver ventas** | ❌ | ❌ | ✔ | \ No newline at end of file From 7188b562766943e6abaae124facb357789b98e9a Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 20:01:01 +0100 Subject: [PATCH 6/7] Cambios menores en el README --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index f0be9cd..95f656e 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,11 @@ Plataforma de comercio electrónico para la gestión y venta de productos y servicios cosméticos. ---- - ## ⚡ Inicio Rápido Acceso a la aplicación desplegada: **[🌐 https://pgpi-g1-11.onrender.com/](https://pgpi-g1-11.onrender.com/)** ---- - ## 📚 Documentación Para aprender a utilizar la plataforma, consulta nuestra guía: @@ -19,8 +15,6 @@ Para aprender a utilizar la plataforma, consulta nuestra guía: > > *Incluye instrucciones paso a paso para el registro, proceso de compra, seguimiento de pedidos y gestión del panel de administración.* ---- - ## 📂 Estructura del Proyecto ~~~text @@ -45,7 +39,6 @@ PGPI-G1.11/ │ ├── entrypoint.sh # Script de arranque del contenedor │ ├── install.bat # Script de instalación de entorno local (Windows) │ ├── manage.py # Gestor de línea de comandos Django -│ ├── manual_despliegue.md # Guía técnica de instalación y despliegue │ ├── manual_usuario.md # Guía funcional para el usuario final │ ├── Procfile # Comando de inicio para Render │ ├── requirements.txt # Lista de dependencias del proyecto From b207a6bb8d3517705dada34c1243d2dc69b09a39 Mon Sep 17 00:00:00 2001 From: FRANCISCO DE CASTRO Date: Thu, 4 Dec 2025 21:19:37 +0100 Subject: [PATCH 7/7] =?UTF-8?q?Correcci=C3=B3n=20de=20scripts=20para=20rea?= =?UTF-8?q?lizaci=C3=B3n=20en=20local?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- essenza/install.bat | 13 +++++++++++-- essenza/reset_db.bat | 27 +++++++++++++++++++-------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/essenza/install.bat b/essenza/install.bat index 845685c..48e1d39 100644 --- a/essenza/install.bat +++ b/essenza/install.bat @@ -6,6 +6,7 @@ REM 1. Verifica entorno virtual. REM 2. Instala dependencias. REM 3. Crea archivos de migracion (Detecta modelos). REM 4. Aplica migraciones (Crea tablas vacias). +REM 5. Recolecta staticfiles. REM --------------------------------------------------------- IF "%VIRTUAL_ENV%"=="" ( @@ -24,8 +25,11 @@ pip install -r requirements.txt IF %ERRORLEVEL% NEQ 0 GOTO :ERROR echo. -echo --- 2. Generando archivos de migracion... -python manage.py makemigrations +echo --- 2. Generando archivos de migracion modularmente... +python manage.py makemigrations cart +python manage.py makemigrations order +python manage.py makemigrations product +python manage.py makemigrations user IF %ERRORLEVEL% NEQ 0 GOTO :ERROR echo. @@ -33,6 +37,11 @@ echo --- 3. Construyendo la Base de Datos... python manage.py migrate --noinput IF %ERRORLEVEL% NEQ 0 GOTO :ERROR +echo. +echo --- 4. Recolectando staticfiles... +python manage.py collectstatic --noinput +IF %ERRORLEVEL% NEQ 0 GOTO :ERROR + echo. echo ======================================================= echo !INSTALACION COMPLETADA! diff --git a/essenza/reset_db.bat b/essenza/reset_db.bat index 3988a7d..4fae7b8 100644 --- a/essenza/reset_db.bat +++ b/essenza/reset_db.bat @@ -2,9 +2,10 @@ REM --------------------------------------------------------- REM NOMBRE: reset_db.bat REM FUNCION: restaura los datos de sampleo de la base de datos. -REM 1. Borra todos los datos. -REM 2. Copia assets multimedia. -REM 3. Carga fixtures. +REM 1. Borra la base de datos. +REM 2. Verifica estado y estructura de tablas. +REM 3. Copia assets multimedia. +REM 4. Carga fixtures. REM --------------------------------------------------------- IF "%VIRTUAL_ENV%"=="" ( @@ -21,13 +22,23 @@ echo. echo !ADVERTENCIA!: Se borraran todos los datos actuales de la BD. echo. -echo --- 1. Limpiando la Base de Datos... -python manage.py flush --noinput -IF %ERRORLEVEL% NEQ 0 GOTO :ERROR +echo --- 1. Eliminando Base de Datos antigua (si la hay)... +IF EXIST db.sqlite3 ( + REM DEL /F /Q [archivo] + REM /F = Fuerza la eliminacion (borra archivos de "Solo lectura") + REM /Q = Modo silencioso (Suprime la confirmacion S/N) + DEL /F /Q db.sqlite3 + echo Archivo db.sqlite3 eliminado. +) ELSE ( + echo No se encontro db.sqlite3, se creara una nueva. +) -REM Ejecutamos migrate por seguridad, por si hay cambios pendientes echo. -echo --- 2. Verificando estructura de tablas... +echo --- 2. Verificando estado y estructura de tablas... +python manage.py makemigrations cart +python manage.py makemigrations order +python manage.py makemigrations product +python manage.py makemigrations user python manage.py migrate --noinput IF %ERRORLEVEL% NEQ 0 GOTO :ERROR