kopia lustrzana https://github.com/OpenDroneMap/WebODM
rewrote enable_plugin() and disable_plugin() to use pk handle rather than name for model updates as in the original version of the methods. When disable fails, disable, but raise the exception too.
rodzic
fec9437f2d
commit
b65aee6d61
|
@ -325,33 +325,37 @@ def get_dynamic_script_handler(script_path, callback=None, **kwargs):
|
||||||
return handleRequest
|
return handleRequest
|
||||||
|
|
||||||
def enable_plugin(plugin_name):
|
def enable_plugin(plugin_name):
|
||||||
db_plugin = Plugin.objects.get(name=plugin_name) # Use name, not pk, per your schema
|
|
||||||
if db_plugin.enabled:
|
|
||||||
logger.info(f"Plugin {plugin_name} already enabled in DB—skipping enable")
|
|
||||||
return get_plugin_by_name(plugin_name, only_active=False)
|
|
||||||
p = get_plugin_by_name(plugin_name, only_active=False)
|
p = get_plugin_by_name(plugin_name, only_active=False)
|
||||||
p.register()
|
p.register()
|
||||||
|
# Attempt to call plugin enable method
|
||||||
try:
|
try:
|
||||||
|
# Check existence of enable method
|
||||||
if hasattr(p, 'enable'):
|
if hasattr(p, 'enable'):
|
||||||
p.enable()
|
p.enable()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# If enable fails, log warning and raise the exception.
|
||||||
logger.warning(f"Plugin: {plugin_name} enable unsuccessful: {str(e)}")
|
logger.warning(f"Plugin: {plugin_name} enable unsuccessful: {str(e)}")
|
||||||
raise # Propagate error to UI
|
raise # Propagate error to UI, DB state not changed, unsure if plugin operational
|
||||||
db_plugin.enable()
|
# Mark plugin enabled
|
||||||
|
Plugin.objects.get(pk=plugin_name).enable()
|
||||||
return p
|
return p
|
||||||
|
|
||||||
def disable_plugin(plugin_name):
|
def disable_plugin(plugin_name):
|
||||||
db_plugin = Plugin.objects.get(name=plugin_name)
|
|
||||||
if not db_plugin.enabled:
|
|
||||||
logger.info(f"Plugin {plugin_name} already disabled in DB—skipping disable")
|
|
||||||
return get_plugin_by_name(plugin_name, only_active=False)
|
|
||||||
p = get_plugin_by_name(plugin_name, only_active=False)
|
p = get_plugin_by_name(plugin_name, only_active=False)
|
||||||
|
# Attempt to call plugin disable method
|
||||||
try:
|
try:
|
||||||
|
# Check existence of disable method
|
||||||
if hasattr(p, 'disable'):
|
if hasattr(p, 'disable'):
|
||||||
p.disable()
|
p.disable()
|
||||||
except:
|
except:
|
||||||
|
# If enable fails, log warning. Exception not raised up as the
|
||||||
|
# plugin is going to be disabled anyhow. DB state not changed.
|
||||||
logger.warning("Plugin: "+plugin_name+" disable unsuccessful.")
|
logger.warning("Plugin: "+plugin_name+" disable unsuccessful.")
|
||||||
db_plugin.disable()
|
# Disable the plugin even on failure
|
||||||
|
Plugin.objects.get(pk=plugin_name).disable()
|
||||||
|
raise # Propagate the error to the UI.
|
||||||
|
# Mark plugin disabled
|
||||||
|
Plugin.objects.get(pk=plugin_name).disable()
|
||||||
return p
|
return p
|
||||||
|
|
||||||
def delete_plugin(plugin_name):
|
def delete_plugin(plugin_name):
|
||||||
|
|
Ładowanie…
Reference in New Issue