From 383b5bbede8dd5b98b55494e1d24ba77ebcd32cd Mon Sep 17 00:00:00 2001 From: Stranck Date: Mon, 13 May 2024 10:25:45 +0200 Subject: [PATCH] Better handling of canceled orders If an order is canceled with a paid fee pretix still returns that it's paid --- app.py | 2 +- email_util.py | 21 +++++++++++---------- ext.py | 9 +++++++-- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app.py b/app.py index 2e51d66..f029ba2 100644 --- a/app.py +++ b/app.py @@ -55,7 +55,7 @@ async def handleException(request, exception): traceback.print_exc() if statusCode == 403: - clear_session(r) + await clear_session(r) return r diff --git a/email_util.py b/email_util.py index 7b0fd01..3ba60fb 100644 --- a/email_util.py +++ b/email_util.py @@ -80,16 +80,17 @@ async def send_unconfirm_message(room_order, orders): issues_html += "" for member in orders: - plain_body = EMAILS_TEXT["ROOM_UNCONFIRM_TEXT"]['plain'].format(member.name, room_order.room_name, issues_plain) - html_body = render_email_template(EMAILS_TEXT["ROOM_UNCONFIRM_TITLE"], EMAILS_TEXT["ROOM_UNCONFIRM_TEXT"]['html'].format(member.name, room_order.room_name, issues_html)) - plain_text = MIMEText(plain_body, "plain") - html_text = MIMEText(html_body, "html") - message = MIMEMultipart("alternative") - message.attach(plain_text) - message.attach(html_text) - message['Subject'] = f'[{EMAIL_SENDER_NAME}] Your room cannot be confirmed' - message['To'] = f"{member.name} <{member.email}>" - memberMessages.append(message) + if(member.status != 'canceled'): + plain_body = EMAILS_TEXT["ROOM_UNCONFIRM_TEXT"]['plain'].format(member.name, room_order.room_name, issues_plain) + html_body = render_email_template(EMAILS_TEXT["ROOM_UNCONFIRM_TITLE"], EMAILS_TEXT["ROOM_UNCONFIRM_TEXT"]['html'].format(member.name, room_order.room_name, issues_html)) + plain_text = MIMEText(plain_body, "plain") + html_text = MIMEText(html_body, "html") + message = MIMEMultipart("alternative") + message.attach(plain_text) + message.attach(html_text) + message['Subject'] = f'[{EMAIL_SENDER_NAME}] Your room cannot be confirmed' + message['To'] = f"{member.name} <{member.email}>" + memberMessages.append(message) if len(memberMessages) == 0: return diff --git a/ext.py b/ext.py index dd36d32..1039f7d 100644 --- a/ext.py +++ b/ext.py @@ -20,6 +20,10 @@ class Order: self.time = time() self.data = data + if(len(self.data['positions']) == 0): + for fee in data['fees']: + if(fee['fee_type'] == "cancellation"): + self.data['status'] = 'c' self.status = {'n': 'pending', 'p': 'paid', 'e': 'expired', 'c': 'canceled'}[self.data['status']] self.secret = data['secret'] @@ -218,8 +222,9 @@ class Order: #if ans['question'] == 40: # del self.answers[i]['options'] # del self.answers[i]['option_identifiers'] - - res = await pretixClient.patch(f'orderpositions/{self.position_id}/', json={'answers': self.answers}, expectedStatusCodes=None) + + ans = [] if self.status == "canceled" else self.answers + res = await pretixClient.patch(f'orderpositions/{self.position_id}/', json={'answers': ans}, expectedStatusCodes=None) if res.status_code != 200: e = res.json()