From c3e8f2016f5341a74a3be84a13eed6102250e14d Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 2 Feb 2026 14:30:09 +0100 Subject: [PATCH] Fixed wrong use of Enum type --- modoboa/webmail/constants.py | 8 +++---- modoboa/webmail/factories.py | 3 +-- modoboa/webmail/jobs.py | 4 ++-- modoboa/webmail/lib/sendmail.py | 2 +- modoboa/webmail/migrations/0001_initial.py | 26 ++++++---------------- modoboa/webmail/models.py | 4 ++-- 6 files changed, 17 insertions(+), 30 deletions(-) diff --git a/modoboa/webmail/constants.py b/modoboa/webmail/constants.py index 41e7459e1..7a5499220 100644 --- a/modoboa/webmail/constants.py +++ b/modoboa/webmail/constants.py @@ -21,10 +21,10 @@ class SchedulingState(Enum): EMAIL_SCHEDULING_STATES = ( - (SchedulingState.SCHEDULED, "scheduled"), - (SchedulingState.SENDING, "sending"), - (SchedulingState.SEND_ERROR, "send_error"), - (SchedulingState.MOVE_ERROR, "move_error"), + (SchedulingState.SCHEDULED.value, "scheduled"), + (SchedulingState.SENDING.value, "sending"), + (SchedulingState.SEND_ERROR.value, "send_error"), + (SchedulingState.MOVE_ERROR.value, "move_error"), ) diff --git a/modoboa/webmail/factories.py b/modoboa/webmail/factories.py index cb0ca49a1..51c9d4f1a 100644 --- a/modoboa/webmail/factories.py +++ b/modoboa/webmail/factories.py @@ -4,7 +4,7 @@ import factory from modoboa.admin import factories as admin_factories -from modoboa.webmail import constants, models +from modoboa.webmail import models class ScheduledMessageFactory(factory.django.DjangoModelFactory): @@ -13,7 +13,6 @@ class ScheduledMessageFactory(factory.django.DjangoModelFactory): class Meta: model = models.ScheduledMessage - status = constants.SchedulingState.SCHEDULED account = factory.SubFactory(admin_factories.UserFactory) sender = "sender@test.com" subject = "Scheduled Message" diff --git a/modoboa/webmail/jobs.py b/modoboa/webmail/jobs.py index 9a14a835f..4e48bcc80 100644 --- a/modoboa/webmail/jobs.py +++ b/modoboa/webmail/jobs.py @@ -17,10 +17,10 @@ def send_scheduled_message(message_id: int): def send_scheduled_messages(): messages = models.ScheduledMessage.objects.filter( scheduled_datetime__lte=timezone.now(), - status=constants.SchedulingState.SCHEDULED, + status=constants.SchedulingState.SCHEDULED.value, ) queue = django_rq.get_queue("modoboa") for message in messages: - message.status = constants.SchedulingState.SENDING + message.status = constants.SchedulingState.SENDING.value message.save() queue.enqueue(send_scheduled_message, message_id=message.id) diff --git a/modoboa/webmail/lib/sendmail.py b/modoboa/webmail/lib/sendmail.py index 9a5621f18..300646d0c 100644 --- a/modoboa/webmail/lib/sendmail.py +++ b/modoboa/webmail/lib/sendmail.py @@ -134,7 +134,7 @@ def send_scheduled_message(sched_msg: models.ScheduledMessage) -> bool: ) else: error = str(inst.smtp_error) - sched_msg.status = constants.SchedulingState.SEND_ERROR + sched_msg.status = constants.SchedulingState.SEND_ERROR.value sched_msg.error = error sched_msg.save() return False diff --git a/modoboa/webmail/migrations/0001_initial.py b/modoboa/webmail/migrations/0001_initial.py index a3638b259..db6e6fb0b 100644 --- a/modoboa/webmail/migrations/0001_initial.py +++ b/modoboa/webmail/migrations/0001_initial.py @@ -1,7 +1,6 @@ -# Generated by Django 5.2.10 on 2026-01-31 10:44 +# Generated by Django 5.2.10 on 2026-02-02 13:29 import django.db.models.deletion -import modoboa.webmail.constants from django.conf import settings from django.db import migrations, models @@ -43,24 +42,13 @@ class Migration(migrations.Migration): "status", models.CharField( choices=[ - ( - modoboa.webmail.constants.SchedulingState["SCHEDULED"], - "scheduled", - ), - ( - modoboa.webmail.constants.SchedulingState["SENDING"], - "sending", - ), - ( - modoboa.webmail.constants.SchedulingState["SEND_ERROR"], - "send_error", - ), - ( - modoboa.webmail.constants.SchedulingState["MOVE_ERROR"], - "move_error", - ), + ("scheduled", "scheduled"), + ("sending", "sending"), + ("send_error", "send_error"), + ("move_error", "move_error"), ], - default=modoboa.webmail.constants.SchedulingState["SCHEDULED"], + db_index=True, + default="scheduled", max_length=15, ), ), diff --git a/modoboa/webmail/models.py b/modoboa/webmail/models.py index df4fb8f81..73418f5ef 100644 --- a/modoboa/webmail/models.py +++ b/modoboa/webmail/models.py @@ -23,7 +23,7 @@ class ScheduledMessage(models.Model): imap_uid = models.IntegerField(blank=True, null=True) status = models.CharField( choices=constants.EMAIL_SCHEDULING_STATES, - default=constants.SchedulingState.SCHEDULED, + default=constants.SchedulingState.SCHEDULED.value, max_length=15, db_index=True, ) @@ -57,7 +57,7 @@ class ScheduledMessage(models.Model): f"header {constants.CUSTOM_HEADER_SCHEDULED_ID} {self.id}" ) if code: - self.status = constants.SchedulingState.MOVE_ERROR + self.status = constants.SchedulingState.MOVE_ERROR.value self.error = output self.save() return False