From 1b3a51f2fceb2fef3414bbf262bf96f1028d9199 Mon Sep 17 00:00:00 2001 From: Greg Kempe Date: Fri, 25 Aug 2023 08:53:55 +0200 Subject: [PATCH] strip whitespace django-import-export doesn't treat inputs like form fields in django, so we must explicitly strip whitespace from input fields --- peachjam/resources.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/peachjam/resources.py b/peachjam/resources.py index 5e774fb63..c74e7032c 100644 --- a/peachjam/resources.py +++ b/peachjam/resources.py @@ -210,7 +210,8 @@ class ManyToOneWidget(ManyToManyWidget): def clean(self, value, row=None, *args, **kwargs): if not value: return self.model.objects.none() - return [self.model(**{self.field: v}) for v in value.split(self.separator)] + values = [v.strip() for v in value.split(self.separator)] + return [self.model(**{self.field: v}) for v in values if v] class StripHtmlWidget(CharWidget): @@ -300,6 +301,9 @@ def download_attachment(url, document, nature): return def before_import_row(self, row, **kwargs): + # strip whitespace from all string fields + for k, v in row.items(): + row[k] = v.strip() if isinstance(v, str) else v if kwargs.get("user"): row["created_by"] = kwargs["user"].id if not row.get("skip"):