mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-02-02 16:21:32 -08:00
detect nsfl posts based on title and hide post from lists based on user setting
This commit is contained in:
parent
26e768c91f
commit
212e1bd6d9
4 changed files with 39 additions and 9 deletions
|
@ -1013,12 +1013,13 @@ def create_post(activity_log: ActivityPubLog, community: Community, request_json
|
|||
activity_log.exception_message = 'Community is local only, post discarded'
|
||||
activity_log.result = 'ignored'
|
||||
return None
|
||||
nsfl_in_title = '[NSFL]' in request_json['object']['name'].upper() or '(NSFL)' in request_json['object']['name'].upper()
|
||||
post = Post(user_id=user.id, community_id=community.id,
|
||||
title=html.unescape(request_json['object']['name']),
|
||||
comments_enabled=request_json['object']['commentsEnabled'],
|
||||
sticky=request_json['object']['stickied'] if 'stickied' in request_json['object'] else False,
|
||||
nsfw=request_json['object']['sensitive'],
|
||||
nsfl=request_json['object']['nsfl'] if 'nsfl' in request_json['object'] else False,
|
||||
nsfl=request_json['object']['nsfl'] if 'nsfl' in request_json['object'] else nsfl_in_title,
|
||||
ap_id=request_json['object']['id'],
|
||||
ap_create_id=request_json['id'],
|
||||
ap_announce_id=announce_id,
|
||||
|
|
|
@ -132,12 +132,21 @@ def show_community(community: Community):
|
|||
mod_user_ids = [mod.user_id for mod in mods]
|
||||
mod_list = User.query.filter(User.id.in_(mod_user_ids)).all()
|
||||
|
||||
if current_user.is_anonymous or current_user.ignore_bots:
|
||||
posts = community.posts.filter(Post.from_bot == False)
|
||||
posts = community.posts
|
||||
|
||||
# filter out nsfw and nsfl if desired
|
||||
if current_user.is_anonymous:
|
||||
posts = posts.filter(Post.from_bot == False, Post.nsfw == False, Post.nsfl == False)
|
||||
content_filters = {}
|
||||
else:
|
||||
if current_user.ignore_bots:
|
||||
posts = posts.filter(Post.from_bot == False)
|
||||
if current_user.show_nsfl is False:
|
||||
posts = posts.filter(Post.nsfl == False)
|
||||
if current_user.show_nsfw is False:
|
||||
posts = posts.filter(Post.nsfw == False)
|
||||
content_filters = user_filters_posts(current_user.id)
|
||||
posts = community.posts
|
||||
|
||||
if sort == '' or sort == 'hot':
|
||||
posts = posts.order_by(desc(Post.ranking))
|
||||
elif sort == 'top':
|
||||
|
|
|
@ -85,6 +85,14 @@ def home_page(type, sort):
|
|||
posts = Post.query
|
||||
posts = posts.join(Community, Community.id == Post.community_id)
|
||||
posts = posts.filter(Community.show_all == True)
|
||||
|
||||
if current_user.ignore_bots:
|
||||
posts = posts.filter(Post.from_bot == False)
|
||||
if current_user.show_nsfl is False:
|
||||
posts = posts.filter(Post.nsfl == False)
|
||||
if current_user.show_nsfw is False:
|
||||
posts = posts.filter(Post.nsfw == False)
|
||||
|
||||
domains_ids = blocked_domains(current_user.id)
|
||||
if domains_ids:
|
||||
posts = posts.filter(or_(Post.domain_id.not_in(domains_ids), Post.domain_id == None))
|
||||
|
|
|
@ -31,6 +31,21 @@ def show_topic(topic_name):
|
|||
if topic:
|
||||
# get posts from communities in that topic
|
||||
posts = Post.query.join(Community, Post.community_id == Community.id).filter(Community.topic_id == topic.id, Community.banned == False)
|
||||
|
||||
# filter out nsfw and nsfl if desired
|
||||
if current_user.is_anonymous:
|
||||
posts = posts.filter(Post.from_bot == False, Post.nsfw == False, Post.nsfl == False)
|
||||
content_filters = {}
|
||||
else:
|
||||
if current_user.ignore_bots:
|
||||
posts = posts.filter(Post.from_bot == False)
|
||||
if current_user.show_nsfl is False:
|
||||
posts = posts.filter(Post.nsfl == False)
|
||||
if current_user.show_nsfw is False:
|
||||
posts = posts.filter(Post.nsfw == False)
|
||||
content_filters = user_filters_posts(current_user.id)
|
||||
|
||||
# sorting
|
||||
if sort == '' or sort == 'hot':
|
||||
posts = posts.order_by(desc(Post.ranking))
|
||||
elif sort == 'top':
|
||||
|
@ -39,11 +54,8 @@ def show_topic(topic_name):
|
|||
posts = posts.order_by(desc(Post.posted_at))
|
||||
elif sort == 'active':
|
||||
posts = posts.order_by(desc(Post.last_active))
|
||||
if current_user.is_anonymous or current_user.ignore_bots:
|
||||
posts = posts.filter(Post.from_bot == False)
|
||||
content_filters = {}
|
||||
else:
|
||||
content_filters = user_filters_posts(current_user.id)
|
||||
|
||||
# paging
|
||||
per_page = 100
|
||||
if post_layout == 'masonry':
|
||||
per_page = 200
|
||||
|
|
Loading…
Add table
Reference in a new issue