kopia lustrzana https://github.com/dgtlmoon/changedetection.io
bug fix: `last_changed` was being set on the first fetch, should only be set on the change after the first fetch #705
rodzic
5bfdb28bd2
commit
83555a9991
|
@ -298,7 +298,7 @@ def changedetection_app(config=None, datastore_o=None):
|
|||
# Sort by last_changed and add the uuid which is usually the key..
|
||||
sorted_watches = []
|
||||
|
||||
# @todo needs a .itemsWithTag() or something
|
||||
# @todo needs a .itemsWithTag() or something - then we can use that in Jinaj2 and throw this away
|
||||
for uuid, watch in datastore.data['watching'].items():
|
||||
|
||||
if limit_tag != None:
|
||||
|
@ -403,8 +403,6 @@ def changedetection_app(config=None, datastore_o=None):
|
|||
watch['uuid'] = uuid
|
||||
sorted_watches.append(watch)
|
||||
|
||||
sorted_watches.sort(key=lambda x: x['last_changed'], reverse=True)
|
||||
|
||||
existing_tags = datastore.get_all_tags()
|
||||
|
||||
form = forms.quickWatchForm(request.form)
|
||||
|
|
|
@ -255,9 +255,6 @@ class perform_site_check():
|
|||
# Looks like something changed, but did it match all the rules?
|
||||
if blocked:
|
||||
changed_detected = False
|
||||
else:
|
||||
update_obj["last_changed"] = timestamp
|
||||
|
||||
|
||||
# Extract title as title
|
||||
if is_html:
|
||||
|
|
|
@ -518,3 +518,11 @@ class ChangeDetectionStore:
|
|||
# But we should set it back to a empty dict so we don't break if this schema runs on an earlier version.
|
||||
# In the distant future we can remove this entirely
|
||||
self.data['watching'][uuid]['history'] = {}
|
||||
|
||||
# We incorrectly stored last_changed when there was not a change, and then confused the output list table
|
||||
def update_3(self):
|
||||
for uuid, watch in self.data['watching'].items():
|
||||
# Be sure it's recalculated
|
||||
p = watch.history
|
||||
if watch.history_n < 2:
|
||||
watch['last_changed'] = 0
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<tbody>
|
||||
|
||||
|
||||
{% for watch in watches %}
|
||||
{% for watch in watches|sort(attribute='last_changed', reverse=True) %}
|
||||
<tr id="{{ watch.uuid }}"
|
||||
class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }}
|
||||
{% if watch.last_error is defined and watch.last_error != False %}error{% endif %}
|
||||
|
@ -68,7 +68,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td class="last-checked">{{watch|format_last_checked_time|safe}}</td>
|
||||
<td class="last-changed">{% if watch.history_n >=2 and watch.last_changed %}
|
||||
<td class="last-changed">{% if watch.history_n >=2 and watch.last_changed >0 %}
|
||||
{{watch.last_changed|format_timestamp_timeago}}
|
||||
{% else %}
|
||||
Not yet
|
||||
|
|
|
@ -95,6 +95,8 @@ def test_api_simple(client, live_server):
|
|||
assert watch_uuid in json.loads(res.data).keys()
|
||||
before_recheck_info = json.loads(res.data)[watch_uuid]
|
||||
assert before_recheck_info['last_checked'] != 0
|
||||
#705 `last_changed` should be zero on the first check
|
||||
assert before_recheck_info['last_changed'] == 0
|
||||
assert before_recheck_info['title'] == 'My test URL'
|
||||
|
||||
set_modified_response()
|
||||
|
|
|
@ -98,7 +98,9 @@ class update_worker(threading.Thread):
|
|||
|
||||
# Notifications should only trigger on the second time (first time, we gather the initial snapshot)
|
||||
if watch.history_n >= 2:
|
||||
print(">> Change detected in UUID {} - {}".format(uuid, watch['url']))
|
||||
# Atleast 2, means there really was a change
|
||||
self.datastore.update_watch(uuid=uuid, update_obj={'last_changed': round(now)})
|
||||
|
||||
watch_history = watch.history
|
||||
dates = list(watch_history.keys())
|
||||
# Theoretically it's possible that this could be just 1 long,
|
||||
|
@ -109,7 +111,6 @@ class update_worker(threading.Thread):
|
|||
)
|
||||
prev_fname = watch_history[dates[-2]]
|
||||
|
||||
|
||||
# Did it have any notification alerts to hit?
|
||||
if len(watch['notification_urls']):
|
||||
print(">>> Notifications queued for UUID from watch {}".format(uuid))
|
||||
|
@ -157,6 +158,7 @@ class update_worker(threading.Thread):
|
|||
# Always record that we atleast tried
|
||||
self.datastore.update_watch(uuid=uuid, update_obj={'fetch_time': round(time.time() - now, 3),
|
||||
'last_checked': round(time.time())})
|
||||
|
||||
# Always save the screenshot if it's available
|
||||
if screenshot:
|
||||
self.datastore.save_screenshot(watch_uuid=uuid, screenshot=screenshot)
|
||||
|
|
Ładowanie…
Reference in New Issue