From 6b926b12a4815927f41877e45734920e87404aaf Mon Sep 17 00:00:00 2001 From: shortcutme Date: Tue, 20 Mar 2018 21:54:33 +0100 Subject: [PATCH] Don't try to delete optional file twice on fileDelete API command --- src/Ui/UiWebsocket.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Ui/UiWebsocket.py b/src/Ui/UiWebsocket.py index 98d72ed0..14ff0e01 100644 --- a/src/Ui/UiWebsocket.py +++ b/src/Ui/UiWebsocket.py @@ -562,8 +562,10 @@ class UiWebsocket(object): self.log.error("File delete error: you don't own this site & you are not approved by the owner.") return self.response(to, {"error": "Forbidden, you can only modify your own files"}) + need_delete = True file_info = self.site.content_manager.getFileInfo(inner_path) if file_info and file_info.get("optional"): + # Non-existing optional files won't be removed from content.json, so we have to do it manually self.log.debug("Deleting optional file: %s" % inner_path) relative_path = file_info["relative_path"] content_json = self.site.storage.loadJson(file_info["content_inner_path"]) @@ -571,12 +573,14 @@ class UiWebsocket(object): del content_json["files_optional"][relative_path] self.site.storage.writeJson(file_info["content_inner_path"], content_json) self.site.content_manager.loadContent(file_info["content_inner_path"], add_bad_files=False, force=True) + need_delete = self.site.storage.isFile(inner_path) # File sill exists after removing from content.json (owned site) - try: - self.site.storage.delete(inner_path) - except Exception, err: - self.log.error("File delete error: Exception - %s" % err) - return self.response(to, {"error": "Delete error: %s" % err}) + if need_delete: + try: + self.site.storage.delete(inner_path) + except Exception, err: + self.log.error("File delete error: %s" % err) + return self.response(to, {"error": "Delete error: %s" % err}) self.response(to, "ok")