diff --git a/src/pretix/plugins/banktransfer/apps.py b/src/pretix/plugins/banktransfer/apps.py index 7bcb6f91a0..aa96b075d4 100644 --- a/src/pretix/plugins/banktransfer/apps.py +++ b/src/pretix/plugins/banktransfer/apps.py @@ -24,6 +24,7 @@ from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ from pretix import __version__ as version +from pretix.base.plugins import PLUGIN_LEVEL_EVENT_ORGANIZER_HYBRID class BankTransferApp(AppConfig): @@ -45,6 +46,7 @@ class BankTransferApp(AppConfig): ((_("Bank transfer"), _("Import bank data")), "plugins:banktransfer:import", {}), ((_("Bank transfer"), _("Export refunds")), "plugins:banktransfer:refunds.list", {}), ] + level = PLUGIN_LEVEL_EVENT_ORGANIZER_HYBRID def ready(self): from . import signals # NOQA diff --git a/src/pretix/plugins/banktransfer/migrations/0012_org_level_plugin.py b/src/pretix/plugins/banktransfer/migrations/0012_org_level_plugin.py new file mode 100644 index 0000000000..db1aad95e8 --- /dev/null +++ b/src/pretix/plugins/banktransfer/migrations/0012_org_level_plugin.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2.16 on 2025-08-20 11:35 + +from django.db import migrations +from django.db.models import Exists, OuterRef + + +def activate_plugin(apps, schema_editor): + Event = apps.get_model('pretixbase', 'Event') + Organizer = apps.get_model('pretixbase', 'Organizer') + qs = Organizer.objects.filter( + Exists(Event.objects.filter(organizer_id=OuterRef("pk"), plugins__contains="pretix.plugins.banktransfer")) + ) + for org in qs: + if "pretix.plugins.banktransfer" not in org.plugins: + org.plugins = ",".join(org.plugins.split(",") + ["pretix.plugins.banktransfer"]) + org.save(update_fields=["plugins"]) + + +class Migration(migrations.Migration): + dependencies = [ + ("banktransfer", "0011_banktransaction_external_id"), + ("pretixbase", "0287_organizer_plugins"), + ] + + operations = [ + migrations.RunPython( + activate_plugin, + migrations.RunPython.noop, + ) + ] diff --git a/src/tests/api/conftest.py b/src/tests/api/conftest.py index 40e0da0ac2..bc2e2742c5 100644 --- a/src/tests/api/conftest.py +++ b/src/tests/api/conftest.py @@ -52,7 +52,7 @@ def client(): @pytest.fixture @scopes_disabled() def organizer(): - return Organizer.objects.create(name='Dummy', slug='dummy') + return Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') @pytest.fixture diff --git a/src/tests/api/test_organizers.py b/src/tests/api/test_organizers.py index 1773252a11..55d9da30b9 100644 --- a/src/tests/api/test_organizers.py +++ b/src/tests/api/test_organizers.py @@ -31,7 +31,7 @@ TEST_ORGANIZER_RES = { "name": "Dummy", "slug": "dummy", "public_url": "http://example.com/dummy/", - "plugins": [], + "plugins": ["pretix.plugins.banktransfer"], } diff --git a/src/tests/base/test_memberships.py b/src/tests/base/test_memberships.py index efe5213190..ca3aae96c8 100644 --- a/src/tests/base/test_memberships.py +++ b/src/tests/base/test_memberships.py @@ -47,7 +47,7 @@ TZ = ZoneInfo('Europe/Berlin') @pytest.fixture(scope='function') def event(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') o.settings.customer_accounts = True event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', diff --git a/src/tests/base/test_orders.py b/src/tests/base/test_orders.py index dcd8bd0918..d9652c0a8a 100644 --- a/src/tests/base/test_orders.py +++ b/src/tests/base/test_orders.py @@ -64,7 +64,7 @@ from pretix.testutils.scope import classscope @pytest.fixture(scope='function') def event(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), @@ -1441,7 +1441,7 @@ class OrderCancelTests(TestCase): class OrderChangeManagerTests(TestCase): def setUp(self): super().setUp() - self.o = Organizer.objects.create(name='Dummy', slug='dummy') + self.o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') with scope(organizer=self.o): self.event = Event.objects.create(organizer=self.o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer') diff --git a/src/tests/base/test_shredders.py b/src/tests/base/test_shredders.py index 0a683d5f50..a7f6aabe61 100644 --- a/src/tests/base/test_shredders.py +++ b/src/tests/base/test_shredders.py @@ -45,7 +45,7 @@ from pretix.base.shredder import ( @pytest.fixture def event(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.ticketoutputpdf' diff --git a/src/tests/concurrency_tests/conftest.py b/src/tests/concurrency_tests/conftest.py index 9983b60fcf..454110429c 100644 --- a/src/tests/concurrency_tests/conftest.py +++ b/src/tests/concurrency_tests/conftest.py @@ -45,7 +45,7 @@ def autoskip(request, settings): @pytest.fixture @scopes_disabled() def organizer(): - return Organizer.objects.create(name='Dummy', slug='dummy') + return Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') @pytest.fixture diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index 4ea17dbc9a..4708d8c9c9 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -60,8 +60,8 @@ class EventsTest(SoupTest): def setUp(self): super().setUp() self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy') - self.orga1 = Organizer.objects.create(name='CCC', slug='ccc') - self.orga2 = Organizer.objects.create(name='MRM', slug='mrm') + self.orga1 = Organizer.objects.create(name='CCC', slug='ccc', plugins='pretix.plugins.banktransfer') + self.orga2 = Organizer.objects.create(name='MRM', slug='mrm', plugins='pretix.plugins.banktransfer') self.event1 = Event.objects.create( organizer=self.orga1, name='30C3', slug='30c3', date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), diff --git a/src/tests/control/test_orders.py b/src/tests/control/test_orders.py index d0aa5e68bf..5a70a77a3c 100644 --- a/src/tests/control/test_orders.py +++ b/src/tests/control/test_orders.py @@ -60,7 +60,7 @@ from pretix.base.services.tax import VATIDFinalError, VATIDTemporaryError @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.stripe,tests.testdummy' diff --git a/src/tests/control/test_orders_bulk.py b/src/tests/control/test_orders_bulk.py index 47c247f70b..aa86160c2a 100644 --- a/src/tests/control/test_orders_bulk.py +++ b/src/tests/control/test_orders_bulk.py @@ -49,7 +49,7 @@ from pretix.base.models import ( @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.stripe,tests.testdummy' diff --git a/src/tests/control/test_organizer.py b/src/tests/control/test_organizer.py index fe7db04568..52feecafb6 100644 --- a/src/tests/control/test_organizer.py +++ b/src/tests/control/test_organizer.py @@ -43,8 +43,8 @@ class OrganizerTest(SoupTest): def setUp(self): super().setUp() self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy') - self.orga1 = Organizer.objects.create(name='CCC', slug='ccc') - self.orga2 = Organizer.objects.create(name='MRM', slug='mrm') + self.orga1 = Organizer.objects.create(name='CCC', slug='ccc', plugins='pretix.plugins.banktransfer') + self.orga2 = Organizer.objects.create(name='MRM', slug='mrm', plugins='pretix.plugins.banktransfer') self.event1 = Event.objects.create( organizer=self.orga1, name='30C3', slug='30c3', date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), diff --git a/src/tests/plugins/autocheckin/conftest.py b/src/tests/plugins/autocheckin/conftest.py index a382f1213b..bbd24d975a 100644 --- a/src/tests/plugins/autocheckin/conftest.py +++ b/src/tests/plugins/autocheckin/conftest.py @@ -31,7 +31,7 @@ from pretix.base.models import Event, Organizer, Team @pytest.fixture @scopes_disabled() def organizer(): - return Organizer.objects.create(name="Dummy", slug="dummy") + return Organizer.objects.create(name="Dummy", slug="dummy", plugins='pretix.plugins.banktransfer') @pytest.fixture diff --git a/src/tests/plugins/banktransfer/test_actions.py b/src/tests/plugins/banktransfer/test_actions.py index 78d87d2d18..81d0e5ad83 100644 --- a/src/tests/plugins/banktransfer/test_actions.py +++ b/src/tests/plugins/banktransfer/test_actions.py @@ -35,7 +35,7 @@ from pretix.plugins.banktransfer.models import BankImportJob, BankTransaction @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer' diff --git a/src/tests/plugins/banktransfer/test_api.py b/src/tests/plugins/banktransfer/test_api.py index 8dfde6b0c9..6d3c9107ea 100644 --- a/src/tests/plugins/banktransfer/test_api.py +++ b/src/tests/plugins/banktransfer/test_api.py @@ -36,7 +36,7 @@ from pretix.plugins.banktransfer.models import BankImportJob, BankTransaction @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer' diff --git a/src/tests/plugins/banktransfer/test_import.py b/src/tests/plugins/banktransfer/test_import.py index e438322405..f0cb54a5f8 100644 --- a/src/tests/plugins/banktransfer/test_import.py +++ b/src/tests/plugins/banktransfer/test_import.py @@ -53,7 +53,7 @@ from pretix.plugins.banktransfer.tasks import process_banktransfers @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.paypal' diff --git a/src/tests/plugins/banktransfer/test_refund.py b/src/tests/plugins/banktransfer/test_refund.py index b895f9dc1c..8cdcb8a510 100644 --- a/src/tests/plugins/banktransfer/test_refund.py +++ b/src/tests/plugins/banktransfer/test_refund.py @@ -34,7 +34,7 @@ from pretix.base.models import ( @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.paypal' diff --git a/src/tests/plugins/banktransfer/test_refund_export.py b/src/tests/plugins/banktransfer/test_refund_export.py index 2cca48ec45..527985ecb3 100644 --- a/src/tests/plugins/banktransfer/test_refund_export.py +++ b/src/tests/plugins/banktransfer/test_refund_export.py @@ -35,7 +35,7 @@ from pretix.plugins.banktransfer.views import ( @pytest.fixture def env(): - o = Organizer.objects.create(name='Dummy', slug='dummy') + o = Organizer.objects.create(name='Dummy', slug='dummy', plugins='pretix.plugins.banktransfer') event = Event.objects.create( organizer=o, name='Dummy', slug='dummy', date_from=now(), plugins='pretix.plugins.banktransfer,pretix.plugins.paypal' diff --git a/src/tests/presale/test_checkout.py b/src/tests/presale/test_checkout.py index 90347b026c..553db80cf5 100644 --- a/src/tests/presale/test_checkout.py +++ b/src/tests/presale/test_checkout.py @@ -70,7 +70,7 @@ class BaseCheckoutTestCase: @scopes_disabled() def setUp(self): super().setUp() - self.orga = Organizer.objects.create(name='CCC', slug='ccc') + self.orga = Organizer.objects.create(name='CCC', slug='ccc', plugins='pretix.plugins.banktransfer') self.event = Event.objects.create( organizer=self.orga, name='30C3', slug='30c3', date_from=datetime.datetime(now().year + 1, 12, 26, tzinfo=datetime.timezone.utc), diff --git a/src/tests/presale/test_order_change.py b/src/tests/presale/test_order_change.py index da2aa1ce0b..af49fc0f18 100644 --- a/src/tests/presale/test_order_change.py +++ b/src/tests/presale/test_order_change.py @@ -55,7 +55,7 @@ class BaseOrdersTest(TestCase): @scopes_disabled() def setUp(self): super().setUp() - self.orga = Organizer.objects.create(name='CCC', slug='ccc') + self.orga = Organizer.objects.create(name='CCC', slug='ccc', plugins='pretix.plugins.banktransfer') self.event = Event.objects.create( organizer=self.orga, name='30C3', slug='30c3', date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc), diff --git a/src/tests/presale/test_orders.py b/src/tests/presale/test_orders.py index ef5d198105..8ce916cae8 100644 --- a/src/tests/presale/test_orders.py +++ b/src/tests/presale/test_orders.py @@ -56,7 +56,7 @@ class BaseOrdersTest(TestCase): @scopes_disabled() def setUp(self): super().setUp() - self.orga = Organizer.objects.create(name='CCC', slug='ccc') + self.orga = Organizer.objects.create(name='CCC', slug='ccc', plugins='pretix.plugins.banktransfer') self.event = Event.objects.create( organizer=self.orga, name='30C3', slug='30c3', date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),