Compare commits

...
3 changed files with 43 additions and 0 deletions
+3
View File
@@ -40,3 +40,6 @@ class SendMailApp(AppConfig):
def ready(self):
from . import signals # NOQA
from . import tasks # NOQA
def uninstalled(self, event):
event.sendmail_rules.update(enabled=False)
@@ -0,0 +1,39 @@
from django.db import migrations
from django.db.models import Exists, OuterRef
def activate_plugin(apps, schema_editor):
Event = apps.get_model("pretixbase", "Event")
ScheduledMail = apps.get_model("sendmail", "ScheduledMail")
Rule = apps.get_model("sendmail", "Rule")
events = (
Event.objects
.exclude(plugins__icontains="pretix.plugins.sendmail")
.filter(
Exists(
ScheduledMail.objects.filter(event=OuterRef('pk'), rule__enabled=True).exclude(
state__in=['completed', 'missed'])
)
)
)
for event in events:
event.enable_plugin('pretix.plugins.sendmail')
event.save(update_fields=['plugins'])
only_completed_rules = Rule.objects.exclude(event__plugins__icontains="pretix.plugins.sendmail",
enabled=False).filter(
~Exists(ScheduledMail.objects.filter(rule=OuterRef('pk')).exclude(state__in=['completed', 'missed']))
)
only_completed_rules.update(enabled=False)
class Migration(migrations.Migration):
dependencies = [
("sendmail", "0012_remove_cross_event_scheduled_mails"),
]
operations = [
migrations.RunPython(activate_plugin),
]
+1
View File
@@ -181,6 +181,7 @@ def sendmail_run_rules(sender, **kwargs):
state=ScheduledMail.STATE_MISSED
)
for m_id in mails.filter(
event__plugins__contains="pretix.plugins.sendmail",
state__in=(ScheduledMail.STATE_SCHEDULED, ScheduledMail.STATE_FAILED),
rule__enabled=True,
event__live=True,