From b16b53253b1d9ff6805937a4a34bd8d5e50f917b Mon Sep 17 00:00:00 2001
From: Pelle Koster <pelle.koster@geant.org>
Date: Thu, 9 Jan 2025 16:39:12 +0100
Subject: [PATCH] fix setting extras paid status, allow deleting orders for
visitor for testing purposes
---
.../stripe_checkout/management_views.py | 22 +++++++++++++------
.../stripe_checkout/templates/visitors.html | 11 +++++++++-
stripe_checkout/stripe_checkout/urls.py | 3 ++-
3 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/stripe_checkout/stripe_checkout/management_views.py b/stripe_checkout/stripe_checkout/management_views.py
index c5abfc9..5d68fcb 100644
--- a/stripe_checkout/stripe_checkout/management_views.py
+++ b/stripe_checkout/stripe_checkout/management_views.py
@@ -2,7 +2,7 @@ from typing import Sequence
from django.shortcuts import redirect, render
from django.contrib.auth.decorators import login_required
-from stripe_checkout.stripe_checkout.models import ItemKind, PricedItem
+from stripe_checkout.stripe_checkout.models import ItemKind, Order, PricedItem
from . import visit
from django.views.decorators.http import require_GET, require_POST
@@ -47,12 +47,13 @@ def update_visitor(request, visitor_id):
data = request.POST
all_answers = {}
for extra in all_extras:
- question = extra.visit_checkout_question_id
- answer = extra.visit_checkout_answer_id
- all_answers.setdefault(question, set())
- if data.get(f"{question}:{answer}"):
- all_answers[question].add(answer)
-
+ for question, answer in [
+ (extra.visit_checkout_question_id, extra.visit_checkout_answer_id),
+ (extra.visit_paid_question_id, extra.visit_paid_answer_id),
+ ]:
+ all_answers.setdefault(question, set())
+ if data.get(f"{question}:{answer}"):
+ all_answers[question].add(answer)
for question, answers in all_answers.items():
visitor.set_answers(question, answers)
if registration_type := data.get("registration_type"):
@@ -60,3 +61,10 @@ def update_visitor(request, visitor_id):
visitor.paid = data.get("paid")
api.update_visitor(visitor)
return redirect("stripe_checkout:list-visitors")
+
+
+@login_required
+@require_POST
+def delete_orders(request, visitor_id):
+ Order.objects.filter(visitor_id=visitor_id).delete()
+ return redirect("stripe_checkout:list-visitors")
diff --git a/stripe_checkout/stripe_checkout/templates/visitors.html b/stripe_checkout/stripe_checkout/templates/visitors.html
index aa73570..2376d6a 100644
--- a/stripe_checkout/stripe_checkout/templates/visitors.html
+++ b/stripe_checkout/stripe_checkout/templates/visitors.html
@@ -6,6 +6,7 @@
{% block body %}
<div>
<h1>Manage visitors</h1>
+ <h2 style="color: red">Warning: Be careful, you may break things here</h2>
<table>
<thead>
<tr>
@@ -51,7 +52,7 @@
<span>(paid <span>
<input type="checkbox"
form="{{ visitor.id }}_checkout_update_form"
- name="{{ item.visit_checkout_question_id }}:{{ item.visit_checkout_answer_id }}:paid"
+ name="{{ item.visit_paid_question_id }}:{{ item.visit_paid_answer_id }}"
autocomplete="off"
{% if visitor|has_paid:item %}checked{% endif %}>
</span>)</span>
@@ -65,6 +66,14 @@
<button>Update</button>
</form>
</td>
+ <td>
+ <form id="{{ visitor.id }}_delete_orders"
+ method="post"
+ action="{% url 'stripe_checkout:delete-orders' visitor_id=visitor.id %}">
+ {% csrf_token %}
+ <button>Delete orders</button>
+ </form>
+ </td>
</tr>
{% endfor %}
</tbody>
diff --git a/stripe_checkout/stripe_checkout/urls.py b/stripe_checkout/stripe_checkout/urls.py
index 24b8482..087feb7 100644
--- a/stripe_checkout/stripe_checkout/urls.py
+++ b/stripe_checkout/stripe_checkout/urls.py
@@ -1,6 +1,6 @@
from django.urls import include, path, re_path
-from .management_views import update_visitor, list_visitors, index
+from .management_views import delete_orders, update_visitor, list_visitors, index
from .visit_views import stripe_event, checkout, checkout_success
visitor_id = r"(?P<visitor_id>[a-z0-9]+)"
@@ -11,6 +11,7 @@ urlpatterns = [
"visitors/",
include(
[
+ re_path(f"{visitor_id}/delete_orders/", delete_orders, name="delete-orders"),
re_path(f"{visitor_id}/", update_visitor, name="update-visitor"),
path("", list_visitors, name="list-visitors"),
]
--
GitLab