Skip to content

Commit a92b8c9

Browse files
authored
Store conference in the privacy policy acceptance record model (#4099)
1 parent b0fc4fc commit a92b8c9

File tree

6 files changed

+36
-4
lines changed

6 files changed

+36
-4
lines changed

backend/api/orders/mutations.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ def create_order(
6161
except PretixError as e:
6262
return CreateOrderErrors.with_error("non_field_errors", str(e))
6363

64-
record_privacy_policy_acceptance(info.context.request, "checkout-order")
64+
record_privacy_policy_acceptance(
65+
info.context.request, conference_obj, "checkout-order"
66+
)
6567

6668
return_url = urljoin(
6769
settings.FRONTEND_URL,

backend/api/tests/schema/test_create_order.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def test_calls_create_order(graphql_client, user, mocker):
160160
assert billing_address.fiscal_code == "GNLNCH22T27L523A"
161161

162162
assert PrivacyPolicyAcceptanceRecord.objects.filter(
163-
user=user, privacy_policy="checkout-order"
163+
user=user, conference=conference, privacy_policy="checkout-order"
164164
).exists()
165165

166166

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.1.1 on 2024-10-02 10:56
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('conferences', '0047_alter_conferencevoucher_options_and_more'),
11+
('privacy_policy', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='privacypolicyacceptancerecord',
17+
name='conference',
18+
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to='conferences.conference'),
19+
preserve_default=False,
20+
),
21+
]

backend/privacy_policy/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class PrivacyPolicyAcceptanceRecord(models.Model):
5+
conference = models.ForeignKey("conferences.Conference", on_delete=models.PROTECT)
56
user = models.ForeignKey("users.User", on_delete=models.PROTECT)
67
accepted_at = models.DateTimeField(auto_now_add=True)
78
ip_address = models.GenericIPAddressField()

backend/privacy_policy/record.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
from django.http.request import HttpRequest
22
from api.utils import get_ip
3+
from conferences.models.conference import Conference
34
from privacy_policy.models import PrivacyPolicyAcceptanceRecord
45

56

67
def record_privacy_policy_acceptance(
7-
request: HttpRequest, privacy_policy: str
8+
request: HttpRequest, conference: Conference, privacy_policy: str
89
) -> PrivacyPolicyAcceptanceRecord:
910
user = request.user
1011
ip = get_ip(request)
1112
user_agent = request.headers.get("User-Agent", "")
1213

1314
return PrivacyPolicyAcceptanceRecord.objects.create(
1415
user=user,
16+
conference=conference,
1517
ip_address=ip,
1618
user_agent=user_agent,
1719
privacy_policy=privacy_policy,

backend/privacy_policy/tests/test_record.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from conferences.tests.factories import ConferenceFactory
12
import time_machine
23
from django.utils import timezone
34

@@ -6,6 +7,8 @@
67

78

89
def test_record_privacy_policy_acceptance(rf):
10+
conference = ConferenceFactory()
11+
912
request = rf.get("/")
1013
request.user = UserFactory(username="testuser", password="testpassword")
1114
request.headers = {
@@ -16,9 +19,12 @@ def test_record_privacy_policy_acceptance(rf):
1619
accepted_at = timezone.now()
1720

1821
with time_machine.travel(accepted_at, tick=False):
19-
record = record_privacy_policy_acceptance(request, "test-privacy-policy")
22+
record = record_privacy_policy_acceptance(
23+
request, conference, "test-privacy-policy"
24+
)
2025

2126
assert record.user_id == request.user.id
27+
assert record.conference_id == conference.id
2228
assert record.accepted_at == accepted_at
2329
assert record.ip_address == "192.168.0.1"
2430
assert record.user_agent == "Test User Agent"

0 commit comments

Comments
 (0)