Makeroom wizard #27

Merged
stranck merged 15 commits from drew-dev into stranck-dev 2024-05-20 10:32:09 +00:00
3 changed files with 59 additions and 14 deletions
Showing only changes of commit 13e5217601 - Show all commits

View File

@ -123,28 +123,31 @@ async def room_wizard(request, order:Order):
}, },
'B':{ 'B':{
'type': 'new', 'type': 'new',
'room_type': 5,
'to_add': ['B', 'a', 'c'] 'to_add': ['B', 'a', 'c']
} }
} }
result_map = {}
# Fill already existing rooms # Fill already existing rooms
for room_order in incomplete_orders.items(): for room_order in incomplete_orders.items():
room = room_order.value room = room_order[1]
to_add = [] to_add = []
missing_slots = room.room_person_no - len(room.room_members) missing_slots = room.room_person_no - len(room.room_members)
for i in enumerate(missing_slots): for i in range(missing_slots):
compatible_roomates = {key:value for key,value in roomless_orders.items() if value.bed_in_room == room.bed_in_room} compatible_roomates = {key:value for key,value in roomless_orders.items() if value.bed_in_room == room.bed_in_room}
if len(compatible_roomates.items()) == 0: break if len(compatible_roomates.items()) == 0: break
# Try picking a roomate that's from the same country and room type # Try picking a roomate that's from the same country and room type
country = room.country.lower() country = room.country.lower()
roomless_by_country = {key:value for key,value in compatible_roomates.items() if value.country.lower() == country} roomless_by_country = {key:value for key,value in compatible_roomates.items() if value.country.lower() == country}
if len(roomless_by_country.items()) > 0: if len(roomless_by_country.items()) > 0:
code_to_add = roomless_by_country.keys()[0] code_to_add = list(roomless_by_country.keys())[0]
to_add.append(code_to_add) to_add.append(code_to_add)
del roomless_orders[code_to_add] del roomless_orders[code_to_add]
else: else:
# If not, add first roomless there is # If not, add first roomless there is
code_to_add = compatible_roomates.keys()[0] code_to_add = list(compatible_roomates.keys())[0]
to_add.append(code_to_add) to_add.append(code_to_add)
del roomless_orders[code_to_add] del roomless_orders[code_to_add]
result_map[room.code] = { result_map[room.code] = {
@ -152,15 +155,33 @@ async def room_wizard(request, order:Order):
'to_add': to_add 'to_add': to_add
} }
# Create additional rooms # Create additional rooms
while len(roomless_orders.items()) > 0:
print ('Incomplete orders') room = list(roomless_orders.items())[0][1]
for order in incomplete_orders.values(): to_add = []
print(f'{order.code} - {order.bed_in_room}') missing_slots = room.room_person_no - len(room.room_members)
print ('Roomless') for i in range(missing_slots):
for order in roomless_orders.values(): compatible_roomates = {key:value for key,value in roomless_orders.items() if value.bed_in_room == room.bed_in_room}
print(f'{order.code} - {order.bed_in_room}') if len(compatible_roomates.items()) == 0: break
# Try picking a roomate that's from the same country and room type
return redirect(f'/manage/admin') country = room.country.lower()
roomless_by_country = {key:value for key,value in compatible_roomates.items() if value.country.lower() == country}
if len(roomless_by_country.items()) > 0:
code_to_add = list(roomless_by_country.keys())[0]
to_add.append(code_to_add)
del roomless_orders[code_to_add]
else:
# If not, add first roomless there is
code_to_add = list(compatible_roomates.keys())[0]
to_add.append(code_to_add)
del roomless_orders[code_to_add]
result_map[room.code] = {
'type': 'new',
'room_type': room.bed_in_room,
'to_add': to_add
}
tpl = request.app.ctx.tpl.get_template('wizard.html')
return html(tpl.render(order=order, orders=orders, data=result_map))
@bp.get('/propic/remind') @bp.get('/propic/remind')
async def propic_remind_missing(request, order:Order): async def propic_remind_missing(request, order:Order):

View File

@ -7,7 +7,7 @@
<div aria-hidden="true" class="propic-border-animation"></div> <div aria-hidden="true" class="propic-border-animation"></div>
</div> </div>
{% endif %} {% endif %}
{% if current and current.isAdmin () and (not current.code == order.code )%} {% if current and current.isAdmin () and (not current.code == order.code ) and not nologin %}
<a class="control-login-as" href="/manage/admin/loginas/{{order.code}}"> <a class="control-login-as" href="/manage/admin/loginas/{{order.code}}">
{% endif %} {% endif %}
<img alt="{{order.ans('fursona_name') if order.ans('fursona_name') else 'A user'}}'s profile picture" src="{{imgSrc}}" class="absolute propic {{(('propic-' + order.sponsorship) if not effects else '') if order.sponsorship else 'propic-base'}}"/> <img alt="{{order.ans('fursona_name') if order.ans('fursona_name') else 'A user'}}'s profile picture" src="{{imgSrc}}" class="absolute propic {{(('propic-' + order.sponsorship) if not effects else '') if order.sponsorship else 'propic-base'}}"/>

24
tpl/wizard.html Normal file
View File

@ -0,0 +1,24 @@
{% extends "base.html" %}
{% block title %}Admin panel{% endblock %}
{% block main %}
<main class="container">
<script src="/res/scripts/wizardManager.js"></script>
<header>
<picture>
<source srcset="/res/furizon.png" media="(prefers-color-scheme:dark)">
<img src="/res/furizon-light.png" style="height:4rem;text-align:center;">
</picture>
</header>
<!--order = current order login
orders = all non confirmed rooms orders
data = assigned rooms -->
<h2>Review rooms</h2>
<hr>
{% for room in data.items() %}
{%with room_order = orders[room[0]] %}
{% endwith %}
{% endfor %}
</main>
{% endblock %}