Regenerate OrderPosition.web_secret when chaning other secrets

This commit is contained in:
Raphael Michel
2025-01-03 15:21:45 +01:00
parent 5a5a551c21
commit 595c042624
6 changed files with 16 additions and 3 deletions

View File

@@ -647,6 +647,8 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet):
order = self.get_object()
order.secret = generate_secret()
for op in order.all_positions.all():
op.web_secret = generate_secret()
op.save(update_fields=["web_secret"])
assign_ticket_secret(
request.event, op, force_invalidate=True, save=True
)

View File

@@ -2425,6 +2425,8 @@ class OrderChangeManager:
elif isinstance(op, self.SplitOperation):
split_positions.append(op.position)
elif isinstance(op, self.RegenerateSecretOperation):
op.web_secret = generate_secret()
op.save(update_fields=["web_secret"])
assign_ticket_secret(
event=self.event, position=op.position, force_invalidate=True, save=True
)
@@ -2531,6 +2533,7 @@ class OrderChangeManager:
'new_order': split_order.code,
})
op.order = split_order
op.web_secret = generate_secret()
assign_ticket_secret(
self.event, position=op, force_invalidate=True,
)

View File

@@ -490,7 +490,9 @@ class OrderPositionChangeForm(forms.Form):
)
operation_secret = forms.BooleanField(
required=False,
label=_('Generate a new secret')
label=_('Generate a new secret'),
help_text=_('This affects both the ticket secret (often used as a QR code) as well as the link used to '
'individually access the ticket.')
)
operation_cancel = forms.BooleanField(
required=False,

View File

@@ -2241,6 +2241,8 @@ class OrderContactChange(OrderView):
changed = True
self.order.secret = generate_secret()
for op in self.order.all_positions.all():
op.web_secret = generate_secret()
op.save(update_fields=["web_secret"])
assign_ticket_secret(
self.request.event, position=op, force_invalidate=True, save=True
)