(self, to, inner_path)
| 601 | ws.event("siteChanged", self.site, {"event": ["file_done", inner_path]}) |
| 602 | |
| 603 | def actionFileDelete(self, to, inner_path): |
| 604 | if not self.hasFilePermission(inner_path): |
| 605 | self.log.error("File delete error: you don't own this site & you are not approved by the owner.") |
| 606 | return self.response(to, {"error": "Forbidden, you can only modify your own files"}) |
| 607 | |
| 608 | need_delete = True |
| 609 | file_info = self.site.content_manager.getFileInfo(inner_path) |
| 610 | if file_info and file_info.get("optional"): |
| 611 | # Non-existing optional files won't be removed from content.json, so we have to do it manually |
| 612 | self.log.debug("Deleting optional file: %s" % inner_path) |
| 613 | relative_path = file_info["relative_path"] |
| 614 | content_json = self.site.storage.loadJson(file_info["content_inner_path"]) |
| 615 | if relative_path in content_json.get("files_optional", {}): |
| 616 | del content_json["files_optional"][relative_path] |
| 617 | self.site.storage.writeJson(file_info["content_inner_path"], content_json) |
| 618 | self.site.content_manager.loadContent(file_info["content_inner_path"], add_bad_files=False, force=True) |
| 619 | need_delete = self.site.storage.isFile(inner_path) # File sill exists after removing from content.json (owned site) |
| 620 | |
| 621 | if need_delete: |
| 622 | try: |
| 623 | self.site.storage.delete(inner_path) |
| 624 | except Exception as err: |
| 625 | self.log.error("File delete error: %s" % err) |
| 626 | return self.response(to, {"error": "Delete error: %s" % err}) |
| 627 | |
| 628 | self.response(to, "ok") |
| 629 | |
| 630 | # Send sitechanged to other local users |
| 631 | for ws in self.site.websockets: |
| 632 | if ws != self: |
| 633 | ws.event("siteChanged", self.site, {"event": ["file_deleted", inner_path]}) |
| 634 | |
| 635 | # Find data in json files |
| 636 | def actionFileQuery(self, to, dir_inner_path, query=None): |
nothing calls this directly
no test coverage detected