diff --git a/migrations/0020_alter_validationrequest_status_reason_and_more.py b/migrations/0020_alter_validationrequest_status_reason_and_more.py new file mode 100644 index 0000000..2674e18 --- /dev/null +++ b/migrations/0020_alter_validationrequest_status_reason_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 5.2.4 on 2025-12-29 21:10 + +import apps.ifc_validation_models.models +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ifc_validation_models', '0019_alter_validationrequest_file'), + ] + + operations = [ + migrations.AlterField( + model_name='validationrequest', + name='status_reason', + field=apps.ifc_validation_models.models.SanitizedCharField(blank=True, help_text='Reason for current status.', null=True), + ), + migrations.AlterField( + model_name='validationtask', + name='status_reason', + field=apps.ifc_validation_models.models.SanitizedCharField(blank=True, help_text='Reason for current status.', null=True), + ), + ] diff --git a/models.py b/models.py index 91ca44c..a8b3c6a 100644 --- a/models.py +++ b/models.py @@ -39,6 +39,18 @@ def get_user_context(): raise ImproperlyConfigured(msg) +class SanitizedCharField(models.CharField): + """ + A CharField that sanitizes input by replacing null characters. + """ + + def get_prep_value(self, value): + value = super().get_prep_value(value) + if value is not None: + value = value.replace('\x00', '') + return value + + class SoftDeletableModel(models.Model): """An abstract base class that provides soft-deletable Models.""" @@ -831,8 +843,10 @@ class Channel(models.TextChoices): help_text="Current status of the Validation Request.", ) - status_reason = models.TextField( - null=True, blank=True, help_text="Reason for current status." + status_reason = SanitizedCharField( + null=True, + blank=True, + help_text="Reason for current status." ) started = models.DateTimeField( @@ -1026,7 +1040,7 @@ class Status(models.TextChoices): help_text="Current status of the Validation Task.", ) - status_reason = models.TextField( + status_reason = SanitizedCharField( null=True, blank=True, help_text="Reason for current status."