diff --git a/libforget/mastodon.py b/libforget/mastodon.py index 285cdb9..8e01da1 100644 --- a/libforget/mastodon.py +++ b/libforget/mastodon.py @@ -3,7 +3,7 @@ from mastodon.Mastodon import MastodonAPIError,\ MastodonNetworkError,\ MastodonRatelimitError,\ MastodonUnauthorizedError -from model import MastodonApp, Account, OAuthToken, Post +from model import MastodonApp, Account, OAuthToken, Post, MastodonInstance from requests import head from app import db, sentry from libforget.exceptions import TemporaryError @@ -208,3 +208,13 @@ def delete(post): MastodonNetworkError, MastodonRatelimitError) as e: raise TemporaryError(e) + + +def suggested_instances(limit=5, min_popularity=5): + return ( + MastodonInstance.query + .filter(MastodonInstance.popularity > min_popularity) + .order_by(db.desc(MastodonInstance.instance == 'mastodon.social'), + db.desc(MastodonInstance.popularity), + MastodonInstance.instance) + .limit(limit).all()) diff --git a/routes/__init__.py b/routes/__init__.py index 6d215fb..9f31937 100644 --- a/routes/__init__.py +++ b/routes/__init__.py @@ -5,7 +5,7 @@ import libforget.twitter import libforget.mastodon from libforget.auth import require_auth, csrf,\ get_viewer -from model import Session, TwitterArchive, MastodonApp, MastodonInstance +from model import Session, TwitterArchive, MastodonApp from app import app, db, sentry, imgproxy import tasks from zipfile import BadZipFile @@ -34,13 +34,7 @@ def index(): @app.route('/about/') def about(): - instances = ( - MastodonInstance.query - .filter(MastodonInstance.popularity > 5) - .order_by(db.desc(MastodonInstance.instance == 'mastodon.social'), - db.desc(MastodonInstance.popularity), - MastodonInstance.instance) - .limit(5).all()) + instances = libforget.mastodon.suggested_instances() return render_template( 'about.html', mastodon_instances=instances, @@ -213,12 +207,10 @@ def mastodon_login_step1(instance=None): or request.form.get('instance_url', None)) if not instance_url: - instances = ( - MastodonInstance - .query.filter(MastodonInstance.popularity > 1) - .order_by(db.desc(MastodonInstance.popularity), - MastodonInstance.instance) - .limit(30)) + instances = libforget.mastodon.suggested_instances( + limit=30, + min_popularity=1 + ) return render_template( 'mastodon_login.html', instances=instances, address_error=request.method == 'POST',