We're so back #16
2
app.py
2
app.py
|
@ -10,6 +10,7 @@ from aztec_code_generator import AztecCode
|
|||
from propic import resetDefaultPropic
|
||||
from io import BytesIO
|
||||
from asyncio import Queue
|
||||
from messages import LOCALES
|
||||
import sqlite3
|
||||
from sanic.log import logger
|
||||
|
||||
|
@ -58,6 +59,7 @@ async def main_start(*_):
|
|||
app.ctx.tpl = Environment(loader=FileSystemLoader("tpl"), autoescape=True)
|
||||
app.ctx.tpl.globals.update(time=time)
|
||||
app.ctx.tpl.globals.update(PROPIC_DEADLINE=PROPIC_DEADLINE)
|
||||
app.ctx.tpl.globals.update(LOCALES=LOCALES)
|
||||
app.ctx.tpl.globals.update(ITEMS_ID_MAP=ITEMS_ID_MAP)
|
||||
app.ctx.tpl.globals.update(ITEM_VARIATIONS_MAP=ITEM_VARIATIONS_MAP)
|
||||
app.ctx.tpl.globals.update(ROOM_TYPE_NAMES=ROOM_TYPE_NAMES)
|
||||
|
|
|
@ -33,6 +33,11 @@ DEV_MODE = True
|
|||
ACCESS_LOG = True
|
||||
EXTRA_PRINTS = True
|
||||
|
||||
# Additional configured locales.
|
||||
# If an order has a country that's not listed here,
|
||||
# Will default to an english preference.
|
||||
AVAILABLE_LOCALES = ['it',]
|
||||
|
||||
# Metadata property for item-id mapping
|
||||
METADATA_NAME = "item_name"
|
||||
# Metadata property for internal category mapping (not related to pretix's category)
|
||||
|
|
5
ext.py
5
ext.py
|
@ -131,6 +131,7 @@ class Order:
|
|||
self.actual_room = self.ans('actual_room')
|
||||
self.staff_role = self.ans('staff_role')
|
||||
self.telegram_username = self.ans('telegram_username').strip('@') if self.ans('telegram_username') else None
|
||||
self.shuttle_bus = self.ans('shuttle_bus')
|
||||
def __getitem__(self, var):
|
||||
return self.data[var]
|
||||
|
||||
|
@ -215,7 +216,7 @@ class Order:
|
|||
if res.status_code != 200:
|
||||
for ans, err in zip(self.answers, res.json()['answers']):
|
||||
if err:
|
||||
logger.error ('[ANSWERS SENDING] ERROR ON', ans, err)
|
||||
logger.error ('[ANSWERS SENDING] ERROR ON %s %s', ans, err)
|
||||
|
||||
raise exceptions.ServerError('There has been an error while updating this answers.')
|
||||
|
||||
|
@ -227,6 +228,8 @@ class Order:
|
|||
self.time = -1
|
||||
self.loadAns()
|
||||
|
||||
def get_language(self):
|
||||
return self.country.lower() if self.country.lower() in AVAILABLE_LOCALES else 'en'
|
||||
|
||||
@dataclass
|
||||
class Quotas:
|
||||
|
|
11
messages.py
11
messages.py
|
@ -11,3 +11,14 @@ ROOM_UNCONFIRM_TEXT = {
|
|||
'html': "Hello <b>{0}</b><br>We had to <b>unconfirm</b> your room <i>'{1}'</i> due to the following issues:<br></p>{2}<br><p>Please contact your room's owner or contact our support for further informations at <a href=\"https://furizon.net/contact/\"> https://furizon.net/contact/</a>.<br>Thank you.<br><br><a class=\"link\" style=\"background-color: #1095c1; color: #fff;\" href=\"https://reg.furizon.net/manage/welcome\">Manage booking</a>",
|
||||
'plain': "Hello {0}\nWe had to unconfirm your room '{1}' due to the following issues:\n{2}\nPlease contact your room's owner or contact our support for further informations at https://furizon.net/contact/.\nThank you\n\nTo manage your booking: https://reg.furizon.net/manage/welcome"
|
||||
}
|
||||
|
||||
LOCALES = {
|
||||
'shuttle_link': {
|
||||
'en': 'Book now',
|
||||
'it': 'Prenota ora'
|
||||
},
|
||||
'shuttle_link_url': {
|
||||
'en': 'https://visitfiemme.regiondo.com/furizon?_ga=2.129644046.307369854.1705325023-235291123.1705325023',
|
||||
'it': 'https://experience.visitfiemme.it/furizon'
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z" /></svg>
|
After Width: | Height: | Size: 466 B |
|
@ -10,6 +10,7 @@
|
|||
|
||||
{% endblock %}
|
||||
{% block main %}
|
||||
{% set locale = order.get_language() %}
|
||||
<main class="container">
|
||||
<header>
|
||||
<picture>
|
||||
|
@ -67,6 +68,15 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if order.shuttle_bus %}
|
||||
<tr>
|
||||
<th>Shuttle</th>
|
||||
<td>
|
||||
<img src="/res/icons/bus.svg" class="icon" />
|
||||
{{order.shuttle_bus}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
<h2>Manage your booking</h2>
|
||||
|
@ -76,6 +86,12 @@
|
|||
{% endif %}
|
||||
{% include 'blocks/badge.html' %}
|
||||
|
||||
<details id="shuttle">
|
||||
<summary role="button"><img src="/res/icons/bus.svg" class="icon" />Shuttle</summary>
|
||||
<p>This year we teamed up with VisitFiemme to take our guests to the convention.</p>
|
||||
<p style="text-align:right;"><a href="{{LOCALES['shuttle_link_url'][locale]}}" target="_blank" role="button">Book now</a></p>
|
||||
</details>
|
||||
|
||||
<details id="barcard">
|
||||
<summary role="button"><img src="/res/icons/bar.svg" class="icon" />Barcard</summary>
|
||||
<p>This year's badges will be NFC-enabled and serve as a digital barcard, allowing you to load 'drinks' onto your badge and use it to purchase beverages at the bar without the need for physical cash or the risk of losing a paper barcard. The barcard system will be enabled closer to the convention, so you will have the opportunity to load your badge in advance and enjoy a convenient, cashless experience at the event. Keep an eye out for updates on when the system will be live and available for use.</p>
|
||||
|
|
2
utils.py
2
utils.py
|
@ -170,7 +170,7 @@ async def validate_rooms(request, rooms, om):
|
|||
logger.info('[ROOM VALIDATION] Every room passed the check.')
|
||||
return
|
||||
|
||||
logger.warning(f'[ROOM VALIDATION] Room validation failed for orders: ', list(map(lambda rf: rf[0].code, failed_rooms)))
|
||||
logger.warning(f'[ROOM VALIDATION] Room validation failed for orders: %s', list(map(lambda rf: rf[0].code, failed_rooms)))
|
||||
|
||||
# Get confirmed rooms that fail validation
|
||||
failed_confirmed_rooms = list(filter(lambda fr: (fr[0].room_confirmed == True), failed_rooms))
|
||||
|
|
Loading…
Reference in New Issue