Improved order position secret generation

This commit is contained in:
Raphael Michel
2020-02-13 17:04:50 +01:00
parent 65db8cd583
commit 19c13d7f38

View File

@@ -1910,7 +1910,8 @@ class OrderPosition(AbstractPosition):
if self.tax_rate is None: if self.tax_rate is None:
self._calculate_tax() self._calculate_tax()
self.order.touch() self.order.touch()
if self.pk is None: if not self.secret:
with scopes_disabled():
while OrderPosition.all.filter(secret=self.secret).exists(): while OrderPosition.all.filter(secret=self.secret).exists():
self.secret = generate_position_secret() self.secret = generate_position_secret()
@@ -1928,6 +1929,7 @@ class OrderPosition(AbstractPosition):
charset = list('ABCDEFGHJKLMNPQRSTUVWXYZ3789') charset = list('ABCDEFGHJKLMNPQRSTUVWXYZ3789')
while True: while True:
code = get_random_string(length=10, allowed_chars=charset) code = get_random_string(length=10, allowed_chars=charset)
with scopes_disabled():
if not OrderPosition.all.filter(pseudonymization_id=code).exists(): if not OrderPosition.all.filter(pseudonymization_id=code).exists():
self.pseudonymization_id = code self.pseudonymization_id = code
return return