allow jannies to change the kind of emojis

pull/142/head
Aevann 2023-03-21 18:50:22 +02:00
parent 8f90386cc5
commit bdc5d8bd12
6 changed files with 45 additions and 17 deletions

View File

@ -75,8 +75,6 @@ LOGGED_IN_CACHE_KEY = f"{SITE}_loggedin"
LOGGED_OUT_CACHE_KEY = f"{SITE}_loggedout"
CHAT_ONLINE_CACHE_KEY = f"{SITE}_online"
REDDIT_NOTIFS_CACHE_KEY = "reddit_notifications"
EMOJIS_CACHE_KEY = "emojis"
MARSEYS_CACHE_KEY = "marseys"
SESSION_LIFETIME = 60 * 60 * 24 * 365
@ -1081,4 +1079,4 @@ else:
STARS = '\n\n★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n'
EMOJIS_KINDS = ("Marsey", "Platy", "Wolf", "Tay", "Donkey Kong", "Marsey Flags", "Marsey Alphabet", "Classic", "Rage", "Wojak", "Misc")
EMOJI_KINDS = ("Marsey", "Platy", "Wolf", "Tay", "Donkey Kong", "Marsey Flags", "Marsey Alphabet", "Classic", "Rage", "Wojak", "Misc")

View File

@ -34,7 +34,7 @@ def submit_emojis(v:User):
emoji.author = g.db.query(User.username).filter_by(id=emoji.author_id).one()[0]
emoji.submitter = g.db.query(User.username).filter_by(id=emoji.submitter_id).one()[0]
return render_template("submit_emojis.html", v=v, emojis=emojis, kinds=EMOJIS_KINDS, msg=get_msg())
return render_template("submit_emojis.html", v=v, emojis=emojis, msg=get_msg())
@app.post("/submit/emojis")
@ -56,9 +56,9 @@ def submit_emoji(v:User):
for emoji in emojis:
emoji.author = g.db.query(User.username).filter_by(id=emoji.author_id).one()[0]
emoji.submitter = g.db.query(User.username).filter_by(id=emoji.submitter_id).one()[0]
return render_template("submit_emojis.html", v=v, emojis=emojis, error=error, name=name, kind=kind, tags=tags, username=username, kinds=EMOJIS_KINDS), 400
return render_template("submit_emojis.html", v=v, emojis=emojis, error=error, name=name, kind=kind, tags=tags, username=username), 400
if kind not in EMOJIS_KINDS:
if kind not in EMOJI_KINDS:
return error("Invalid emoji kind!")
if kind in {"Marsey", "Platy", "Wolf", "Tay"} and not name.startswith(kind.lower()):
@ -137,7 +137,7 @@ def approve_emoji(v, name):
if not tags_regex.fullmatch(tags):
abort(400, "Invalid tags!")
if new_kind not in EMOJIS_KINDS:
if new_kind not in EMOJI_KINDS:
abort(400, "Invalid kind!")
@ -180,9 +180,9 @@ def approve_emoji(v, name):
badge_grant(badge_id=112, user=author)
cache.delete(EMOJIS_CACHE_KEY)
cache.delete("emojis")
if emoji.kind == "Marsey":
cache.delete(MARSEYS_CACHE_KEY)
cache.delete("marseys")
purge_files_in_cache(f"https://{SITE}/e/{emoji.name}/webp")
@ -437,9 +437,10 @@ def update_emoji(v):
file = request.files["image"]
name = request.values.get('name', '').lower().strip()
tags = request.values.get('tags', '').lower().strip()
kind = request.values.get('kind', '').strip()
def error(error):
return render_template("admin/update_assets.html", v=v, error=error, name=name, tags=tags, type="Emoji")
return render_template("admin/update_assets.html", v=v, error=error, name=name, tags=tags, kind=kind, type="Emoji")
existing = g.db.get(Emoji, name)
if not existing:
@ -475,19 +476,31 @@ def update_emoji(v):
if not tags_regex.fullmatch(tags):
abort(400, "Invalid tags!")
existing.tags += f" {tags}"
g.db.add(existing)
updated = True
if kind and existing.kind != kind and kind != "none":
if kind not in EMOJI_KINDS:
abort(400, "Invalid kind!")
existing.kind = kind
updated = True
if not updated:
return error("You need to actually update something!")
g.db.add(existing)
ma = ModAction(
kind="update_emoji",
user_id=v.id,
_note=f'<img loading="lazy" data-bs-toggle="tooltip" alt=":{name}:" title=":{name}:" src="/e/{name}.webp">'
)
g.db.add(ma)
return render_template("admin/update_assets.html", v=v, msg=f"'{name}' updated successfully!", name=name, tags=tags, type="Emoji")
cache.delete("emojis")
if existing.kind == "Marsey":
cache.delete("marseys")
return render_template("admin/update_assets.html", v=v, msg=f"'{name}' updated successfully!", name=name, tags=tags, kind=kind, type="Emoji")
@app.get("/admin/update/hats")
@limiter.limit(DEFAULT_RATELIMIT)

