diff --git a/src/backend/InvenTree/common/migrations/0044_notificationmessage_charfield_pk.py b/src/backend/InvenTree/common/migrations/0044_notificationmessage_charfield_pk.py new file mode 100644 index 0000000000..79ed6c44e7 --- /dev/null +++ b/src/backend/InvenTree/common/migrations/0044_notificationmessage_charfield_pk.py @@ -0,0 +1,29 @@ +"""Migration to change NotificationMessage object_id fields from PositiveIntegerField to CharField. + +This allows notifications to reference models that use non-integer primary keys, +such as UUIDField (e.g. MachineConfig), without a database overflow error. + +See: https://github.com/inventree/InvenTree/issues/12131 +""" + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0043_auto_20260518_1206'), + ] + + operations = [ + migrations.AlterField( + model_name='notificationmessage', + name='target_object_id', + field=models.CharField(max_length=255), + ), + migrations.AlterField( + model_name='notificationmessage', + name='source_object_id', + field=models.CharField(max_length=255, null=True, blank=True), + ), + ] diff --git a/src/backend/InvenTree/common/models.py b/src/backend/InvenTree/common/models.py index baeb700288..3e903ac9d2 100644 --- a/src/backend/InvenTree/common/models.py +++ b/src/backend/InvenTree/common/models.py @@ -1678,7 +1678,7 @@ class NotificationMessage(models.Model): ContentType, on_delete=models.CASCADE, related_name='notification_target' ) - target_object_id = models.PositiveIntegerField() + target_object_id = models.CharField(max_length=255) target_object = GenericForeignKey('target_content_type', 'target_object_id') @@ -1691,7 +1691,7 @@ class NotificationMessage(models.Model): blank=True, ) - source_object_id = models.PositiveIntegerField(null=True, blank=True) + source_object_id = models.CharField(max_length=255, null=True, blank=True) source_object = GenericForeignKey('source_content_type', 'source_object_id') diff --git a/src/backend/InvenTree/order/tests.py b/src/backend/InvenTree/order/tests.py index e4e04c82ee..bd4adecb93 100644 --- a/src/backend/InvenTree/order/tests.py +++ b/src/backend/InvenTree/order/tests.py @@ -523,7 +523,7 @@ class OrderTest(ExchangeRateMixin, PluginRegistryMixin, TestCase): msg = messages.first() - self.assertEqual(msg.target_object_id, 1) + self.assertEqual(msg.target_object_id, str(1)) self.assertEqual(msg.name, 'Overdue Purchase Order') def test_new_po_notification(self):