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