diff --git a/.gitignore b/.gitignore
index b9bcaad6..36052a32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,4 +23,5 @@ stregsystem.log
# nix
.direnv
.envrc
-result
\ No newline at end of file
+result
+/.vscode
diff --git a/stregsystem/templates/stregsystem/error_invalidquickbuy.html b/stregsystem/templates/stregsystem/error_invalidquickbuy.html
index 72e7bd75..16618fa5 100644
--- a/stregsystem/templates/stregsystem/error_invalidquickbuy.html
+++ b/stregsystem/templates/stregsystem/error_invalidquickbuy.html
@@ -2,6 +2,11 @@
{% load stregsystem_extras %}
+{% block head %}
+{{ block.super }}
+{% include "stregsystem/gdpr.html" %}
+{% endblock %}
+
{% block headline %}
Du forsøgte at bruge quickbuy men fejlede.
This incident will be reported.
diff --git a/stregsystem/tests.py b/stregsystem/tests.py
index 97de7230..106126db 100644
--- a/stregsystem/tests.py
+++ b/stregsystem/tests.py
@@ -46,7 +46,12 @@
)
from stregsystem.purchase_heatmap import prepare_heatmap_template_context
from stregsystem.templatetags.stregsystem_extras import caffeine_emoji_render
-from stregsystem.utils import mobile_payment_exact_match_member, strip_emoji, PaymentToolException
+from stregsystem.utils import (
+ mobile_payment_exact_match_member,
+ strip_emoji,
+ PaymentToolException,
+ insert_gdpr_span,
+)
from stregsystem.mail import data_sent
@@ -2283,3 +2288,23 @@ def test_welcome_mail_paid_approved(self, mock_mail_method: MagicMock):
signup_request.approve()
mock_mail_method.assert_called_once()
+
+
+class MiscUtilTests(TestCase):
+ fixtures = ['initial_data']
+
+ def test_gdpr_is_inserted(self):
+ assumed_user = "jokke"
+ assumed_non_user = "nonuser"
+
+ simple_quickbuy = assumed_user
+ simple_gdpr_quickbuy = insert_gdpr_span(simple_quickbuy)
+ expected_simple_gdpr_quickbuy = '' + assumed_user + ''
+
+ self.assertEqual(simple_gdpr_quickbuy, expected_simple_gdpr_quickbuy)
+
+ advanced_quickbuy = assumed_user + " " + assumed_non_user
+ advanced_gdpr_quickbuy = insert_gdpr_span(advanced_quickbuy)
+ expected_advanced_gdpr_quickbuy = '' + assumed_user + ' ' + assumed_non_user
+
+ self.assertEqual(advanced_gdpr_quickbuy, expected_advanced_gdpr_quickbuy)
diff --git a/stregsystem/utils.py b/stregsystem/utils.py
index baafca0e..9c8c1c05 100644
--- a/stregsystem/utils.py
+++ b/stregsystem/utils.py
@@ -180,6 +180,21 @@ def mobilepay_launch_uri(comment: str, amount: float) -> str:
return 'mobilepay://send?{}'.format(urllib.parse.urlencode(query))
+def insert_gdpr_span(text: str) -> str:
+ from stregsystem.models import Member
+
+ parts = text.split(' ')
+
+ for i, part in enumerate(parts):
+ try:
+ Member.objects.get(username__iexact=part)
+ parts[i] = '' + part + ''
+ except Member.DoesNotExist:
+ continue
+
+ return " ".join(parts)
+
+
class stregsystemTestRunner(DiscoverRunner):
def __init__(self, *args, **kwargs):
settings.TEST_MODE = True
diff --git a/stregsystem/views.py b/stregsystem/views.py
index ff060612..f8b8f47b 100644
--- a/stregsystem/views.py
+++ b/stregsystem/views.py
@@ -13,6 +13,8 @@
namedtuple,
)
+from django.utils.safestring import mark_safe
+
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import permission_required
from django.core import management
@@ -54,6 +56,7 @@
parse_csv_and_create_mobile_payments,
PaymentToolException,
make_unprocessed_signups_query,
+ insert_gdpr_span,
)
from .booze import ballmer_peak
@@ -131,9 +134,12 @@ def sale(request, room_id):
try:
username, bought_ids = parser.parse(_pre_process(buy_string))
except parser.QuickBuyError as err:
+ correct = mark_safe(insert_gdpr_span(err.parsed_part))
+ incorrect = mark_safe(insert_gdpr_span(err.failed_part))
+
values = {
- 'correct': err.parsed_part,
- 'incorrect': err.failed_part,
+ 'correct': correct,
+ 'incorrect': incorrect,
'error_ptr': '~' * (len(err.parsed_part)) + '^',
'error_msg': ' ' * (len(err.parsed_part) - 4) + 'Fejl her',
'room': room,