Don't try to delete optional file twice on fileDelete API command

This commit is contained in:
shortcutme 2018-03-20 21:54:33 +01:00
parent 9adec79401
commit 6b926b12a4
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -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.") 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"}) 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) file_info = self.site.content_manager.getFileInfo(inner_path)
if file_info and file_info.get("optional"): 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) self.log.debug("Deleting optional file: %s" % inner_path)
relative_path = file_info["relative_path"] relative_path = file_info["relative_path"]
content_json = self.site.storage.loadJson(file_info["content_inner_path"]) content_json = self.site.storage.loadJson(file_info["content_inner_path"])
@ -571,11 +573,13 @@ class UiWebsocket(object):
del content_json["files_optional"][relative_path] del content_json["files_optional"][relative_path]
self.site.storage.writeJson(file_info["content_inner_path"], content_json) 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) 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)
if need_delete:
try: try:
self.site.storage.delete(inner_path) self.site.storage.delete(inner_path)
except Exception, err: except Exception, err:
self.log.error("File delete error: Exception - %s" % err) self.log.error("File delete error: %s" % err)
return self.response(to, {"error": "Delete error: %s" % err}) return self.response(to, {"error": "Delete error: %s" % err})
self.response(to, "ok") self.response(to, "ok")