diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 6ff45a5a0..bfa21a658 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -417,7 +417,7 @@ class SettingsProxy: else: value = None if self._parent: - value = self._parent.settings.get(key) + value = self._parent.settings.get(key, as_type=str) if value is None and key in DEFAULTS: value = DEFAULTS[key]['default'] if value is None and default is not None: diff --git a/src/tests/base/test_settings.py b/src/tests/base/test_settings.py index eff675596..900beb348 100644 --- a/src/tests/base/test_settings.py +++ b/src/tests/base/test_settings.py @@ -216,7 +216,7 @@ class SettingsTestCase(TestCase): self.assertTrue(f.name.endswith(val.name)) f.close() - def test_detect_file_value(self): + def test_unserialize_file_value(self): val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg") default_storage.save(val.name, val) val.close() @@ -227,6 +227,28 @@ class SettingsTestCase(TestCase): self.assertTrue(f.name.endswith(val.name)) f.close() + def test_autodetect_file_value(self): + val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg") + default_storage.save(val.name, val) + val.close() + self.event.settings.set('test', val) + self.event.settings._flush() + f = self.event.settings.get('test') + self.assertIsInstance(f, File) + self.assertTrue(f.name.endswith(val.name)) + f.close() + + def test_autodetect_file_value_of_parent(self): + val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg") + default_storage.save(val.name, val) + val.close() + self.organizer.settings.set('test', val) + self.organizer.settings._flush() + f = self.event.settings.get('test') + self.assertIsInstance(f, File) + self.assertTrue(f.name.endswith(val.name)) + f.close() + def _test_serialization(self, val, as_type): self.event.settings.set('test', val) self.event.settings._flush()