From 6de5660f3181e5b427157526110980a3625864d1 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 4 Jun 2024 11:30:18 +0200 Subject: [PATCH] Add `ABACUS_` env var values for prod --- env_secrets/prod-azure.json | Bin 5192 -> 7620 bytes server/config/settings/base.py | 2 +- .../core/management/commands/cypress_reset.py | 15 +++ .../shop/datatrans_fake_server.py | 92 ++++++++++++++---- 4 files changed, 90 insertions(+), 19 deletions(-) diff --git a/env_secrets/prod-azure.json b/env_secrets/prod-azure.json index edb6cff1c1b1691c018f1f29008214e2a71ee035..f99f83ccf282878b1964ef8065079ba924e38d8f 100644 GIT binary patch literal 7620 zcmV;#9XsLxM@dveQdv+`08X=BXApdU(sOER86ObsF^ykEROUYkQi>*2mJNjfwp{4X zJITWm}29g~o2ob)yV;8cvhoU5txgAZx#~hQBwa&?bF$#@s z$4jYrf8gFGb{H~@YO_qsMiXXAnE=PGsC2_kAx;)5E!WFEY(_@+vOq4*fnHUnYW0U> zXVs%j;v1c^#h#LnY+_(3?o`8Cj2Wf#5@~A3SVSP7!U^=}$ru^So}H*R{C#LSf^vNV z*X1kMfC4fjB#EG`GTjTOpqTE*jU4R*qs$)@CU{*Xb4ZvRRVxdsk{YcQ)C-%)yvDmT zV-3;el=gHp8o&BF>m*MPUB_&Ona!my!O==QOmfXs5n8$Vg^d?Ysy1&C>(^#)+=F-~1b>biN}{M|(96nmXT;^xP<-CH;4*rufE zMGR8chipL}SA#)5 zMT67SLB1E%q%47#4n2YMxBlGjkeLhyk<=4NHp#czf1>%hix6~LW7~lsuG?3^ zLtD&7aTgIUacTVyUG0|1gqpWW5i-sWH_KMIqN4yrX=|c{>Vk-3POY6xZK3kgZ#vKe9M$ zb*gOK$lfh>JMRQGFz&EWjIc>LBA$xMcwMtC%2o^Jv)B`Nk9pLKz-|5lXEqxvwvr&=|1QC*dax47h}JiGE3i=8eb&2ee_qBPoeuY zxF34p%TQ4=-_;saGVl{?!$)iOwV&X#u?Rj93J@sRr5;Yc-2w2vts&yC{OjHj4&f69 znY>P}ows~!_;LU$KkG18ckT8H$8%aOH(!&W{kYQTXp%HS(Fz&tF0QPPP1ZNDm%!!W z{@1-!N%0=Nb^sP9T4K*mgm>FPHu@wZukB^ox{DT!oguUApj+0gk&5FaG`|WY#B!I& zYg-Sg`1ue2;ktu(hKasLnheZMO149inO(6)>&jUR|1EIpoj4&uoHCCQ;#@y≪LZ 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 mw&v;J8Y7f{(TmC?<}=pCQ#f4ig7W;B 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 Cq8Gvd diff --git a/server/config/settings/base.py b/server/config/settings/base.py index a94b145c..fd947667 100644 --- a/server/config/settings/base.py +++ b/server/config/settings/base.py @@ -685,9 +685,9 @@ else: # default settings for python sftpserver test-server ABACUS_EXPORT_SFTP_HOST = env("ABACUS_EXPORT_SFTP_HOST", default="localhost") +ABACUS_EXPORT_SFTP_PASSWORD = env("ABACUS_EXPORT_SFTP_PASSWORD", default="admin") ABACUS_EXPORT_SFTP_PORT = env("ABACUS_EXPORT_SFTP_PORT", default="3373") ABACUS_EXPORT_SFTP_USERNAME = env("ABACUS_EXPORT_SFTP_USERNAME", default="admin") -ABACUS_EXPORT_SFTP_PASSWORD = env("ABACUS_EXPORT_SFTP_PASSWORD", default="admin") # S3 BUCKET CONFIGURATION diff --git a/server/vbv_lernwelt/core/management/commands/cypress_reset.py b/server/vbv_lernwelt/core/management/commands/cypress_reset.py index 0f1371aa..688146b5 100644 --- a/server/vbv_lernwelt/core/management/commands/cypress_reset.py +++ b/server/vbv_lernwelt/core/management/commands/cypress_reset.py @@ -1,6 +1,7 @@ from datetime import datetime import djclick as click +from django.contrib.auth.hashers import make_password from django.utils import timezone from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletion @@ -14,6 +15,7 @@ from vbv_lernwelt.core.constants import ( TEST_STUDENT2_VV_AND_VV_MENTOR_USER_ID, TEST_STUDENT3_USER_ID, TEST_TRAINER1_USER_ID, + TEST_USER_EMPTY_ID, ) from vbv_lernwelt.core.models import Organisation, User from vbv_lernwelt.course.consts import ( @@ -48,6 +50,7 @@ from vbv_lernwelt.self_evaluation_feedback.models import ( CourseCompletionFeedback, SelfEvaluationFeedback, ) +from vbv_lernwelt.shop.models import CheckoutInformation @click.command() @@ -142,6 +145,18 @@ def command( User.objects.all().update(language="de") User.objects.all().update(additional_json_data={}) + CheckoutInformation.objects.filter(user_id=TEST_USER_EMPTY_ID).delete() + User.objects.filter(id=TEST_USER_EMPTY_ID).delete() + user, _ = User.objects.get_or_create( + id=TEST_USER_EMPTY_ID, + username="empty@example.com", + email="empty@example.com", + language="de", + first_name="Flasche", + last_name="Leer", + password=make_password("test"), + ) + if create_assignment_completion or create_assignment_evaluation: print("create assignment completion data for test course") create_test_assignment_submitted_data( diff --git a/server/vbv_lernwelt/shop/datatrans_fake_server.py b/server/vbv_lernwelt/shop/datatrans_fake_server.py index 332ce09f..34fccb10 100644 --- a/server/vbv_lernwelt/shop/datatrans_fake_server.py +++ b/server/vbv_lernwelt/shop/datatrans_fake_server.py @@ -55,31 +55,87 @@ def fake_datatrans_pay_view(request, api_url=""): ) print(response) - if api_url.startswith("/v1/start/") and request.method == "GET": + if api_url.startswith("/v1/start/"): transaction_id = api_url.split("/")[-1] transaction_user = User.objects.filter( additional_json_data__datatrans_transaction_payload__refno=transaction_id ).first() - redirect_url = transaction_user.additional_json_data[ - "datatrans_transaction_payload" - ]["redirect"]["successUrl"] + if transaction_user is None: + return HttpResponse( + content=f""" +

