From 4b65b94bd5a88d6bc9b052e2f9bd7b5b6ab9db94 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 17 Jun 2019 14:05:05 +0200 Subject: [PATCH] Disable scopes for all unique ID generation --- src/pretix/base/models/devices.py | 5 ++++- src/pretix/base/models/event.py | 3 ++- src/pretix/base/models/orders.py | 1 + src/pretix/base/models/vouchers.py | 3 ++- src/pretix/presale/views/cart.py | 1 + 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/devices.py b/src/pretix/base/models/devices.py index bba27a0458..0500ad8eca 100644 --- a/src/pretix/base/models/devices.py +++ b/src/pretix/base/models/devices.py @@ -4,11 +4,12 @@ from django.db import models from django.db.models import Max from django.utils.crypto import get_random_string from django.utils.translation import ugettext_lazy as _ -from django_scopes import ScopedManager +from django_scopes import ScopedManager, scopes_disabled from pretix.base.models import LoggedModel +@scopes_disabled() def generate_serial(): serial = get_random_string(allowed_chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', length=16) while Device.objects.filter(unique_serial=serial).exists(): @@ -16,6 +17,7 @@ def generate_serial(): return serial +@scopes_disabled() def generate_initialization_token(): token = get_random_string(length=16, allowed_chars=string.ascii_lowercase + string.digits) while Device.objects.filter(initialization_token=token).exists(): @@ -23,6 +25,7 @@ def generate_initialization_token(): return token +@scopes_disabled() def generate_api_token(): token = get_random_string(length=64, allowed_chars=string.ascii_lowercase + string.digits) while Device.objects.filter(api_token=token).exists(): diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index 7697d7ca37..3c69fdd7d8 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -17,7 +17,7 @@ from django.utils.crypto import get_random_string from django.utils.functional import cached_property from django.utils.timezone import make_aware, now from django.utils.translation import ugettext_lazy as _ -from django_scopes import ScopedManager +from django_scopes import ScopedManager, scopes_disabled from i18nfield.fields import I18nCharField, I18nTextField from pretix.base.models.base import LoggedModel @@ -946,6 +946,7 @@ class SubEvent(EventMixin, LoggedModel): raise ValidationError(_('One or more variations do not belong to this event.')) +@scopes_disabled() def generate_invite_token(): return get_random_string(length=32, allowed_chars=string.ascii_lowercase + string.digits) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index e8d507b886..22d9d07ca9 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -1857,6 +1857,7 @@ class OrderPosition(AbstractPosition): return super().save(*args, **kwargs) + @scopes_disabled() def assign_pseudonymization_id(self): # This omits some character pairs completely because they are hard to read even on screens (1/I and O/0) # and includes only one of two characters for some pairs because they are sometimes hard to distinguish in diff --git a/src/pretix/base/models/vouchers.py b/src/pretix/base/models/vouchers.py index 3f79ad0fc4..75166b6c29 100644 --- a/src/pretix/base/models/vouchers.py +++ b/src/pretix/base/models/vouchers.py @@ -8,7 +8,7 @@ from django.db.models import Q from django.utils.crypto import get_random_string from django.utils.timezone import now from django.utils.translation import pgettext_lazy, ugettext_lazy as _ -from django_scopes import ScopedManager +from django_scopes import ScopedManager, scopes_disabled from ..decimal import round_decimal from .base import LoggedModel @@ -24,6 +24,7 @@ def _generate_random_code(prefix=None): return get_random_string(length=settings.ENTROPY['voucher_code'], allowed_chars=charset) +@scopes_disabled() def generate_code(prefix=None): while True: code = _generate_random_code(prefix=prefix) diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 6977873037..e3c34aa34e 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -160,6 +160,7 @@ class CartActionMixin: return items +@scopes_disabled() def generate_cart_id(request=None, prefix=''): """ Generates a random new cart ID that is not currently in use, with an optional pretix.