diff --git a/changedetectionio/blueprint/tags/__init__.py b/changedetectionio/blueprint/tags/__init__.py index 7a49822ba..e826aea03 100644 --- a/changedetectionio/blueprint/tags/__init__.py +++ b/changedetectionio/blueprint/tags/__init__.py @@ -103,7 +103,7 @@ def construct_blueprint(datastore: ChangeDetectionStore): default = datastore.data['settings']['application']['tags'].get(uuid) - form = forms.watchForm(formdata=request.form if request.method == 'POST' else None, + form = forms.processor_text_json_diff_form(formdata=request.form if request.method == 'POST' else None, data=default, ) form.datastore=datastore # needed? @@ -126,7 +126,7 @@ def construct_blueprint(datastore: ChangeDetectionStore): default = datastore.data['settings']['application']['tags'].get(uuid) - form = forms.watchForm(formdata=request.form if request.method == 'POST' else None, + form = forms.processor_text_json_diff_form(formdata=request.form if request.method == 'POST' else None, data=default, ) # @todo subclass form so validation works diff --git a/changedetectionio/flask_app.py b/changedetectionio/flask_app.py index 3a3bb0f86..bb38fe03c 100644 --- a/changedetectionio/flask_app.py +++ b/changedetectionio/flask_app.py @@ -652,9 +652,17 @@ def changedetection_app(config=None, datastore_o=None): # Radio needs '' not None, or incase that the chosen one no longer exists if default['proxy'] is None or not any(default['proxy'] in tup for tup in datastore.proxy_list): default['proxy'] = '' - # proxy_override set to the json/text list of the items - form = forms.watchForm(formdata=request.form if request.method == 'POST' else None, + + processor = datastore.data['watching'][uuid].get('processor', '') + form_class_name = f"processor_{processor}_form" + try: + form_class = getattr(forms, form_class_name) + except AttributeError: + flash(f"Cannot load the edit form for processor/plugin '{processor}', plugin missing?", 'error') + return redirect(url_for('index')) + + form = form_class(formdata=request.form if request.method == 'POST' else None, data=default ) diff --git a/changedetectionio/forms.py b/changedetectionio/forms.py index 673be9caa..48e8d78b3 100644 --- a/changedetectionio/forms.py +++ b/changedetectionio/forms.py @@ -447,7 +447,7 @@ class SingleBrowserStep(Form): # remove_button = SubmitField('-', render_kw={"type": "button", "class": "pure-button pure-button-primary", 'title': 'Remove'}) # add_button = SubmitField('+', render_kw={"type": "button", "class": "pure-button pure-button-primary", 'title': 'Add new step after'}) -class watchForm(commonSettingsForm): +class processor_text_json_diff_form(commonSettingsForm): url = fields.URLField('URL', validators=[validateURL()]) tags = StringTagUUID('Group tag', [validators.Optional()], default='') @@ -475,9 +475,6 @@ class watchForm(commonSettingsForm): filter_text_replaced = BooleanField('Replaced/changed lines', default=True) filter_text_removed = BooleanField('Removed lines', default=True) - # @todo this class could be moved to its own text_json_diff_watchForm and this goes to restock_diff_Watchform perhaps - in_stock_only = BooleanField('Only trigger when product goes BACK to in-stock', default=True) - trigger_text = StringListField('Trigger/wait for text', [validators.Optional(), ValidateListRegex()]) if os.getenv("PLAYWRIGHT_DRIVER_URL"): browser_steps = FieldList(FormField(SingleBrowserStep), min_entries=10) @@ -513,6 +510,12 @@ class watchForm(commonSettingsForm): result = False return result +class processor_restock_diff_form(processor_text_json_diff_form): + in_stock_only = BooleanField('Only trigger when product goes BACK to in-stock', default=True) + + def extra_tab_content(self): + #return tuple of heading/button and jinja output? + x=1 class SingleExtraProxy(Form):