mirror of
				https://github.com/dgtlmoon/changedetection.io.git
				synced 2025-10-30 22:27:52 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			cryptograp
			...
			fix-master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | d1ef5632db | ||
|   | c789dbf7a9 | ||
|   | 08ba21edd8 | ||
|   | 504d5d2539 | 
| @@ -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, | ||||
|   | ||||
| @@ -66,7 +66,7 @@ | ||||
|                     <div  class="pure-control-group inline-radio"> | ||||
|                       {{ render_checkbox_field(form.notification_muted) }} | ||||
|                     </div> | ||||
|                     {% if is_html_webdriver %} | ||||
|                     {% if 1 %} | ||||
|                     <div class="pure-control-group inline-radio"> | ||||
|                       {{ render_checkbox_field(form.notification_screenshot) }} | ||||
|                         <span class="pure-form-message-inline"> | ||||
|   | ||||
| @@ -19,20 +19,6 @@ def construct_blueprint(datastore: ChangeDetectionStore, update_q, queuedWatchMe | ||||
|             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/<string:uuid>", methods=['GET', 'POST']) | ||||
|     @login_optionally_required | ||||
|     # https://stackoverflow.com/questions/42984453/wtforms-populate-form-with-data-if-data-exists | ||||
| @@ -260,7 +246,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'), | ||||
|   | ||||
| @@ -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(): | ||||
|   | ||||
| @@ -264,7 +264,7 @@ Math: {{ 1 + 1 }}") }} | ||||
|                     <div  class="pure-control-group inline-radio"> | ||||
|                       {{ render_checkbox_field(form.notification_muted) }} | ||||
|                     </div> | ||||
|                     {% if watch_uses_webdriver %} | ||||
|                     {% if watch_needs_selenium_or_playwright %} | ||||
|                     <div class="pure-control-group inline-radio"> | ||||
|                       {{ render_checkbox_field(form.notification_screenshot) }} | ||||
|                         <span class="pure-form-message-inline"> | ||||
| @@ -453,10 +453,6 @@ Math: {{ 1 + 1 }}") }} | ||||
|                         </tr> | ||||
|                         </tbody> | ||||
|                     </table> | ||||
|  | ||||
|                     <h4>Text similarity</h4> | ||||
|                     <p><strong>Levenshtein Distance</strong> - Last 2 snapshots: {{ lev_info }}</p> | ||||
|                     <p style="max-width: 80%; font-size: 80%"><strong>Levenshtein Distance</strong> Calculates the minimum number of insertions, deletions, and substitutions required to change one text into the other.</p> | ||||
|                     {% if watch.history_n %} | ||||
|                         <p> | ||||
|                              <a href="{{url_for('ui.ui_edit.watch_get_latest_html', uuid=uuid)}}" class="pure-button button-small">Download latest HTML snapshot</a> | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user