diff --git a/apiserver/database/fields.py b/apiserver/database/fields.py index 52e7575..1d5e1c5 100644 --- a/apiserver/database/fields.py +++ b/apiserver/database/fields.py @@ -176,6 +176,13 @@ class SafeMapField(MapField, DictValidationMixin): self.error("Empty keys are not allowed in a MapField") +class NullableStringField(StringField): + def validate(self, value): + if value is None: + return + super(NullableStringField, self).validate(value) + + class SafeDictField(DictField, DictValidationMixin): def validate(self, value): self._safe_validate(value) diff --git a/apiserver/database/model/task/task.py b/apiserver/database/model/task/task.py index 0837c01..a442ef7 100644 --- a/apiserver/database/model/task/task.py +++ b/apiserver/database/model/task/task.py @@ -18,6 +18,7 @@ from apiserver.database.fields import ( UnionField, SafeSortedListField, EmbeddedDocumentListField, + NullableStringField, ) from apiserver.database.model import AttributedDocument from apiserver.database.model.base import ProperDictMixin, GetMixin @@ -260,7 +261,7 @@ class Task(AttributedDocument): configuration = SafeMapField(field=EmbeddedDocumentField(ConfigurationItem)) runtime = SafeDictField(default=dict) models: Models = EmbeddedDocumentField(Models, default=Models) - container = SafeMapField(field=StringField(default="")) + container = SafeMapField(field=NullableStringField()) enqueue_status = StringField( choices=get_options(TaskStatus), exclude_by_default=True )