diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index 18b43465b6..8cc12b1dc0 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -57,7 +57,7 @@ from django_otp.models import Device from django_scopes import scopes_disabled from pretix.base.i18n import language -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute from ...helpers.countries import FastCountryField from ...helpers.u2f import pub_key_from_der, websafe_decode @@ -378,7 +378,7 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): { 'user': self, 'messages': msg, - 'url': reverse_absolute_url_global_domain('control:user.settings'), + 'url': mainreverse_absolute('control:user.settings'), 'instance': settings.PRETIX_INSTANCE_NAME, }, event=None, @@ -466,7 +466,7 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): { 'instance': settings.PRETIX_INSTANCE_NAME, 'user': self, - 'url': (reverse_absolute_url_global_domain('control:auth.forgot.recover') + 'url': (mainreverse_absolute('control:auth.forgot.recover') + '?id=%d&token=%s' % (self.id, default_token_generator.make_token(self))) }, None, locale=self.locale, user=self diff --git a/src/pretix/base/notifications.py b/src/pretix/base/notifications.py index 98f4f45287..b254304761 100644 --- a/src/pretix/base/notifications.py +++ b/src/pretix/base/notifications.py @@ -43,7 +43,7 @@ from django.utils.translation import gettext_lazy as _, pgettext_lazy from pretix.base.models import Event, LogEntry from pretix.base.signals import register_notification_types from pretix.base.templatetags.money import money_filter -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute logger = logging.getLogger(__name__) _ALL_TYPES = None @@ -170,7 +170,7 @@ class ParametrizedOrderNotificationType(NotificationType): def build_notification(self, logentry: LogEntry): order = logentry.content_object - order_url = reverse_absolute_url_global_domain( + order_url = mainreverse_absolute( 'control:event.order', kwargs={ 'organizer': logentry.event.organizer.slug, diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 6bbe972daa..93d2144970 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -51,7 +51,7 @@ from pretix.base.signals import ( ) from pretix.celery_app import app from pretix.helpers import OF_SELF, repeatable_reads_transaction -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute logger = logging.getLogger(__name__) @@ -455,7 +455,7 @@ def scheduled_organizer_export(self, organizer: Organizer, schedule: int) -> Non schedule, organizer, exporter, - reverse_absolute_url_global_domain( + mainreverse_absolute( 'control:organizer.export', kwargs={ 'organizer': organizer.slug, @@ -481,7 +481,7 @@ def scheduled_event_export(self, event: Event, schedule: int) -> None: schedule, event, exporter, - reverse_absolute_url_global_domain( + mainreverse_absolute( 'control:event.orders.export', kwargs={ 'event': event.slug, diff --git a/src/pretix/base/services/notifications.py b/src/pretix/base/services/notifications.py index eaa94c1e24..950e111c6e 100644 --- a/src/pretix/base/services/notifications.py +++ b/src/pretix/base/services/notifications.py @@ -37,7 +37,7 @@ from pretix.base.services.tasks import ProfiledTask, TransactionAwareTask from pretix.base.signals import notification from pretix.celery_app import app from pretix.helpers.celery import get_task_priority -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute @app.task(base=TransactionAwareTask, acks_late=True, max_retries=9, default_retry_delay=900) @@ -136,10 +136,10 @@ def send_notification_mail(notification: Notification, user: User): 'site_url': settings.SITE_URL, 'color': settings.PRETIX_PRIMARY_COLOR, 'notification': notification, - 'settings_url': reverse_absolute_url_global_domain( + 'settings_url': mainreverse_absolute( 'control:user.settings.notifications', ), - 'disable_url': reverse_absolute_url_global_domain( + 'disable_url': mainreverse_absolute( 'control:user.settings.notifications.off', kwargs={ 'token': user.notifications_token, diff --git a/src/pretix/base/services/update_check.py b/src/pretix/base/services/update_check.py index 801cb55b2a..af06ece097 100644 --- a/src/pretix/base/services/update_check.py +++ b/src/pretix/base/services/update_check.py @@ -37,7 +37,7 @@ from pretix.base.services.mail import mail from pretix.base.settings import GlobalSettingsObject from pretix.base.signals import periodic_task from pretix.celery_app import app -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute @receiver(signal=periodic_task) @@ -121,7 +121,7 @@ def send_update_notification_email(): ) ), { - 'url': reverse_absolute_url_global_domain('control:global.update') + 'url': mainreverse_absolute('control:global.update') }, ) diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index ef490b437a..b891349dfa 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -139,7 +139,7 @@ from pretix.helpers import OF_SELF, GroupConcat from pretix.helpers.compat import CompatDeleteView from pretix.helpers.dicts import merge_dicts from pretix.helpers.format import SafeFormatter, format_map -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute from pretix.multidomain.urlreverse import eventreverse_absolute from pretix.presale.forms.customer import TokenGenerator @@ -1039,7 +1039,7 @@ class TeamMemberView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, 'user': self, 'organizer': self.request.organizer.name, 'team': instance.team.name, - 'url': reverse_absolute_url_global_domain('control:auth.invite', kwargs={ + 'url': mainreverse_absolute('control:auth.invite', kwargs={ 'token': instance.token }) }, diff --git a/src/pretix/helpers/security.py b/src/pretix/helpers/security.py index 5542c62138..b9aa92456c 100644 --- a/src/pretix/helpers/security.py +++ b/src/pretix/helpers/security.py @@ -35,7 +35,7 @@ from geoip2.errors import AddressNotFoundError from pretix.base.i18n import language from pretix.base.services.mail import mail from pretix.helpers.http import get_client_ip -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute logger = logging.getLogger(__name__) @@ -175,7 +175,7 @@ def handle_login_source(user, request): 'source': src, 'country': Country(str(country)).name if country else _('Unknown country'), 'instance': settings.PRETIX_INSTANCE_NAME, - 'url': reverse_absolute_url_global_domain('control:user.settings') + 'url': mainreverse_absolute('control:user.settings') }, event=None, user=user, diff --git a/src/pretix/helpers/urls.py b/src/pretix/helpers/urls.py index 5fa6fe684c..bb586f2d2b 100644 --- a/src/pretix/helpers/urls.py +++ b/src/pretix/helpers/urls.py @@ -32,10 +32,10 @@ def build_absolute_uri(urlname, args=None, kwargs=None): 'Replace this usage with ', DeprecationWarning ) - return reverse_absolute_url_global_domain(urlname, args, kwargs) + return mainreverse_absolute(urlname, args, kwargs) -def reverse_absolute_url_global_domain(urlname, args=None, kwargs=None): +def mainreverse_absolute(urlname, args=None, kwargs=None): from pretix.multidomain import maindomain_urlconf return urljoin(settings.SITE_URL, reverse(urlname, args=args, kwargs=kwargs, urlconf=maindomain_urlconf)) diff --git a/src/pretix/plugins/paypal2/payment.py b/src/pretix/plugins/paypal2/payment.py index d4e2d43a11..db36544151 100644 --- a/src/pretix/plugins/paypal2/payment.py +++ b/src/pretix/plugins/paypal2/payment.py @@ -56,7 +56,7 @@ from pretix.base.models import Event, Order, OrderPayment, OrderRefund, Quota from pretix.base.payment import BasePaymentProvider, PaymentException from pretix.base.settings import SettingsSandbox from pretix.helpers import OF_SELF -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute from pretix.multidomain.urlreverse import eventreverse, eventreverse_absolute from pretix.plugins.paypal2.client.core.environment import ( LiveEnvironment, SandboxEnvironment, @@ -264,7 +264,7 @@ class PaypalSettingsHolder(BasePaymentProvider): settings_content = "
%s
%s
" % ( _('Please configure a PayPal Webhook to the following endpoint in order to automatically cancel orders ' 'when payments are refunded externally.'), - reverse_absolute_url_global_domain('plugins:paypal2:webhook') + mainreverse_absolute('plugins:paypal2:webhook') ) if self.event.currency not in SUPPORTED_CURRENCIES: @@ -321,7 +321,7 @@ class PaypalSettingsHolder(BasePaymentProvider): ], "partner_config_override": { "partner_logo_url": urllib.parse.urljoin(settings.SITE_URL, static('pretixbase/img/pretix-logo.svg')), - "return_url": reverse_absolute_url_global_domain('plugins:paypal2:isu.return', kwargs={ + "return_url": mainreverse_absolute('plugins:paypal2:isu.return', kwargs={ 'organizer': self.event.organizer.slug, 'event': self.event.slug, }) diff --git a/src/pretix/plugins/stripe/payment.py b/src/pretix/plugins/stripe/payment.py index e8e7ffd83d..a65204f144 100644 --- a/src/pretix/plugins/stripe/payment.py +++ b/src/pretix/plugins/stripe/payment.py @@ -75,7 +75,7 @@ from pretix.base.settings import SettingsSandbox from pretix.helpers import OF_SELF from pretix.helpers.countries import CachedCountries from pretix.helpers.http import get_client_ip -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute from pretix.multidomain.urlreverse import eventreverse_absolute from pretix.plugins.stripe.forms import StripeKeyValidator from pretix.plugins.stripe.models import ( @@ -197,7 +197,7 @@ class StripeSettingsHolder(BasePaymentProvider): ).format( self.settings.connect_client_id, request.session['payment_stripe_oauth_token'], - urllib.parse.quote(reverse_absolute_url_global_domain('plugins:stripe:oauth.return')), + urllib.parse.quote(mainreverse_absolute('plugins:stripe:oauth.return')), ) def settings_content_render(self, request): @@ -229,7 +229,7 @@ class StripeSettingsHolder(BasePaymentProvider): _('Please configure a Stripe Webhook to ' 'the following endpoint in order to automatically cancel orders when charges are refunded externally ' 'and to process asynchronous payment methods like SOFORT.'), - reverse_absolute_url_global_domain('plugins:stripe:webhook') + mainreverse_absolute('plugins:stripe:webhook') ) @property diff --git a/src/tests/helpers/test_urls.py b/src/tests/helpers/test_urls.py index cdf2d98b89..ef1da53458 100644 --- a/src/tests/helpers/test_urls.py +++ b/src/tests/helpers/test_urls.py @@ -22,17 +22,17 @@ from django import urls from django.test import override_settings -from pretix.helpers.urls import reverse_absolute_url_global_domain +from pretix.helpers.urls import mainreverse_absolute def test_site_url_domain(): with override_settings(SITE_URL='https://example.com'): - assert reverse_absolute_url_global_domain('control:auth.login') == 'https://example.com/control/login' + assert mainreverse_absolute('control:auth.login') == 'https://example.com/control/login' def test_site_url_subpath(): with override_settings(SITE_URL='https://example.com/presale'): old_prefix = urls.get_script_prefix() urls.set_script_prefix('/presale/') - assert reverse_absolute_url_global_domain('control:auth.login') == 'https://example.com/presale/control/login' + assert mainreverse_absolute('control:auth.login') == 'https://example.com/presale/control/login' urls.set_script_prefix(old_prefix)