allow jannies to change the kind of emojis
parent
8f90386cc5
commit
bdc5d8bd12
|
@ -75,8 +75,6 @@ LOGGED_IN_CACHE_KEY = f"{SITE}_loggedin"
|
||||||
LOGGED_OUT_CACHE_KEY = f"{SITE}_loggedout"
|
LOGGED_OUT_CACHE_KEY = f"{SITE}_loggedout"
|
||||||
CHAT_ONLINE_CACHE_KEY = f"{SITE}_online"
|
CHAT_ONLINE_CACHE_KEY = f"{SITE}_online"
|
||||||
REDDIT_NOTIFS_CACHE_KEY = "reddit_notifications"
|
REDDIT_NOTIFS_CACHE_KEY = "reddit_notifications"
|
||||||
EMOJIS_CACHE_KEY = "emojis"
|
|
||||||
MARSEYS_CACHE_KEY = "marseys"
|
|
||||||
|
|
||||||
SESSION_LIFETIME = 60 * 60 * 24 * 365
|
SESSION_LIFETIME = 60 * 60 * 24 * 365
|
||||||
|
|
||||||
|
@ -1081,4 +1079,4 @@ else:
|
||||||
|
|
||||||
STARS = '\n\n★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n'
|
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")
|
||||||
|
|
|
@ -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.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]
|
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")
|
@app.post("/submit/emojis")
|
||||||
|
@ -56,9 +56,9 @@ def submit_emoji(v:User):
|
||||||
for emoji in emojis:
|
for emoji in emojis:
|
||||||
emoji.author = g.db.query(User.username).filter_by(id=emoji.author_id).one()[0]
|
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]
|
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!")
|
return error("Invalid emoji kind!")
|
||||||
|
|
||||||
if kind in {"Marsey", "Platy", "Wolf", "Tay"} and not name.startswith(kind.lower()):
|
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):
|
if not tags_regex.fullmatch(tags):
|
||||||
abort(400, "Invalid tags!")
|
abort(400, "Invalid tags!")
|
||||||
|
|
||||||
if new_kind not in EMOJIS_KINDS:
|
if new_kind not in EMOJI_KINDS:
|
||||||
abort(400, "Invalid kind!")
|
abort(400, "Invalid kind!")
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,9 +180,9 @@ def approve_emoji(v, name):
|
||||||
badge_grant(badge_id=112, user=author)
|
badge_grant(badge_id=112, user=author)
|
||||||
|
|
||||||
|
|
||||||
cache.delete(EMOJIS_CACHE_KEY)
|
cache.delete("emojis")
|
||||||
if emoji.kind == "Marsey":
|
if emoji.kind == "Marsey":
|
||||||
cache.delete(MARSEYS_CACHE_KEY)
|
cache.delete("marseys")
|
||||||
|
|
||||||
purge_files_in_cache(f"https://{SITE}/e/{emoji.name}/webp")
|
purge_files_in_cache(f"https://{SITE}/e/{emoji.name}/webp")
|
||||||
|
|
||||||
|
@ -437,9 +437,10 @@ def update_emoji(v):
|
||||||
file = request.files["image"]
|
file = request.files["image"]
|
||||||
name = request.values.get('name', '').lower().strip()
|
name = request.values.get('name', '').lower().strip()
|
||||||
tags = request.values.get('tags', '').lower().strip()
|
tags = request.values.get('tags', '').lower().strip()
|
||||||
|
kind = request.values.get('kind', '').strip()
|
||||||
|
|
||||||
def error(error):
|
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)
|
existing = g.db.get(Emoji, name)
|
||||||
if not existing:
|
if not existing:
|
||||||
|
@ -475,19 +476,31 @@ def update_emoji(v):
|
||||||
if not tags_regex.fullmatch(tags):
|
if not tags_regex.fullmatch(tags):
|
||||||
abort(400, "Invalid tags!")
|
abort(400, "Invalid tags!")
|
||||||
existing.tags += f" {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
|
updated = True
|
||||||
|
|
||||||
if not updated:
|
if not updated:
|
||||||
return error("You need to actually update something!")
|
return error("You need to actually update something!")
|
||||||
|
|
||||||
|
g.db.add(existing)
|
||||||
|
|
||||||
ma = ModAction(
|
ma = ModAction(
|
||||||
kind="update_emoji",
|
kind="update_emoji",
|
||||||
user_id=v.id,
|
user_id=v.id,
|
||||||
_note=f'<img loading="lazy" data-bs-toggle="tooltip" alt=":{name}:" title=":{name}:" src="/e/{name}.webp">'
|
_note=f'<img loading="lazy" data-bs-toggle="tooltip" alt=":{name}:" title=":{name}:" src="/e/{name}.webp">'
|
||||||
)
|
)
|
||||||
g.db.add(ma)
|
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")
|
@app.get("/admin/update/hats")
|
||||||
@limiter.limit(DEFAULT_RATELIMIT)
|
@limiter.limit(DEFAULT_RATELIMIT)
|
||||||
|
|
|
@ -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,
|
"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,
|
"git_head":git_head, "max_days":max_days,
|
||||||
"BIO_FRIENDS_ENEMIES_LENGTH_LIMIT":BIO_FRIENDS_ENEMIES_LENGTH_LIMIT,
|
"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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ def reddit_post(subreddit, v, path):
|
||||||
return redirect(f'https://{reddit}/{post_id}')
|
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):
|
def get_marseys(db:scoped_session):
|
||||||
if not FEATURES['MARSEYS']: return []
|
if not FEATURES['MARSEYS']: return []
|
||||||
marseys = []
|
marseys = []
|
||||||
|
@ -72,7 +72,7 @@ def marseys(v:User):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@cache.cached(key_prefix=EMOJIS_CACHE_KEY)
|
@cache.cached(key_prefix="emojis")
|
||||||
def get_emojis():
|
def get_emojis():
|
||||||
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()):
|
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()):
|
||||||
|
|
|
@ -23,6 +23,22 @@
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</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>
|
<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>
|
<input autocomplete="off" type="text" id="name" class="form-control" name="name" maxlength="30" placeholder="Required" {% if name %}value="{{name}}"{% endif %} required>
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
{% if not kind %}
|
{% if not kind %}
|
||||||
<option hidden disabled selected value>-- select an option --</option>
|
<option hidden disabled selected value>-- select an option --</option>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% for entry in kinds %}
|
{% for entry in EMOJI_KINDS %}
|
||||||
<option value="{{entry}}" {% if entry == kind %}selected{% endif %}>
|
<option value="{{entry}}" {% if entry == kind %}selected{% endif %}>
|
||||||
{{entry}}
|
{{entry}}
|
||||||
</option>
|
</option>
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<div><label class="mt-3" for="{{emoji.name}}-kind">Kind</label></div>
|
<div><label class="mt-3" for="{{emoji.name}}-kind">Kind</label></div>
|
||||||
<div class="input-group mb2">
|
<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 %}>
|
<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 %}>
|
<option value="{{entry}}" {% if emoji.kind==entry %}selected{% endif %}>
|
||||||
{{entry}}
|
{{entry}}
|
||||||
</option>
|
</option>
|
||||||
|
|
Loading…
Reference in New Issue