pull/2041/head
dgtlmoon 4 months ago
parent c4971927cb
commit ed0ffd67e2

@ -8,7 +8,7 @@ import time
from jinja2 import Template
from .processors import find_processors, get_parent_module
from .processors import find_processors, get_parent_module, get_custom_watch_obj_for_processor
from .safe_jinja import render as jinja_render
from changedetectionio.strtobool import strtobool
from copy import deepcopy
@ -658,25 +658,27 @@ def changedetection_app(config=None, datastore_o=None):
default['proxy'] = ''
# proxy_override set to the json/text list of the items
form_class = forms.processor_text_json_diff_form
# Does it use some custom form? does one exist?
processor_name = datastore.data['watching'][uuid].get('processor', '')
custom_processor_class = next((tpl for tpl in find_processors() if tpl[1] == processor_name), None)
if custom_processor_class:
try:
# Get the parent of the "processor.py" go up one, get the form (kinda spaghetti but its reusing existing code)
parent_module = get_parent_module(custom_processor_class[0])
forms_module = importlib.import_module(f"{parent_module.__name__}.forms")
# Access the 'processor_settings_form' class from the 'forms' module
form_class = getattr(forms_module, 'processor_settings_form')
except ModuleNotFoundError as e:
# Does not have a custom form, and that's quite alright too.
pass
else:
flash(f"Cannot load the edit form for processor/plugin '{custom_processor_class[1]}', plugin missing?", 'error')
processor_classes = next((tpl for tpl in find_processors() if tpl[1] == processor_name), None)
if not processor_classes:
flash(f"Cannot load the edit form for processor/plugin '{processor_classes[1]}', plugin missing?", 'error')
return redirect(url_for('index'))
parent_module = get_parent_module(processor_classes[0])
try:
# Get the parent of the "processor.py" go up one, get the form (kinda spaghetti but its reusing existing code)
forms_module = importlib.import_module(f"{parent_module.__name__}.forms")
# Access the 'processor_settings_form' class from the 'forms' module
form_class = getattr(forms_module, 'processor_settings_form')
except ModuleNotFoundError as e:
# .forms didnt exist
form_class = forms.processor_text_json_diff_form
except AttributeError as e:
# .forms exists but no useful form
form_class = forms.processor_text_json_diff_form
form = form_class(formdata=request.form if request.method == 'POST' else None,
data=default
)
@ -743,10 +745,11 @@ def changedetection_app(config=None, datastore_o=None):
datastore.data['watching'][uuid].update(form.data)
datastore.data['watching'][uuid].update(extra_update_obj)
if request.args.get('unpause_on_save'):
flash("Updated watch - unpaused!")
else:
flash("Updated watch.")
# Recast it if need be to right data Watch handler
watch_class = get_custom_watch_obj_for_processor(form.data.get('processor'))
datastore.data['watching'][uuid] = watch_class(datastore_path=datastore_o.datastore_path, default=datastore.data['watching'][uuid])
flash("Updated watch - unpaused!" if request.args.get('unpause_on_save') else "Updated watch.")
# Re #286 - We wait for syncing new data to disk in another thread every 60 seconds
# But in the case something is added we should save straight away
@ -776,6 +779,7 @@ def changedetection_app(config=None, datastore_o=None):
jq_support = False
watch = datastore.data['watching'].get(uuid)
system_uses_webdriver = datastore.data['settings']['application']['fetch_backend'] == 'html_webdriver'
is_html_webdriver = False

Loading…
Cancel
Save