show nsfw emojis to ppl who disabled nsfw warnings

pull/211/head
Aevann 2023-10-02 16:52:13 +03:00
parent d904559538
commit 1bb8a88b8c
3 changed files with 22 additions and 15 deletions

View File

@ -283,7 +283,7 @@ class User(Base):
@property
@lazy
def over_18(self):
return session.get('over_18', False)
return bool(session.get('over_18'))
@property
@lazy

View File

@ -188,9 +188,8 @@ def approve_emoji(v, name):
badge_grant(badge_id=113, user=author)
badge_grant(badge_id=112, user=author)
if not Emoji.over_18:
cache.delete("emojis")
cache.delete(f"emoji_list_{emoji.kind}")
cache.delete(f"emojis_{emoji.over_18}")
cache.delete(f"emoji_list_{emoji.kind}_{emoji.over_18}")
purge_files_in_cloudflare_cache(f"{SITE_FULL_IMAGES}/e/{emoji.name}/webp")
@ -513,9 +512,8 @@ def update_emoji(v):
)
g.db.add(ma)
if not Emoji.over_18:
cache.delete("emojis")
cache.delete(f"emoji_list_{existing.kind}")
cache.delete(f"emojis_{existing.over_18}")
cache.delete(f"emoji_list_{existing.kind}_{existing.over_18}")
return {"message": f"'{name}' updated successfully!"}

View File

@ -42,10 +42,15 @@ def reddit_post(subreddit, v, path):
return redirect(f'https://{reddit}/{post_id}')
@cache.cached(make_cache_key=lambda kind:f"emoji_list_{kind}")
def get_emoji_list(kind):
@cache.cached(make_cache_key=lambda kind, over_18:f"emoji_list_{kind}_{over_18}")
def get_emoji_list(kind, over_18):
li = g.db.query(Emoji, User).join(User, Emoji.author_id == User.id).filter(Emoji.submitter_id == None, Emoji.kind == kind)
if not over_18:
li = li.filter(Emoji.over_18 == False)
li = li.order_by(Emoji.count.desc())
emojis = []
for emoji, author in g.db.query(Emoji, User).join(User, Emoji.author_id == User.id).filter(Emoji.submitter_id == None, Emoji.kind == kind, Emoji.over_18 == False).order_by(Emoji.count.desc()):
for emoji, author in li:
emoji.author = author.username if FEATURES['ASSET_SUBMISSIONS'] else None
emojis.append(emoji)
return emojis
@ -60,7 +65,7 @@ def marseys_redirect():
@limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400, key_func=get_ID)
@auth_required
def emoji_list(v, kind):
emojis = get_emoji_list(kind)
emojis = get_emoji_list(kind, v.over_18)
authors = get_accounts_dict([e.author_id for e in emojis], v=v, graceful=True)
if FEATURES['ASSET_SUBMISSIONS']:
@ -81,9 +86,13 @@ def emoji_list(v, kind):
@cache.cached(make_cache_key=lambda:"emojis")
def get_emojis():
emojis = g.db.query(Emoji, User).join(User, Emoji.author_id == User.id).filter(Emoji.submitter_id == None, Emoji.over_18 == False)
@cache.cached(make_cache_key=lambda over_18:f"emojis_{over_18}")
def get_emojis(over_18):
emojis = g.db.query(Emoji, User).join(User, Emoji.author_id == User.id).filter(Emoji.submitter_id == None)
if not over_18:
emojis = emojis.filter(Emoji.over_18 == False)
emojis1 = emojis.filter(Emoji.kind != 'Marsey Alphabet').order_by(Emoji.count.desc()).all()
emojis2 = emojis.filter(Emoji.kind == 'Marsey Alphabet').order_by(func.length(Emoji.name), Emoji.name).all()
emojis = emojis1 + emojis2
@ -102,7 +111,7 @@ def get_emojis():
@limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400, key_func=get_ID)
@auth_required
def emojis(v):
return get_emojis()
return get_emojis(v.over_18)