Corrige bugs de la revisión de home/views.py (dinero, bypass de pago, 500s)
Seguridad / dinero: - store_novawow_view: recalcula precios y valida ítems contra la BD (Item) en vez de confiar en el precio/ítems que manda el cliente; guarda en sesión un carrito ya validado para la entrega - *_success_view (x9): @require_paid_stripe verifica el pago real en Stripe por session_id (Stripe lo añade a la success_url) y marca StripeLog.fulfilled para evitar re-entregas; cierra el bypass de ir directo a la success-url sin pagar - gold_character_view: deja de truncar el precio (int(4.99)->4); pasa el precio real Correctitud / 500s: - change_password_view: .get(...,'') evita AttributeError si falta un campo - revive_character_view: lógica de éxito corregida (vacío=éxito, no vacío=error, None=fallo de comunicación) — antes marcaba error como éxito y caía a HTML - store category y recruit_a_friend: guardas para Category.DoesNotExist y cuenta None Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -296,6 +296,7 @@ class StripeLog(models.Model):
|
||||
mode = models.CharField(max_length=10, choices=[("test", "Test"), ("live", "Live")]) # Modo de Stripe
|
||||
character_name = models.CharField(max_length=100) # Nombre del personaje que compró
|
||||
timestamp = models.DateTimeField(auto_now_add=True) # Fecha y hora
|
||||
fulfilled = models.BooleanField(default=False) # Si la entrega ya se procesó (evita re-entregas)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.username} compró {self.product_name} por {self.amount}€ ({self.mode})"
|
||||
|
||||
Reference in New Issue
Block a user