From b93cf4c9d1e8c1abffb8cb396c65cbb8f0395c87 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 17 Nov 2024 05:26:15 +0000 Subject: [PATCH] Catch errors --- src/backend/InvenTree/plugin/installer.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/backend/InvenTree/plugin/installer.py b/src/backend/InvenTree/plugin/installer.py index 1f02d86334..e4afbc7796 100644 --- a/src/backend/InvenTree/plugin/installer.py +++ b/src/backend/InvenTree/plugin/installer.py @@ -407,15 +407,25 @@ def uninstall_from_plugins_dir(cfg: plugin.models.PluginConfig): if plugin_dir and plugin_dir.is_relative_to(plugin_install_dir): logger.info('Removing plugin directory: %s', plugin_dir) - shutil.rmtree(plugin_dir) + try: + shutil.rmtree(plugin_dir) + except Exception: + logger.exception('Failed to remove plugin directory: %s', plugin_dir) + log_error(f'plugins.{package_name}.uninstall_from_plugins_dir') + raise ValidationError(_('Failed to remove plugin directory')) - # Finally, remote the dist-info directory (if it exists) + # Finally, remove the dist-info directory (if it exists) dist_pkg_name = package_name.replace('-', '_') dist_dirs = plugin_install_dir.glob(f'{dist_pkg_name}-*.dist-info') for dd in dist_dirs: logger.info('Removing dist-info directory: %s', dd) - shutil.rmtree(dd) + try: + shutil.rmtree(dd) + except Exception: + logger.exception('Failed to remove dist-info directory: %s', dd) + log_error(f'plugins.{package_name}.uninstall_from_plugins_dir') + raise ValidationError(_('Failed to remove plugin directory')) def uninstall_from_pip(cfg: plugin.models.PluginConfig):