add /admin/update/marseys
parent
67d1b05d14
commit
ef00d588f5
|
@ -341,3 +341,47 @@ def remove_hat(v, name):
|
||||||
os.remove(f"/asset_submissions/hats/{hat.name}")
|
os.remove(f"/asset_submissions/hats/{hat.name}")
|
||||||
|
|
||||||
return {"message": f"'{hat.name}' removed!"}
|
return {"message": f"'{hat.name}' removed!"}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/admin/update/marseys")
|
||||||
|
@admin_level_required(3)
|
||||||
|
def update_marseys(v):
|
||||||
|
return render_template("update_marseys.html", v=v)
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/admin/update/marseys")
|
||||||
|
@admin_level_required(3)
|
||||||
|
def update_marsey(v):
|
||||||
|
|
||||||
|
file = request.files["image"]
|
||||||
|
name = request.values.get('name').lower().strip()
|
||||||
|
|
||||||
|
def error(error):
|
||||||
|
return render_template("update_marseys.html", v=v, error=error)
|
||||||
|
|
||||||
|
if request.headers.get("cf-ipcountry") == "T1":
|
||||||
|
return error("Image uploads are not allowed through TOR.")
|
||||||
|
|
||||||
|
if not file or not file.content_type.startswith('image/'):
|
||||||
|
return error("You need to submit an image!")
|
||||||
|
|
||||||
|
if not marsey_regex.fullmatch(name):
|
||||||
|
return error("Invalid name!")
|
||||||
|
|
||||||
|
existing = g.db.query(Marsey.name).filter_by(name=name).one_or_none()
|
||||||
|
if not existing:
|
||||||
|
return error("A marsey with this name doesn't exist!")
|
||||||
|
|
||||||
|
|
||||||
|
highquality = f"/asset_submissions/marseys/{name}"
|
||||||
|
file.save(highquality)
|
||||||
|
with Image.open(highquality) as i:
|
||||||
|
new_path = f'/asset_submissions/marseys/original/{name}.{i.format.lower()}'
|
||||||
|
rename(highquality, new_path)
|
||||||
|
|
||||||
|
filename = f"files/assets/images/emojis/{name}.webp"
|
||||||
|
copyfile(new_path, filename)
|
||||||
|
process_image(filename, resize=250, trim=True)
|
||||||
|
|
||||||
|
return render_template("update_marseys.html", v=v, msg=f"'{name}' updated successfully!")
|
|
@ -8,9 +8,9 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<h3>Admin Tools</h3>
|
<h3 class="pb-2">Admin Tools</h3>
|
||||||
|
|
||||||
{% if v.admin_level > 2 and (SIDEBAR_THREAD or BANNER_THREAD or BADGE_THREAD or SNAPPY_THREAD) %}
|
{% if v.admin_level > 2 and (SITE_NAME == 'rDrama' or SIDEBAR_THREAD or BANNER_THREAD or BADGE_THREAD or SNAPPY_THREAD) %}
|
||||||
<h4>Add Stuff</h4>
|
<h4>Add Stuff</h4>
|
||||||
<ul>
|
<ul>
|
||||||
{% if SIDEBAR_THREAD %}
|
{% if SIDEBAR_THREAD %}
|
||||||
|
@ -25,6 +25,9 @@
|
||||||
{% if SNAPPY_THREAD %}
|
{% if SNAPPY_THREAD %}
|
||||||
<li><a href="/post/{{SNAPPY_THREAD}}">Add Snappy Quotes</a></li>
|
<li><a href="/post/{{SNAPPY_THREAD}}">Add Snappy Quotes</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if SITE_NAME == 'rDrama' %}
|
||||||
|
<li><a href="/admin/update/marseys">Update Marseys</a></li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
{% extends "default.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
<title>Update Marseys</title>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagetype %}message{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% if error %}
|
||||||
|
<div class="alert alert-danger alert-dismissible fade show mb-3 mt-4" role="alert">
|
||||||
|
<i class="fas fa-exclamation-circle my-auto"></i>
|
||||||
|
<span>
|
||||||
|
{{error}}
|
||||||
|
</span>
|
||||||
|
<button class="close" data-bs-dismiss="alert" aria-label="Close">
|
||||||
|
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if msg %}
|
||||||
|
<div class="alert alert-success alert-dismissible fade show my-3" role="alert">
|
||||||
|
<i class="fas fa-check-circle my-auto" aria-hidden="true"></i>
|
||||||
|
<span>
|
||||||
|
{{msg}}
|
||||||
|
</span>
|
||||||
|
<button class="close" data-bs-dismiss="alert" aria-label="Close">
|
||||||
|
<span aria-hidden="true"><i class="far fa-times"></i></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="mx-4">
|
||||||
|
<h2 class="mt-5">Update Marsey</h2>
|
||||||
|
<div class="settings-section rounded">
|
||||||
|
<div class="d-lg-flex">
|
||||||
|
<div class="body w-lg-100">
|
||||||
|
<form action="/admin/update/marseys" method="post" enctype="multipart/form-data">
|
||||||
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
|
|
||||||
|
<div id="image-upload-block">
|
||||||
|
<div><label class="mt-3">Image</label></div>
|
||||||
|
|
||||||
|
<img loading="lazy" id="image-preview" class="d-none" style="max-width:50%;border:5px white solid">
|
||||||
|
<label class="btn btn-secondary m-0" for="file-upload">
|
||||||
|
<div id="filename-show">Select Image</div>
|
||||||
|
<input autocomplete="off" id="file-upload" accept="image/*" type="file" name="image" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} hidden>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="mt-3" for="name">Name</label>
|
||||||
|
<input autocomplete="off" type="text" id="name" class="form-control" name="name" maxlength="30" pattern='[Mm][Aa][Rr][Ss][Ee][Yy][a-zA-Z0-9]{1,24}' placeholder="Required" value="{{name}}" required>
|
||||||
|
|
||||||
|
<div class="footer mt-4">
|
||||||
|
<div class="d-flex">
|
||||||
|
<input id="update-marsey" type="submit" onclick="disable(this)" class="btn btn-primary ml-auto" value="Update Marsey">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.onpaste = function(event) {
|
||||||
|
files = event.clipboardData.files
|
||||||
|
|
||||||
|
filename = files[0]
|
||||||
|
|
||||||
|
if (filename)
|
||||||
|
{
|
||||||
|
filename = filename.name.toLowerCase()
|
||||||
|
f=document.getElementById('file-upload');
|
||||||
|
f.files = files;
|
||||||
|
document.getElementById('filename-show').textContent = filename;
|
||||||
|
if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".gif") || filename.endsWith(".webp"))
|
||||||
|
{
|
||||||
|
var fileReader = new FileReader();
|
||||||
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
|
fileReader.addEventListener("load", function () {
|
||||||
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
document.getElementById('image-preview').classList.remove('d-none');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
document.getElementById('file-upload').setAttribute('placeholder="Required" required', 'false');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('file-upload').addEventListener('change', function(){
|
||||||
|
f=document.getElementById('file-upload');
|
||||||
|
document.getElementById('filename-show').textContent = document.getElementById('file-upload').files[0].name.substr(0, 20);
|
||||||
|
filename = f.files[0].name.toLowerCase()
|
||||||
|
if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".gif") || filename.endsWith(".webp"))
|
||||||
|
{
|
||||||
|
var fileReader = new FileReader();
|
||||||
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
|
fileReader.addEventListener("load", function () {
|
||||||
|
document.getElementById('image-preview').setAttribute('src', this.result);
|
||||||
|
document.getElementById('image-preview').classList.remove('d-none');
|
||||||
|
});
|
||||||
|
document.getElementById('submit-marsey').disabled = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue