diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown index ce3cb07..142b1c6 100644 --- a/CHANGELOG.markdown +++ b/CHANGELOG.markdown @@ -3,6 +3,7 @@ * implemented a more robust fetching algorithm, which should prevent accounts getting stuck with only a fraction of their posts fetched ([GH-13](https://github.com/codl/forget/issues/13)) * fix: picture tags having an extra comma * fix: outdated joke in about page +* fix: posts' status not getting refreshed (ie whether or not they were faved, or deleted externally) * internals: removed `x-` prefix from custom headers, as per [section 8.3.1 of RFC7231](https://httpwg.org/specs/rfc7231.html#considerations.for.new.header.fields) ## v1.4.1 (security update) diff --git a/libforget/mastodon.py b/libforget/mastodon.py index 2a9a4eb..6ecfc96 100644 --- a/libforget/mastodon.py +++ b/libforget/mastodon.py @@ -1,6 +1,7 @@ from mastodon import Mastodon from mastodon.Mastodon import MastodonAPIError,\ MastodonNetworkError,\ + MastodonNotFoundError,\ MastodonRatelimitError,\ MastodonUnauthorizedError from model import MastodonApp, Account, OAuthToken, Post, MastodonInstance @@ -164,16 +165,14 @@ def refresh_posts(posts): status = api.status(post.mastodon_id) new_post = db.session.merge( post_from_api_object(status, post.mastodon_instance)) + new_post.touch() new_posts.append(new_post) + except MastodonNotFoundError: + db.session.delete(post) except (MastodonAPIError, MastodonNetworkError, MastodonRatelimitError) as e: - if any([ - err in str(e) - for err in ('Endpoint not found', 'Record not found')]): - db.session.delete(post) - else: - raise TemporaryError(e) + raise TemporaryError(e) return new_posts diff --git a/libforget/twitter.py b/libforget/twitter.py index 0bf8bae..078171b 100644 --- a/libforget/twitter.py +++ b/libforget/twitter.py @@ -167,6 +167,7 @@ def refresh_posts(posts): db.session.delete(post) else: post = db.session.merge(post_from_api_tweet_object(tweet)) + post.touch() refreshed_posts.append(post) return refreshed_posts diff --git a/tasks.py b/tasks.py index 577c67b..954d25d 100644 --- a/tasks.py +++ b/tasks.py @@ -296,6 +296,8 @@ def refresh_posts(posts): def refresh_account(account_id): account = Account.query.get(account_id) + print("Refreshing account {}".format(account)) + try: limit = 100 if account.service == 'mastodon':