mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-03-11 22:46:08 +00:00
Compare commits
3 Commits
3964-refac
...
cpu-memory
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
259e44940c | ||
|
|
1dbd25cdb4 | ||
|
|
bb2c9855ee |
@@ -15,7 +15,6 @@ import copy
|
||||
from . import validate_openapi_request, get_readonly_watch_fields
|
||||
from ..notification import valid_notification_formats
|
||||
from ..notification.handler import newline_re
|
||||
from ..processors.text_json_diff.difference import DIFF_PREFERENCES_CONFIG, parse_diff_preferences
|
||||
|
||||
|
||||
def validate_time_between_check_required(json_data):
|
||||
@@ -339,14 +338,22 @@ class WatchHistoryDiff(Resource):
|
||||
word_diff = True
|
||||
|
||||
# Get boolean diff preferences with defaults from DIFF_PREFERENCES_CONFIG
|
||||
prefs, render_kwargs = parse_diff_preferences(request.args)
|
||||
changes_only = strtobool(request.args.get('changesOnly', 'true'))
|
||||
ignore_whitespace = strtobool(request.args.get('ignoreWhitespace', 'false'))
|
||||
include_removed = strtobool(request.args.get('removed', 'true'))
|
||||
include_added = strtobool(request.args.get('added', 'true'))
|
||||
include_replaced = strtobool(request.args.get('replaced', 'true'))
|
||||
|
||||
# Generate the diff with all preferences
|
||||
content = diff.render_diff(
|
||||
previous_version_file_contents=from_version_file_contents,
|
||||
newest_version_file_contents=to_version_file_contents,
|
||||
ignore_junk=ignore_whitespace,
|
||||
include_equal=changes_only,
|
||||
include_removed=include_removed,
|
||||
include_added=include_added,
|
||||
include_replaced=include_replaced,
|
||||
word_diff=word_diff,
|
||||
**render_kwargs,
|
||||
)
|
||||
|
||||
# Skip formatting if no_markup is set
|
||||
|
||||
@@ -99,26 +99,6 @@ DIFF_PREFERENCES_CONFIG = {
|
||||
'type': {'default': 'diffLines', 'type': 'value'},
|
||||
}
|
||||
|
||||
def parse_diff_preferences(args, checkbox_mode=False):
|
||||
parsed = {}
|
||||
render_kwargs = {}
|
||||
|
||||
for query_name, config in DIFF_PREFERENCES_CONFIG.items():
|
||||
value = args.get(query_name, config['default'])
|
||||
|
||||
if config['type'] == 'bool':
|
||||
if checkbox_mode:
|
||||
value = strtobool(args.get(query_name, 'off'))
|
||||
else:
|
||||
value = strtobool(value)
|
||||
|
||||
parsed[query_name] = value
|
||||
|
||||
if 'render_arg' in config:
|
||||
render_kwargs[config['render_arg']] = value
|
||||
|
||||
return parsed, render_kwargs
|
||||
|
||||
def render(watch, datastore, request, url_for, render_template, flash, redirect, extract_form=None):
|
||||
"""
|
||||
Render the history/diff view for text/JSON/HTML changes.
|
||||
@@ -186,12 +166,30 @@ def render(watch, datastore, request, url_for, render_template, flash, redirect,
|
||||
|
||||
datastore.set_last_viewed(uuid, time.time())
|
||||
|
||||
diff_prefs, render_kwargs = parse_diff_preferences(request.args)
|
||||
# Parse diff preferences from request using config as single source of truth
|
||||
# Check if this is a user submission (any diff pref param exists in query string)
|
||||
user_submitted = any(key in request.args for key in DIFF_PREFERENCES_CONFIG.keys())
|
||||
|
||||
diff_prefs = {}
|
||||
for key, config in DIFF_PREFERENCES_CONFIG.items():
|
||||
if user_submitted:
|
||||
# User submitted form - missing checkboxes are explicitly OFF
|
||||
if config['type'] == 'bool':
|
||||
diff_prefs[key] = strtobool(request.args.get(key, 'off'))
|
||||
else:
|
||||
diff_prefs[key] = request.args.get(key, config['default'])
|
||||
else:
|
||||
# Initial load - use defaults from config
|
||||
diff_prefs[key] = config['default']
|
||||
|
||||
content = diff.render_diff(previous_version_file_contents=from_version_file_contents,
|
||||
newest_version_file_contents=to_version_file_contents,
|
||||
include_replaced=diff_prefs['replaced'],
|
||||
include_added=diff_prefs['added'],
|
||||
include_removed=diff_prefs['removed'],
|
||||
include_equal=diff_prefs['changesOnly'],
|
||||
ignore_junk=diff_prefs['ignoreWhitespace'],
|
||||
word_diff=diff_prefs['type'] == 'diffWords',
|
||||
**render_kwargs,
|
||||
)
|
||||
|
||||
# Build cell grid visualizer before applying HTML color (so we can detect placemarkers)
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user