Café y Código
RUTA DE APRENDIZAJE · PARTE 3 DE 3DESAFÍO FINAL

7.3 Desafío Integrador: Inventario Protegido 🏆

Integra las 10 lecciones prácticas construyendo un sistema de inventario completo con CRUD propio, mensajes de operación, sesiones y control de acceso por grupos/permisos.

Especificación de requerimientos, arquitectura de rutas, código integrador de referencia y rúbrica de verificación.

DESAFÍO FINAL

Integración: sistema de inventario protegido

Desarrollar una aplicación de inventario que permita listar, crear, editar y eliminar productos mediante vistas propias. El proyecto debe utilizar modelos y ORM, plantillas HTML, formularios con POST y CSRF, mensajes de resultado, autenticación con sesiones y autorización por permisos o grupos.

1. Persistencia

Modelo, migraciones y operaciones ORM comprobables.

2. Interfaz

Tabla HTML, formularios propios, confirmación de borrado y alertas.

3. Seguridad

Login, logout por POST, login_required y permisos efectivos en servidor.

4. Evidencia

Capturas, repositorio y demostración de accesos autorizados y denegados.

Mapa de Rutas y Permisos del Sistema Integrado

Conecta las vistas desarrolladas en las lecciones 01 a 10 dentro de tu archivo urls.py asegurándote de aplicar la matriz de seguridad por rol:

config/urls.py — Enrutamiento completo del inventario protegido
PYTHON
1from django.contrib import admin
2from django.urls import path
3from tienda import views as tienda_views
4from cuentas import views as cuentas_views
5
6urlpatterns = [
7 path('admin/', admin.site.urls),
8
9 # Autenticación y sesiones (Lección 07)
10 path('login/', cuentas_views.iniciar_sesion, name='iniciar_sesion'),
11 path('logout/', cuentas_views.cerrar_sesion, name='cerrar_sesion'),
12
13 # CRUD de Inventario Protegido (Lecciones 03, 04, 05, 06, 08, 09 y 10)
14 path('productos/', tienda_views.listado_productos, name='listado_productos'),
15 path('productos/crear/', tienda_views.crear_producto, name='crear_producto'),
16 path('productos/<int:pk>/editar/', tienda_views.editar_producto, name='editar_producto'),
17 path('productos/<int:pk>/eliminar/', tienda_views.eliminar_producto, name='eliminar_producto'),
18]

Checklist de Verificación antes de Entregar

✅ Regla de formularios cumplida: Todos los formularios están escritos en HTML puro con {% csrf_token %} y procesados con request.POST.get() en la vista (sin usar ModelForm).
✅ Validación robusta en servidor: Conversión con Decimal e int dentro de bloques try / except verificando que precios y stocks no sean negativos.
✅ Eliminación segura: El borrado usa get_object_or_404, muestra una plantilla de confirmación y solo ejecuta producto.delete() cuando request.method == 'POST'.
✅ Feedback con messages: Cada creación, edición y eliminación informa su resultado mediante messages.success o messages.warning tras el redirect().
✅ Control de acceso real: Usuarios anónimos son redirigidos a LOGIN_URL; operadores sin grupo/permiso reciben HTTP 403 Forbidden al intentar crear, editar o eliminar.
Guía de apoyo académico

Diseño académico con las 10 videolecciones integradas mediante iframe en las Partes 1 y 2; su visualización también está disponible directamente en la lista de reproducción de YouTube enlazada en cada lección.

Ponte a prueba — Evaluación Integradora

Verifica que dominas el ciclo completo del sistema de inventario protegido antes de pasar al módulo de APIs RESTful.

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.