fix: posts not getting refreshed

turns out i was not touching updated_at, so i'd always be refreshing
the same posts unless one of them actually changed

this is embarassing, there are posts in the DB that haven't been
refreshed since 2017
This commit is contained in:
codl 2019-02-24 16:23:32 +01:00
parent 68ac747f7e
commit d5e0b43c9e
No known key found for this signature in database
GPG Key ID: 6CD7C8891ED1233A
3 changed files with 8 additions and 6 deletions

View File

@ -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
@ -185,16 +186,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

View File

@ -193,6 +193,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

View File

@ -231,6 +231,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':