diff --git a/changedetection.py b/changedetection.py index ead2b8c5a..a5400211c 100755 --- a/changedetection.py +++ b/changedetection.py @@ -3,4 +3,6 @@ # Only exists for direct CLI usage import changedetectionio -changedetectionio.main() + +if __name__ == '__main__': + changedetectionio.main() diff --git a/changedetectionio/__init__.py b/changedetectionio/__init__.py index 45b6f7005..d7e81f89f 100644 --- a/changedetectionio/__init__.py +++ b/changedetectionio/__init__.py @@ -2,7 +2,7 @@ # Read more https://github.com/dgtlmoon/changedetection.io/wiki -__version__ = '0.49.13' +__version__ = '0.49.14' from changedetectionio.strtobool import strtobool from json.decoder import JSONDecodeError diff --git a/changedetectionio/blueprint/tags/__init__.py b/changedetectionio/blueprint/tags/__init__.py index d7086213c..0a987e26c 100644 --- a/changedetectionio/blueprint/tags/__init__.py +++ b/changedetectionio/blueprint/tags/__init__.py @@ -104,6 +104,9 @@ def construct_blueprint(datastore: ChangeDetectionStore): 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 35b3b1d97..0ddf73b26 100644 --- a/changedetectionio/blueprint/tags/templates/edit-tag.html +++ b/changedetectionio/blueprint/tags/templates/edit-tag.html @@ -66,7 +66,7 @@
{{ 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 32f18aab3..b491d8549 100644 --- a/changedetectionio/blueprint/ui/edit.py +++ b/changedetectionio/blueprint/ui/edit.py @@ -249,7 +249,6 @@ def construct_blueprint(datastore: ChangeDetectionStore, update_q, queuedWatchMe '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 6f96ccf39..80a2198be 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 9b8028638..fa1573f69 100644 --- a/changedetectionio/templates/edit.html +++ b/changedetectionio/templates/edit.html @@ -264,7 +264,7 @@ Math: {{ 1 + 1 }}") }}
{{ render_checkbox_field(form.notification_muted) }}
- {% if watch_uses_webdriver %} + {% if watch_needs_selenium_or_playwright %}
{{ render_checkbox_field(form.notification_screenshot) }} @@ -453,12 +453,13 @@ Math: {{ 1 + 1 }}") }} - + {% if ui_edit_stats_extras %} -
+
{{ ui_edit_stats_extras|safe }}
{% endif %} + {% if watch.history_n %}

Download latest HTML snapshot diff --git a/changedetectionio/tests/test_backend.py b/changedetectionio/tests/test_backend.py index aac59be12..b67bd179f 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/docker-compose.yml b/docker-compose.yml index 9899ee19f..35bba7e14 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -45,7 +45,7 @@ services: # Base URL of your changedetection.io install (Added to the notification alert) # - BASE_URL=https://mysite.com # Respect proxy_pass type settings, `proxy_set_header Host "localhost";` and `proxy_set_header X-Forwarded-Prefix /app;` - # More here https://github.com/dgtlmoon/changedetection.io/wiki/Running-changedetection.io-behind-a-reverse-proxy-sub-directory + # More here https://github.com/dgtlmoon/changedetection.io/wiki/Running-changedetection.io-behind-a-reverse-proxy # - USE_X_SETTINGS=1 # # Hides the `Referer` header so that monitored websites can't see the changedetection.io hostname. diff --git a/requirements.txt b/requirements.txt index 68ae6ede8..745503f5a 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