diff --git a/changedetectionio/blueprint/tags/__init__.py b/changedetectionio/blueprint/tags/__init__.py
index d7086213c8e..0a987e26c5c 100644
--- a/changedetectionio/blueprint/tags/__init__.py
+++ b/changedetectionio/blueprint/tags/__init__.py
@@ -104,6 +104,9 @@ def form_tag_edit(uuid):
uuid = list(datastore.data['settings']['application']['tags'].keys()).pop()
default = datastore.data['settings']['application']['tags'].get(uuid)
+ if not default:
+ flash("Tag not found", "error")
+ return redirect(url_for('watchlist.index'))
form = group_restock_settings_form(
formdata=request.form if request.method == 'POST' else None,
diff --git a/changedetectionio/blueprint/tags/templates/edit-tag.html b/changedetectionio/blueprint/tags/templates/edit-tag.html
index 35b3b1d972e..0ddf73b267c 100644
--- a/changedetectionio/blueprint/tags/templates/edit-tag.html
+++ b/changedetectionio/blueprint/tags/templates/edit-tag.html
@@ -66,7 +66,7 @@
Text filtering
{{ render_checkbox_field(form.notification_muted) }}
- {% if is_html_webdriver %}
+ {% if 1 %}
{{ render_checkbox_field(form.notification_screenshot) }}
diff --git a/changedetectionio/blueprint/ui/edit.py b/changedetectionio/blueprint/ui/edit.py
index b3509b13004..467b4df6603 100644
--- a/changedetectionio/blueprint/ui/edit.py
+++ b/changedetectionio/blueprint/ui/edit.py
@@ -19,20 +19,6 @@ def _watch_has_tag_options_set(watch):
if tag_uuid in watch.get('tags', []) and (tag.get('include_filters') or tag.get('subtractive_selectors')):
return True
- def levenshtein_ratio_recent_history(watch):
- try:
- from Levenshtein import ratio, distance
- k = list(watch.history.keys())
- if len(k) >= 2:
- a = watch.get_history_snapshot(timestamp=k[0])
- b = watch.get_history_snapshot(timestamp=k[1])
- distance = distance(a, b)
- return distance
- except Exception as e:
- logger.warning("Unable to calc similarity", e)
- return "Unable to calc similarity"
- return ''
-
@edit_blueprint.route("/edit/", methods=['GET', 'POST'])
@login_optionally_required
# https://stackoverflow.com/questions/42984453/wtforms-populate-form-with-data-if-data-exists
@@ -260,7 +246,6 @@ def edit_page(uuid):
'has_extra_headers_file': len(datastore.get_all_headers_in_textfile_for_watch(uuid=uuid)) > 0,
'has_special_tag_options': _watch_has_tag_options_set(watch=watch),
'jq_support': jq_support,
- 'lev_info': levenshtein_ratio_recent_history(watch),
'playwright_enabled': os.getenv('PLAYWRIGHT_DRIVER_URL', False),
'settings_application': datastore.data['settings']['application'],
'system_has_playwright_configured': os.getenv('PLAYWRIGHT_DRIVER_URL'),
diff --git a/changedetectionio/conditions/__init__.py b/changedetectionio/conditions/__init__.py
index 130791803d8..ca36532e09b 100644
--- a/changedetectionio/conditions/__init__.py
+++ b/changedetectionio/conditions/__init__.py
@@ -94,11 +94,11 @@ def execute_ruleset_against_all_plugins(current_watch_uuid: str, application_dat
EXECUTE_DATA = {}
result = True
- ruleset_settings = application_datastruct['watching'].get(current_watch_uuid)
+ watch = application_datastruct['watching'].get(current_watch_uuid)
- if ruleset_settings.get("conditions"):
- logic_operator = "and" if ruleset_settings.get("conditions_match_logic", "ALL") == "ALL" else "or"
- complete_rules = filter_complete_rules(ruleset_settings['conditions'])
+ if watch and watch.get("conditions"):
+ logic_operator = "and" if watch.get("conditions_match_logic", "ALL") == "ALL" else "or"
+ complete_rules = filter_complete_rules(watch['conditions'])
if complete_rules:
# Give all plugins a chance to update the data dict again (that we will test the conditions against)
for plugin in plugin_manager.get_plugins():
diff --git a/changedetectionio/templates/edit.html b/changedetectionio/templates/edit.html
index 08666cc256c..c93745efa10 100644
--- a/changedetectionio/templates/edit.html
+++ b/changedetectionio/templates/edit.html
@@ -264,7 +264,7 @@ Click here to Start
{{ render_checkbox_field(form.notification_muted) }}
- {% if watch_uses_webdriver %}
+ {% if watch_needs_selenium_or_playwright %}
{{ render_checkbox_field(form.notification_screenshot) }}
@@ -453,10 +453,6 @@ Text filtering
-
- Text similarity
- Levenshtein Distance - Last 2 snapshots: {{ lev_info }}
- Levenshtein Distance Calculates the minimum number of insertions, deletions, and substitutions required to change one text into the other.
{% if watch.history_n %}
Download latest HTML snapshot
diff --git a/changedetectionio/tests/test_backend.py b/changedetectionio/tests/test_backend.py
index aac59be124f..b67bd179fad 100644
--- a/changedetectionio/tests/test_backend.py
+++ b/changedetectionio/tests/test_backend.py
@@ -74,11 +74,6 @@ def test_check_basic_change_detection_functionality(client, live_server, measure
res = client.get(url_for("ui.ui_edit.watch_get_latest_html", uuid=uuid))
assert b'which has this one new line' in res.data
- # Check the 'levenshtein' distance calc showed something useful
- res = client.get(url_for("ui.ui_edit.edit_page", uuid=uuid))
- assert b'Last 2 snapshots: 17' in res.data
-
-
# Now something should be ready, indicated by having a 'unviewed' class
res = client.get(url_for("watchlist.index"))
assert b'unviewed' in res.data
diff --git a/requirements.txt b/requirements.txt
index 68ae6ede833..745503f5af3 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -68,8 +68,6 @@ openpyxl
jq~=1.3; python_version >= "3.8" and sys_platform == "darwin"
jq~=1.3; python_version >= "3.8" and sys_platform == "linux"
-levenshtein
-
# playwright is installed at Dockerfile build time because it's not available on all platforms
pyppeteer-ng==2.0.0rc9