[WIP1] Localization, Shuttle bus section

This commit is contained in:
Andrea 2024-01-30 00:35:56 +01:00
parent a2b9f7a7c1
commit 1da054c9ff
7 changed files with 41 additions and 3 deletions

2
app.py
View File

@ -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)

View File

@ -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
View File

@ -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:

View File

@ -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'
}
}

1
res/icons/bus.svg Normal file
View File

@ -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

View File

@ -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>

View File

@ -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))