Compare commits

...

1 Commits

Author SHA1 Message Date
dgtlmoon
b9514f6a10 Extra validation 2022-12-05 15:33:50 +01:00
2 changed files with 20 additions and 18 deletions

View File

@@ -814,11 +814,12 @@ def changedetection_app(config=None, datastore_o=None):
@login_required @login_required
def diff_history_page(uuid): def diff_history_page(uuid):
from changedetectionio import forms
# More for testing, possible to return the first/only # More for testing, possible to return the first/only
if uuid == 'first': if uuid == 'first':
uuid = list(datastore.data['watching'].keys()).pop() uuid = list(datastore.data['watching'].keys()).pop()
extra_stylesheets = [url_for('static_content', group='styles', filename='diff.css')] extra_stylesheets = [url_for('static_content', group='styles', filename='diff.css')]
try: try:
watch = datastore.data['watching'][uuid] watch = datastore.data['watching'][uuid]
@@ -827,21 +828,26 @@ def changedetection_app(config=None, datastore_o=None):
return redirect(url_for('index')) return redirect(url_for('index'))
# For submission of requesting an extract # For submission of requesting an extract
extract_form = forms.extractDataForm(request.form)
if request.method == 'POST': if request.method == 'POST':
extract_regex = request.form.get('extract_regex').strip() if not extract_form.validate():
output = watch.extract_regex_from_all_history(extract_regex) flash("An error occurred, please see below.", "error")
if output:
watch_dir = os.path.join(datastore_o.datastore_path, uuid) else:
response = make_response(send_from_directory(directory=watch_dir, path=output, as_attachment=True)) extract_regex = request.form.get('extract_regex').strip()
response.headers['Content-type'] = 'text/csv' output = watch.extract_regex_from_all_history(extract_regex)
response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate' if output:
response.headers['Pragma'] = 'no-cache' watch_dir = os.path.join(datastore_o.datastore_path, uuid)
response.headers['Expires'] = 0 response = make_response(send_from_directory(directory=watch_dir, path=output, as_attachment=True))
return response response.headers['Content-type'] = 'text/csv'
response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
response.headers['Pragma'] = 'no-cache'
response.headers['Expires'] = 0
return response
flash('Nothing matches that RegEx', 'error') flash('Nothing matches that RegEx', 'error')
redirect(url_for('diff_history_page', uuid=uuid)+'#extract') redirect(url_for('diff_history_page', uuid=uuid)+'#extract')
history = watch.history history = watch.history
dates = list(history.keys()) dates = list(history.keys())
@@ -884,9 +890,6 @@ def changedetection_app(config=None, datastore_o=None):
is_html_webdriver = True if watch.get('fetch_backend') == 'html_webdriver' or ( is_html_webdriver = True if watch.get('fetch_backend') == 'html_webdriver' or (
watch.get('fetch_backend', None) is None and system_uses_webdriver) else False watch.get('fetch_backend', None) is None and system_uses_webdriver) else False
from changedetectionio import forms
extract_form = forms.extractDataForm(request.form)
output = render_template("diff.html", output = render_template("diff.html",
current_diff_url=watch['url'], current_diff_url=watch['url'],
current_previous_version=str(previous_version), current_previous_version=str(previous_version),

View File

@@ -451,6 +451,5 @@ class globalSettingsForm(Form):
class extractDataForm(Form): class extractDataForm(Form):
extract_regex = StringField('RegEx to extract') extract_regex = StringField('RegEx to extract', validators=[validators.Length(min=1, message="Needs a RegEx")])
extract_submit_button = SubmitField('Extract as CSV', render_kw={"class": "pure-button pure-button-primary"}) extract_submit_button = SubmitField('Extract as CSV', render_kw={"class": "pure-button pure-button-primary"})