mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
API: return 'SubscribedType' (for if the community is being followed)
This commit is contained in:
parent
41aa128b67
commit
ab6d66e7e2
3 changed files with 21 additions and 6 deletions
|
@ -27,7 +27,7 @@ def get_alpha_community():
|
||||||
if not current_app.debug:
|
if not current_app.debug:
|
||||||
return jsonify({'error': 'alpha api routes only available in debug mode'})
|
return jsonify({'error': 'alpha api routes only available in debug mode'})
|
||||||
try:
|
try:
|
||||||
auth = None
|
auth = request.headers.get('Authorization')
|
||||||
data = request.args.to_dict() or None
|
data = request.args.to_dict() or None
|
||||||
return jsonify(get_community(auth, data))
|
return jsonify(get_community(auth, data))
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
|
@ -55,8 +55,16 @@ def get_community(auth, data):
|
||||||
elif 'name' in data:
|
elif 'name' in data:
|
||||||
community = data['name']
|
community = data['name']
|
||||||
|
|
||||||
|
if auth:
|
||||||
|
try:
|
||||||
|
user_id = authorise_api_user(auth)
|
||||||
|
except Exception as e:
|
||||||
|
raise e
|
||||||
|
else:
|
||||||
|
user_id = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
community_json = community_view(community=community, variant=3)
|
community_json = community_view(community=community, variant=3, stub=False, user_id=user_id)
|
||||||
return community_json
|
return community_json
|
||||||
except:
|
except:
|
||||||
raise
|
raise
|
||||||
|
|
|
@ -53,8 +53,9 @@ def post_view(post: Post | int, variant, stub=False, user_id=None, my_vote=0):
|
||||||
if user_id:
|
if user_id:
|
||||||
bookmarked = db.session.execute(text('SELECT user_id FROM "post_bookmark" WHERE post_id = :post_id and user_id = :user_id'), {'post_id': post.id, 'user_id': user_id}).scalar()
|
bookmarked = db.session.execute(text('SELECT user_id FROM "post_bookmark" WHERE post_id = :post_id and user_id = :user_id'), {'post_id': post.id, 'user_id': user_id}).scalar()
|
||||||
post_sub = db.session.execute(text('SELECT user_id FROM "notification_subscription" WHERE type = :type and entity_id = :entity_id and user_id = :user_id'), {'type': NOTIF_POST, 'entity_id': post.id, 'user_id': user_id}).scalar()
|
post_sub = db.session.execute(text('SELECT user_id FROM "notification_subscription" WHERE type = :type and entity_id = :entity_id and user_id = :user_id'), {'type': NOTIF_POST, 'entity_id': post.id, 'user_id': user_id}).scalar()
|
||||||
|
followed = db.session.execute(text('SELECT user_id FROM "community_member" WHERE community_id = :community_id and user_id = :user_id'), {"community_id": post.community_id, "user_id": user_id}).scalar()
|
||||||
else:
|
else:
|
||||||
bookmarked = post_sub = False
|
bookmarked = post_sub = followed = False
|
||||||
if not stub:
|
if not stub:
|
||||||
banned = db.session.execute(text('SELECT user_id FROM "community_ban" WHERE user_id = :user_id and community_id = :community_id'), {'user_id': post.user_id, 'community_id': post.community_id}).scalar()
|
banned = db.session.execute(text('SELECT user_id FROM "community_ban" WHERE user_id = :user_id and community_id = :community_id'), {'user_id': post.user_id, 'community_id': post.community_id}).scalar()
|
||||||
moderator = db.session.execute(text('SELECT is_moderator FROM "community_member" WHERE user_id = :user_id and community_id = :community_id'), {'user_id': post.user_id, 'community_id': post.community_id}).scalar()
|
moderator = db.session.execute(text('SELECT is_moderator FROM "community_member" WHERE user_id = :user_id and community_id = :community_id'), {'user_id': post.user_id, 'community_id': post.community_id}).scalar()
|
||||||
|
@ -75,7 +76,8 @@ def post_view(post: Post | int, variant, stub=False, user_id=None, my_vote=0):
|
||||||
creator_banned_from_community = True if banned else False
|
creator_banned_from_community = True if banned else False
|
||||||
creator_is_moderator = True if moderator else False
|
creator_is_moderator = True if moderator else False
|
||||||
creator_is_admin = True if admin else False
|
creator_is_admin = True if admin else False
|
||||||
v2 = {'post': post_view(post=post, variant=1, stub=stub), 'counts': counts, 'banned_from_community': False, 'subscribed': 'NotSubscribed',
|
subscribe_type = 'Subscribed' if followed else 'NotSubscribed'
|
||||||
|
v2 = {'post': post_view(post=post, variant=1, stub=stub), 'counts': counts, 'banned_from_community': False, 'subscribed': subscribe_type,
|
||||||
'saved': saved, 'read': False, 'hidden': False, 'unread_comments': post.reply_count, 'my_vote': my_vote, 'activity_alert': activity_alert,
|
'saved': saved, 'read': False, 'hidden': False, 'unread_comments': post.reply_count, 'my_vote': my_vote, 'activity_alert': activity_alert,
|
||||||
'creator_banned_from_community': creator_banned_from_community, 'creator_is_moderator': creator_is_moderator, 'creator_is_admin': creator_is_admin}
|
'creator_banned_from_community': creator_banned_from_community, 'creator_is_moderator': creator_is_moderator, 'creator_is_admin': creator_is_admin}
|
||||||
|
|
||||||
|
@ -207,14 +209,19 @@ def community_view(community: Community | int | str, variant, stub=False, user_i
|
||||||
include = ['id', 'subscriptions_count', 'post_count', 'post_reply_count']
|
include = ['id', 'subscriptions_count', 'post_count', 'post_reply_count']
|
||||||
counts = {column.name: getattr(community, column.name) for column in community.__table__.columns if column.name in include}
|
counts = {column.name: getattr(community, column.name) for column in community.__table__.columns if column.name in include}
|
||||||
counts.update({'published': community.created_at.isoformat() + 'Z'})
|
counts.update({'published': community.created_at.isoformat() + 'Z'})
|
||||||
v2 = {'community': community_view(community=community, variant=1, stub=stub), 'subscribed': 'NotSubscribed', 'blocked': False, 'counts': counts}
|
if user_id:
|
||||||
|
followed = db.session.execute(text('SELECT user_id FROM "community_member" WHERE community_id = :community_id and user_id = :user_id'), {"community_id": community.id, "user_id": user_id}).scalar()
|
||||||
|
else:
|
||||||
|
followed = False
|
||||||
|
subscribe_type = 'Subscribed' if followed else 'NotSubscribed'
|
||||||
|
v2 = {'community': community_view(community=community, variant=1, stub=stub), 'subscribed': subscribe_type, 'blocked': False, 'counts': counts}
|
||||||
return v2
|
return v2
|
||||||
|
|
||||||
# Variant 3 - models/community/get_community_response.dart - /community api endpoint
|
# Variant 3 - models/community/get_community_response.dart - /community api endpoint
|
||||||
if variant == 3:
|
if variant == 3:
|
||||||
modlist = cached_modlist_for_community(community.id)
|
modlist = cached_modlist_for_community(community.id)
|
||||||
|
|
||||||
v3 = {'community_view': community_view(community=community, variant=2),
|
v3 = {'community_view': community_view(community=community, variant=2, stub=False, user_id=user_id),
|
||||||
'moderators': modlist,
|
'moderators': modlist,
|
||||||
'discussion_languages': []}
|
'discussion_languages': []}
|
||||||
return v3
|
return v3
|
||||||
|
|
Loading…
Add table
Reference in a new issue