diff --git a/propic.py b/propic.py new file mode 100644 index 0000000..4d715a4 --- /dev/null +++ b/propic.py @@ -0,0 +1,45 @@ +from sanic.response import html, redirect, text +from sanic import Blueprint, exceptions +from random import choice +from ext import * +from config import headers +from PIL import Image +from os.path import isfile +from os import unlink +from io import BytesIO +from hashlib import sha224 + +bp = Blueprint("propic", url_prefix="/manage/propic") + +@bp.post("/upload") +async def upload_propic(request, order: Order): + if not order: raise exceptions.Forbidden("You have been logged out. Please access the link in your E-Mail to login again!") + + if request.form.get('submit') == 'Delete main image': + await order.edit_answer('propic', None) + + if request.form.get('submit') == 'Delete fursuit image': + await order.edit_answer('propic_fursuiter', None) + + for fn, body in request.files.items(): + if fn not in ['propic', 'propic_fursuiter']: + continue + + if not body[0].body: continue + + h = sha224(body[0].body).hexdigest()[:32] + + try: + img = Image.open(BytesIO(body[0].body)) + img = img.convert('RGB') + img.thumbnail((512,512)) + img.save(f"res/propic/{fn}_{order.code}_{h}.jpg") + except: + raise + raise exceptions.BadRequest("The image you uploaded is not valid.") + else: + await order.edit_answer(fn, f"{fn}_{order.code}_{h}.jpg") + + await order.send_answers() + + return redirect("/manage/welcome#badge") diff --git a/requirements.txt b/requirements.txt index 0472e9a..9d83a6c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ sanic sanic-ext httpx +Pillow diff --git a/res/propic/default.png b/res/propic/default.png new file mode 100644 index 0000000..2b5307d Binary files /dev/null and b/res/propic/default.png differ diff --git a/tpl/welcome.html b/tpl/welcome.html index b451e80..698edf0 100644 --- a/tpl/welcome.html +++ b/tpl/welcome.html @@ -49,7 +49,7 @@ {# Show notice if the room is confirmed #} {% if order.room_confirmed %} -
✅ Your room has been confirmed
+✅ Your {{[None,'single','double','triple','quadruple','quintuple'][len(room_members)]}} room has been confirmed
{% endif %} {# Show roommates if room is set #} @@ -58,14 +58,12 @@ {% set room = namespace(forbidden=false) %} {% for person in room_members %}ROOM OWNER
{% endif %} -{{person.ans('staff_title') if person.ans('staff_title') else ''}}{{' · Fursuiter' if person.ans('is_fursuiter') != 'No'}}
+ {% if person.code == order.room_id %}ROOM OWNER
{% endif %} +{{person.ans('staff_title') if person.ans('staff_title') else ''}} {{'Fursuiter' if person.ans('is_fursuiter') != 'No'}}
{% if person.status == 'pending' %}UNPAID
- {% else %} -PAID
{% endif %} {% if order.room_owner and person.code != order.code and (not order.room_confirmed) %}KICK{% endif %}- {% if len(room_members) == 1 %} + {% if len(room_members) == 1 and not order.room_confirmed %} Delete room {% endif %} @@ -124,15 +122,13 @@
+ | {{person.name}} | {% if person.status == 'pending' %}UNPAID | - {% else %} -PAID | {% endif %} -Approve | -Reject | +Approve | +Reject |
{{q['name']}} | -{{q['available_number']}} left | -
{{q['name']}} | +{{q['available_number']}} left | +
⚠️ One or more badge pictures are missing! This will cause you badge to be empty, so make sure to upload something before the deadline!
+ {% endif %} + +