pyfedi/app/main/routes.py

60 lines
2.3 KiB
Python
Raw Normal View History

from app import db, cache
from app.constants import SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER
2023-07-28 16:22:12 +12:00
from app.main import bp
from flask import g, session, flash, request
2023-07-28 16:22:12 +12:00
from flask_moment import moment
from flask_login import current_user
2023-07-28 16:22:12 +12:00
from flask_babel import _, get_locale
2023-09-05 20:25:02 +12:00
from sqlalchemy import select
from sqlalchemy_searchable import search
from app.utils import render_template, get_setting, gibberish
2023-09-05 20:25:02 +12:00
from app.models import Community, CommunityMember
2023-08-22 21:24:11 +12:00
2023-07-28 16:22:12 +12:00
@bp.route('/', methods=['GET', 'POST'])
@bp.route('/index', methods=['GET', 'POST'])
def index():
2023-10-23 13:03:35 +13:00
verification_warning()
return render_template('index.html')
2023-08-22 21:24:11 +12:00
@bp.route('/communities', methods=['GET'])
def list_communities():
2023-10-23 13:03:35 +13:00
verification_warning()
2023-09-05 20:25:02 +12:00
search_param = request.args.get('search', '')
if search_param == '':
2023-10-07 21:32:19 +13:00
communities = Community.query.filter_by(banned=False).all()
2023-09-05 20:25:02 +12:00
else:
query = search(select(Community), search_param, sort=True)
communities = db.session.scalars(query).all()
return render_template('list_communities.html', communities=communities, search=search_param, title=_('Communities'),
SUBSCRIPTION_PENDING=SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER=SUBSCRIPTION_MEMBER)
2023-09-05 20:25:02 +12:00
@bp.route('/communities/local', methods=['GET'])
def list_local_communities():
2023-10-23 13:03:35 +13:00
verification_warning()
2023-10-07 21:32:19 +13:00
communities = Community.query.filter_by(ap_id=None, banned=False).all()
return render_template('list_communities.html', communities=communities, title=_('Local communities'),
SUBSCRIPTION_PENDING=SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER=SUBSCRIPTION_MEMBER)
2023-09-05 20:25:02 +12:00
@bp.route('/communities/subscribed', methods=['GET'])
def list_subscribed_communities():
2023-10-23 13:03:35 +13:00
verification_warning()
2023-10-07 21:32:19 +13:00
communities = Community.query.filter_by(banned=False).join(CommunityMember).filter(CommunityMember.user_id == current_user.id).all()
return render_template('list_communities.html', communities=communities, title=_('Subscribed communities'),
SUBSCRIPTION_PENDING=SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER=SUBSCRIPTION_MEMBER)
@bp.route('/test')
def test():
...
2023-10-23 13:03:35 +13:00
def verification_warning():
if hasattr(current_user, 'verified') and current_user.verified is False:
flash(_('Please click the link in your email inbox to verify your account.'), 'warning')