1
0
mirror of https://github.com/esphome/esphome.git synced 2025-04-13 14:20:29 +01:00

[dashboard] Rename trash/delete to archive (#8357)

This commit is contained in:
Jesse Hills 2025-03-03 15:24:05 +13:00 committed by GitHub
parent 10eacaccba
commit d9e23fdb5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 11 deletions

View File

@ -39,7 +39,12 @@ from yaml.nodes import Node
from esphome import const, platformio_api, yaml_util from esphome import const, platformio_api, yaml_util
from esphome.helpers import get_bool_env, mkdir_p from esphome.helpers import get_bool_env, mkdir_p
from esphome.storage_json import StorageJSON, ext_storage_path, trash_storage_path from esphome.storage_json import (
StorageJSON,
archive_storage_path,
ext_storage_path,
trash_storage_path,
)
from esphome.util import get_serial_ports, shlex_quote from esphome.util import get_serial_ports, shlex_quote
from esphome.yaml_util import FastestAvailableSafeLoader from esphome.yaml_util import FastestAvailableSafeLoader
@ -936,16 +941,16 @@ class EditRequestHandler(BaseHandler):
self.set_status(200) self.set_status(200)
class DeleteRequestHandler(BaseHandler): class ArchiveRequestHandler(BaseHandler):
@authenticated @authenticated
@bind_config @bind_config
def post(self, configuration: str | None = None) -> None: def post(self, configuration: str | None = None) -> None:
config_file = settings.rel_path(configuration) config_file = settings.rel_path(configuration)
storage_path = ext_storage_path(configuration) storage_path = ext_storage_path(configuration)
trash_path = trash_storage_path() archive_path = archive_storage_path()
mkdir_p(trash_path) mkdir_p(archive_path)
shutil.move(config_file, os.path.join(trash_path, configuration)) shutil.move(config_file, os.path.join(archive_path, configuration))
storage_json = StorageJSON.load(storage_path) storage_json = StorageJSON.load(storage_path)
if storage_json is not None: if storage_json is not None:
@ -953,16 +958,16 @@ class DeleteRequestHandler(BaseHandler):
name = storage_json.name name = storage_json.name
build_folder = os.path.join(settings.config_dir, name) build_folder = os.path.join(settings.config_dir, name)
if build_folder is not None: if build_folder is not None:
shutil.rmtree(build_folder, os.path.join(trash_path, name)) shutil.rmtree(build_folder, os.path.join(archive_path, name))
class UndoDeleteRequestHandler(BaseHandler): class UnArchiveRequestHandler(BaseHandler):
@authenticated @authenticated
@bind_config @bind_config
def post(self, configuration: str | None = None) -> None: def post(self, configuration: str | None = None) -> None:
config_file = settings.rel_path(configuration) config_file = settings.rel_path(configuration)
trash_path = trash_storage_path() archive_path = archive_storage_path()
shutil.move(os.path.join(trash_path, configuration), config_file) shutil.move(os.path.join(archive_path, configuration), config_file)
class LoginHandler(BaseHandler): class LoginHandler(BaseHandler):
@ -1203,8 +1208,10 @@ def make_app(debug=get_bool_env(ENV_DEV)) -> tornado.web.Application:
(f"{rel}download.bin", DownloadBinaryRequestHandler), (f"{rel}download.bin", DownloadBinaryRequestHandler),
(f"{rel}serial-ports", SerialPortRequestHandler), (f"{rel}serial-ports", SerialPortRequestHandler),
(f"{rel}ping", PingRequestHandler), (f"{rel}ping", PingRequestHandler),
(f"{rel}delete", DeleteRequestHandler), (f"{rel}delete", ArchiveRequestHandler),
(f"{rel}undo-delete", UndoDeleteRequestHandler), (f"{rel}undo-delete", UnArchiveRequestHandler),
(f"{rel}archive", ArchiveRequestHandler),
(f"{rel}unarchive", UnArchiveRequestHandler),
(f"{rel}wizard", WizardRequestHandler), (f"{rel}wizard", WizardRequestHandler),
(f"{rel}static/(.*)", StaticFileHandler, {"path": get_static_path()}), (f"{rel}static/(.*)", StaticFileHandler, {"path": get_static_path()}),
(f"{rel}devices", ListDevicesHandler), (f"{rel}devices", ListDevicesHandler),
@ -1229,6 +1236,13 @@ def start_web_server(
config_dir: str, config_dir: str,
) -> None: ) -> None:
"""Start the web server listener.""" """Start the web server listener."""
trash_path = trash_storage_path()
if os.path.exists(trash_path):
_LOGGER.info("Renaming 'trash' folder to 'archive'")
archive_path = archive_storage_path()
shutil.move(trash_path, archive_path)
if socket is None: if socket is None:
_LOGGER.info( _LOGGER.info(
"Starting dashboard web server on http://%s:%s and configuration dir %s...", "Starting dashboard web server on http://%s:%s and configuration dir %s...",

View File

@ -36,6 +36,10 @@ def trash_storage_path() -> str:
return CORE.relative_config_path("trash") return CORE.relative_config_path("trash")
def archive_storage_path() -> str:
return CORE.relative_config_path("archive")
class StorageJSON: class StorageJSON:
def __init__( def __init__(
self, self,