fix: resolver 9 issues MAJOR de SonarQube Cloud
- views.py: eliminar parámetros no usados cart_items y product_ids - views.py: reemplazar f-strings sin placeholders por strings normales - base.html: añadir <title>Comercialmeria</title> - add_review.html: asociar label 'Puntuación' con rating-input via for - producto.html: promesa loadReviews con .catch() - gestionar_imagenes.html: mejorar alt text descriptivo - unban.html: quitar atributos deprecados width/cellspacing
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="form-label">Puntuación</label>
|
<label class="form-label" for="rating-input">Puntuación</label>
|
||||||
<div class="star-rating d-flex gap-1" id="star-rating">
|
<div class="star-rating d-flex gap-1" id="star-rating">
|
||||||
{% for i in "12345" %}
|
{% for i in "12345" %}
|
||||||
<span class="star fs-2 {% if form.initial.rating|default:0 >= i|add:0 %}text-warning text-dark{% else %}text-secondary{% endif %}" data-value="{{ i }}" style="cursor: pointer; font-size: 2rem;">★</span>
|
<span class="star fs-2 {% if form.initial.rating|default:0 >= i|add:0 %}text-warning text-dark{% else %}text-secondary{% endif %}" data-value="{{ i }}" style="cursor: pointer; font-size: 2rem;">★</span>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Comercialmeria</title>
|
||||||
<meta name="description" content="Sitio web de comercio local Almeriense">
|
<meta name="description" content="Sitio web de comercio local Almeriense">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||||
<link rel="preload" href="{% static 'css/custom.css' %}" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
<link rel="preload" href="{% static 'css/custom.css' %}" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellpadding="0" style="width: 100%;">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" style="padding: 20px;">
|
<td align="center" style="padding: 20px;">
|
||||||
<table width="600" border="0" cellspacing="0" cellpadding="0" style="border: 1px solid #eeeeee; background-color: #ffffff;">
|
<table width="600" border="0" cellspacing="0" cellpadding="0" style="border: 1px solid #eeeeee; background-color: #ffffff;">
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if producto.primary_image %}
|
{% if producto.primary_image %}
|
||||||
<img src="{{ producto.primary_image.image.url }}" alt="{{ producto.primary_image.alt|default:producto.name }}" class="rounded" style="width: 200px; height: 200px; object-fit: cover;">
|
<img src="{{ producto.primary_image.image.url }}" alt="{{ producto.primary_image.alt|default:producto.name }} - imagen principal" class="rounded" style="width: 200px; height: 200px; object-fit: cover;">
|
||||||
<p class="mt-2 text-muted mb-0">Esta imagen no se puede cambiar desde aquí.</p>
|
<p class="mt-2 text-muted mb-0">Esta imagen no se puede cambiar desde aquí.</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="text-muted">No hay imagen principal asignada.</p>
|
<p class="text-muted">No hay imagen principal asignada.</p>
|
||||||
|
|||||||
@@ -157,6 +157,6 @@ async function loadReviews() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadReviews();
|
loadReviews().catch(console.error);
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
+4
-4
@@ -711,7 +711,7 @@ def _validate_order_items(cart_items, product_map, locked_reservation, reserved_
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _create_order_and_items(request, order_total, cart_items, items_with_totals, product_map, product_ids, payment_method, payment_reference, shipping_address, locked_reservation):
|
def _create_order_and_items(request, order_total, items_with_totals, product_map, payment_method, payment_reference, shipping_address, locked_reservation):
|
||||||
"""Crea la orden y sus items, descuenta stock y marca reserva como completada."""
|
"""Crea la orden y sus items, descuenta stock y marca reserva como completada."""
|
||||||
order = Order.objects.create(
|
order = Order.objects.create(
|
||||||
buyer=request.user if request.user.is_authenticated else None,
|
buyer=request.user if request.user.is_authenticated else None,
|
||||||
@@ -778,7 +778,7 @@ def create_order_from_cart(request, payment_method, payment_reference="", shippi
|
|||||||
if error_msg:
|
if error_msg:
|
||||||
return None, error_msg
|
return None, error_msg
|
||||||
|
|
||||||
order = _create_order_and_items(request, order_total, cart_items, items_with_totals, product_map, product_ids, payment_method, payment_reference, shipping_address, locked_reservation)
|
order = _create_order_and_items(request, order_total, items_with_totals, product_map, payment_method, payment_reference, shipping_address, locked_reservation)
|
||||||
|
|
||||||
_invalidate_product_cache(product_ids)
|
_invalidate_product_cache(product_ids)
|
||||||
cart.items.all().delete()
|
cart.items.all().delete()
|
||||||
@@ -1435,7 +1435,7 @@ def create_paypal_payment(request: HttpRequest):
|
|||||||
else:
|
else:
|
||||||
# Loguear el error
|
# Loguear el error
|
||||||
logger.error("PAYPAL_CREATE_ERROR user_id=%s", request.user.id)
|
logger.error("PAYPAL_CREATE_ERROR user_id=%s", request.user.id)
|
||||||
return JsonResponse({"error": f"Error al crear el pago"}, status=400)
|
return JsonResponse({"error": "Error al crear el pago"}, status=400)
|
||||||
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.error("PAYPAL_SDK_NOT_INSTALLED")
|
logger.error("PAYPAL_SDK_NOT_INSTALLED")
|
||||||
@@ -1443,7 +1443,7 @@ def create_paypal_payment(request: HttpRequest):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = str(e)
|
error_msg = str(e)
|
||||||
logger.exception("PAYPAL_CREATE_EXCEPTION user_id=%s", request.user.id)
|
logger.exception("PAYPAL_CREATE_EXCEPTION user_id=%s", request.user.id)
|
||||||
return JsonResponse({"error": f"Error al crear el pago"}, status=500)
|
return JsonResponse({"error": "Error al crear el pago"}, status=500)
|
||||||
|
|
||||||
|
|
||||||
@require_GET
|
@require_GET
|
||||||
|
|||||||
Reference in New Issue
Block a user