View File

@ -144,5 +144,6 @@ def inject_constants():
"DEFAULT_CONFIG_VALUE":DEFAULT_CONFIG_VALUE, "IS_LOCALHOST":IS_LOCALHOST, "BACKGROUND_CATEGORIES":BACKGROUND_CATEGORIES, "PAGE_SIZE":PAGE_SIZE, "TAGLINES":TAGLINES, "IS_FISTMAS":IS_FISTMAS, "get_alt_graph":get_alt_graph, "current_registered_users":current_registered_users,
"git_head":git_head, "max_days":max_days,
"BIO_FRIENDS_ENEMIES_LENGTH_LIMIT":BIO_FRIENDS_ENEMIES_LENGTH_LIMIT,
"IMMUNE_TO_AWARDS": IMMUNE_TO_AWARDS, "SITE_FULL_IMAGES": SITE_FULL_IMAGES
"IMMUNE_TO_AWARDS": IMMUNE_TO_AWARDS, "SITE_FULL_IMAGES": SITE_FULL_IMAGES,
"EMOJI_KINDS": EMOJI_KINDS,
}

View File

@ -41,7 +41,7 @@ def reddit_post(subreddit, v, path):
return redirect(f'https://{reddit}/{post_id}')
@cache.cached(key_prefix=MARSEYS_CACHE_KEY)
@cache.cached(key_prefix="marseys")
def get_marseys(db:scoped_session):
if not FEATURES['MARSEYS']: return []
marseys = []
@ -72,7 +72,7 @@ def marseys(v:User):
@cache.cached(key_prefix=EMOJIS_CACHE_KEY)
@cache.cached(key_prefix="emojis")
def get_emojis():
emojis = []
for emoji, author in g.db.query(Emoji, User).join(User, Emoji.author_id == User.id).filter(Emoji.submitter_id == None).order_by(Emoji.count.desc()):

View File

@ -23,6 +23,22 @@
</label>
</div>
{% if type == "Emoji" %}
<label class="mt-3" for="kind">Kind</label>
<div class="input-group mb2">
<select autocomplete="off" id='kind' class="form-control" name="kind">
{% if not kind %}
<option hidden disabled selected value>-- select an option --</option>
{% endif %}
{% for entry in EMOJI_KINDS %}
<option value="{{entry}}" {% if entry == kind %}selected{% endif %}>
{{entry}}
</option>
{% endfor %}
</select>
</div>
{% endif %}
<label class="mt-3" for="name">Name</label>
<input autocomplete="off" type="text" id="name" class="form-control" name="name" maxlength="30" placeholder="Required" {% if name %}value="{{name}}"{% endif %} required>

View File

@ -28,7 +28,7 @@
{% if not kind %}
<option hidden disabled selected value>-- select an option --</option>
{% endif %}
{% for entry in kinds %}
{% for entry in EMOJI_KINDS %}
<option value="{{entry}}" {% if entry == kind %}selected{% endif %}>
{{entry}}
</option>
@ -74,7 +74,7 @@
<div><label class="mt-3" for="{{emoji.name}}-kind">Kind</label></div>
<div class="input-group mb2">
<select autocomplete="off" id='{{emoji.name}}-kind' class="form-control" name="kind" required {% if v.admin_level < PERMS['MODERATE_PENDING_SUBMITTED_ASSETS'] %}disabled readonly{% endif %}>
{% for entry in kinds %}
{% for entry in EMOJI_KINDS %}
<option value="{{entry}}" {% if emoji.kind==entry %}selected{% endif %}>
{{entry}}
</option>