Fake Datatrans Payment

+

No active transaction found for {transaction_id}

+ """, + status=404, + ) - # start new thread which will call webhook after 2 seconds - webhook_url = transaction_user.additional_json_data[ - "datatrans_transaction_payload" - ]["webhook"]["url"] - thread = threading.Thread( - target=call_transaction_complete_webhook, - args=( - webhook_url, - transaction_id, - ), - ) - thread.start() + if request.method == "GET": + return HttpResponse( + content=f""" +

Fake Datatrans Payment

+
+
+ Datatrans payment result status +
+ + - # redirect to url - return redirect(redirect_url + f"?datatransTrxId={transaction_id}") + + + + + +
+
+ +
+
+
+ """ + ) + + elif request.method == "POST": + payment_status = request.POST.get("payment", "settled") + + if payment_status == "settled": + success_url = transaction_user.additional_json_data[ + "datatrans_transaction_payload" + ]["redirect"]["successUrl"] + + # start new thread which will call webhook after 2 seconds + webhook_url = transaction_user.additional_json_data[ + "datatrans_transaction_payload" + ]["webhook"]["url"] + thread = threading.Thread( + target=call_transaction_complete_webhook, + args=( + webhook_url, + transaction_id, + ), + ) + thread.start() + + # redirect to url + return redirect(success_url + f"?datatransTrxId={transaction_id}") + + if payment_status == "cancelled": + cancel_url = transaction_user.additional_json_data[ + "datatrans_transaction_payload" + ]["redirect"]["cancelUrl"] + + # redirect to url + return redirect(cancel_url + f"?datatransTrxId={transaction_id}") + + if payment_status == "failed": + error_url = transaction_user.additional_json_data[ + "datatrans_transaction_payload" + ]["redirect"]["errorUrl"] + + # redirect to url + return redirect(error_url + f"?datatransTrxId={transaction_id}") return HttpResponse( content="unknown api url", content_type="application/json", status=400