From c0c5b6620dae237867f9382eb6084711b1e22c56 Mon Sep 17 00:00:00 2001 From: Jakub K Date: Wed, 4 Sep 2019 16:06:40 +0200 Subject: [PATCH] SFTPStorage: Fix reopen file Default Django implementation uses os.path.exists and open(), which is wrong. --- storages/backends/sftpstorage.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/storages/backends/sftpstorage.py b/storages/backends/sftpstorage.py index a5dc4dce3..27c276ee8 100644 --- a/storages/backends/sftpstorage.py +++ b/storages/backends/sftpstorage.py @@ -219,6 +219,14 @@ def write(self, content): self._is_dirty = True self._is_read = True + def open(self, mode=None): + if not self.closed: + self.seek(0) + elif self.name and self._storage.exists(self.name): + self.file = self._storage._open(self.name, mode or self.mode) + else: + raise ValueError("The file cannot be reopened.") + def close(self): if self._is_dirty: self._storage._save(self.name, self)