mirror of
https://github.com/pretix/pretix.git
synced 2025-12-06 21:42:49 +00:00
Compare commits
39 Commits
a11y-fix-b
...
a11y-fix-w
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8a562ed7c | ||
|
|
d62152beaf | ||
|
|
2ce9584a6f | ||
|
|
f1fc4cb8a4 | ||
|
|
bf3ee608ba | ||
|
|
6b331888e9 | ||
|
|
225b2452bd | ||
|
|
e7d024b146 | ||
|
|
0af94c3712 | ||
|
|
3007b89d9b | ||
|
|
9ee50a28a1 | ||
|
|
4dc5014947 | ||
|
|
ebf2039a4d | ||
|
|
f201ab8884 | ||
|
|
e20cb7649d | ||
|
|
e6cab37f12 | ||
|
|
0659338392 | ||
|
|
a0f0e0ca48 | ||
|
|
59af0bbfb8 | ||
|
|
6766d649f5 | ||
|
|
c17a090244 | ||
|
|
d103d8782b | ||
|
|
4f4903b00e | ||
|
|
caf291630c | ||
|
|
6d0368a1bb | ||
|
|
57d33e1eb1 | ||
|
|
e6ec4cb435 | ||
|
|
6043a96575 | ||
|
|
5bc1fb8e81 | ||
|
|
47c840b9e5 | ||
|
|
b6007a1af4 | ||
|
|
1caa71cdbe | ||
|
|
1f2a0278c0 | ||
|
|
cf51c879c7 | ||
|
|
1030e2dc1f | ||
|
|
8d320b24a5 | ||
|
|
8235132de8 | ||
|
|
2614f12faf | ||
|
|
6f92f2324f |
@@ -35,19 +35,22 @@ def get_powered_by(request, safelink=True):
|
||||
d = gs.settings.license_check_input
|
||||
if d.get('poweredby_name'):
|
||||
if d.get('poweredby_url'):
|
||||
n = '<a href="{}" target="_blank" rel="noopener">{}</a>'.format(
|
||||
sl(d['poweredby_url']) if safelink else d['poweredby_url'],
|
||||
d['poweredby_name']
|
||||
msg = gettext('<a {a_name_attr}>powered by {name}</a> <a {a_attr}>based on pretix</a>').format(
|
||||
name=d['poweredby_name'],
|
||||
a_name_attr='href="{}" target="_blank" rel="noopener"'.format(
|
||||
sl(d['poweredby_url']) if safelink else d['poweredby_url'],
|
||||
),
|
||||
a_attr='href="{}" target="_blank" rel="noopener"'.format(
|
||||
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
|
||||
)
|
||||
)
|
||||
else:
|
||||
n = d['poweredby_name']
|
||||
|
||||
msg = gettext('powered by {name} based on <a {a_attr}>pretix</a>').format(
|
||||
name=n,
|
||||
a_attr='href="{}" target="_blank" rel="noopener"'.format(
|
||||
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
|
||||
msg = gettext('<a {a_attr}>powered by {name} based on pretix</a>').format(
|
||||
name=d['poweredby_name'],
|
||||
a_attr='href="{}" target="_blank" rel="noopener"'.format(
|
||||
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
|
||||
)
|
||||
)
|
||||
)
|
||||
else:
|
||||
msg = gettext('<a %(a_attr)s>ticketing powered by pretix</a>') % {
|
||||
'a_attr': 'href="{}" target="_blank" rel="noopener"'.format(
|
||||
|
||||
@@ -531,7 +531,7 @@ def send_invoices_to_organizer(sender, **kwargs):
|
||||
if i.event.settings.invoice_email_organizer:
|
||||
with language(i.event.settings.locale):
|
||||
mail(
|
||||
email=i.event.settings.invoice_email_organizer,
|
||||
email=[e.strip() for e in i.event.settings.invoice_email_organizer.split(",")],
|
||||
subject=_('New invoice: {number}').format(number=i.number),
|
||||
template=LazyI18nString.from_gettext(_(
|
||||
'Hello,\n\n'
|
||||
|
||||
@@ -62,6 +62,9 @@ class VATIDTemporaryError(VATIDError):
|
||||
|
||||
def _validate_vat_id_NO(vat_id, country_code):
|
||||
# Inspired by vat_moss library
|
||||
if not vat_id.startswith("NO"):
|
||||
# prefix is not usually used in Norway, but expected by vat_moss library
|
||||
vat_id = "NO" + vat_id
|
||||
try:
|
||||
vat_id = vat_moss.id.normalize(vat_id)
|
||||
except ValueError:
|
||||
|
||||
@@ -71,6 +71,7 @@ from pretix.base.reldate import (
|
||||
RelativeDateField, RelativeDateTimeField, RelativeDateWrapper,
|
||||
SerializerRelativeDateField, SerializerRelativeDateTimeField,
|
||||
)
|
||||
from pretix.base.validators import multimail_validate
|
||||
from pretix.control.forms import (
|
||||
ExtFileField, FontSelect, MultipleLanguagesWidget, SingleLanguageWidget,
|
||||
)
|
||||
@@ -1233,14 +1234,18 @@ DEFAULTS = {
|
||||
'invoice_email_organizer': {
|
||||
'default': '',
|
||||
'type': str,
|
||||
'form_class': forms.EmailField,
|
||||
'serializer_class': serializers.EmailField,
|
||||
'form_class': forms.CharField,
|
||||
'serializer_class': serializers.CharField,
|
||||
'form_kwargs': dict(
|
||||
label=_("Email address to receive a copy of each invoice"),
|
||||
help_text=_("Each newly created invoice will be sent to this email address shortly after creation. You can "
|
||||
"use this for an automated import of invoices to your accounting system. The invoice will be "
|
||||
"the only attachment of the email."),
|
||||
)
|
||||
validators=[multimail_validate],
|
||||
),
|
||||
'serializer_kwargs': dict(
|
||||
validators=[multimail_validate],
|
||||
),
|
||||
},
|
||||
'show_items_outside_presale_period': {
|
||||
'default': 'True',
|
||||
|
||||
@@ -80,4 +80,4 @@ def serve_metrics(request):
|
||||
|
||||
content = "\n".join(output) + "\n"
|
||||
|
||||
return HttpResponse(content)
|
||||
return HttpResponse(content, content_type="text/plain;version=1.0.0;escaping=allow-utf-8")
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="delete" value="yes" />
|
||||
<b>{% trans "Permanently delete all orders created in test mode" %}</b>
|
||||
<strong>{% trans "Permanently delete all orders created in test mode" %}</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
|
||||
@@ -29857,7 +29857,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34519,7 +34519,7 @@ msgid "Add to cart"
|
||||
msgstr "أضف إلى سلة التسوق"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "إذا كنت قد طلبت تذكرة سابقا"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29859,7 +29859,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33955,7 +33955,7 @@ msgid "Add to cart"
|
||||
msgstr "Afegir a la cistella"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Si ja teniu tiquets demanats"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32275,7 +32275,7 @@ msgid "Add to cart"
|
||||
msgstr "Přidat do košíku"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Pokud jste si již vstupenku objednali"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29951,7 +29951,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32689,7 +32689,7 @@ msgid "Add to cart"
|
||||
msgstr "Læg i kurv"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Hvis du allerede har bestilt en billet"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33772,7 +33772,7 @@ msgid "Add to cart"
|
||||
msgstr "Zum Warenkorb hinzufügen"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Wenn Sie bereits ein Ticket bestellt haben"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
|
||||
"PO-Revision-Date: 2025-04-28 11:32+0000\n"
|
||||
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||
"de/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||
@@ -742,7 +742,7 @@ msgstr "Bitte tragen Sie eine Menge für eines der Produkte ein."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:510
|
||||
msgid "required"
|
||||
msgstr "verpflichtend"
|
||||
msgstr "erforderlich"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:574
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
|
||||
"PO-Revision-Date: 2025-05-06 16:20+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"PO-Revision-Date: 2025-05-09 22:00+0000\n"
|
||||
"Last-Translator: Luca Hammer <hammer@rami.io>\n"
|
||||
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix/de_Informal/>\n"
|
||||
"Language: de_Informal\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11.1\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
#: pretix/_base_settings.py:87
|
||||
msgid "English"
|
||||
@@ -9464,10 +9464,10 @@ msgstr ""
|
||||
"die Kurzform der Veranstaltung verwendet, gefolgt von einem Bindestrich. "
|
||||
"Achtung: Wenn mehrere Veranstaltungen des selben Veranstalters den selben "
|
||||
"Wert in diesem Feld nutzen, teilen sie sich den Nummernkreis, d.h. jede "
|
||||
"vollständige Rechnungsnummer wird pro Veranstalter nur einmal ergeben. Diese "
|
||||
"Einstellung betrifft nur zukünftige Rechnungen. Du kannst die Platzhalter %Y "
|
||||
"(mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das Jahr der "
|
||||
"Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat."
|
||||
"vollständige Rechnungsnummer wird pro Veranstalter nur einmal vergeben. "
|
||||
"Diese Einstellung betrifft nur zukünftige Rechnungen. Du kannst die "
|
||||
"Platzhalter %Y (mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das "
|
||||
"Jahr der Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat."
|
||||
|
||||
#: pretix/base/settings.py:697 pretix/base/settings.py:719
|
||||
#, python-brace-format
|
||||
@@ -33711,7 +33711,7 @@ msgid "Add to cart"
|
||||
msgstr "Zum Warenkorb hinzufügen"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Wenn du bereits ein Ticket bestellt hast"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
|
||||
"PO-Revision-Date: 2025-04-28 12:21+0000\n"
|
||||
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix-js/de_Informal/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||
@@ -741,7 +741,7 @@ msgstr "Bitte trage eine Menge für eines der Produkte ein."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:510
|
||||
msgid "required"
|
||||
msgstr "verpflichtend"
|
||||
msgstr "erforderlich"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:574
|
||||
|
||||
@@ -29858,7 +29858,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -36098,7 +36098,7 @@ msgid "Add to cart"
|
||||
msgstr "Προσθήκη στο καλάθι"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Αν έχετε ήδη αγοράσει κάποιο εισιτήριο"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29857,7 +29857,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
|
||||
"PO-Revision-Date: 2025-05-07 06:00+0000\n"
|
||||
"PO-Revision-Date: 2025-05-14 02:00+0000\n"
|
||||
"Last-Translator: Zona Vip <contacto@zonavip.mx>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"es/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11.1\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
#: pretix/_base_settings.py:87
|
||||
msgid "English"
|
||||
@@ -2595,7 +2595,7 @@ msgstr "Vales de compra bloqueados"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:982
|
||||
msgid "Current user's carts"
|
||||
msgstr "Cesta actual del usuario"
|
||||
msgstr "Carrito actual del usuario"
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:1135
|
||||
msgid "Exited orders"
|
||||
@@ -4244,12 +4244,13 @@ msgid ""
|
||||
"discounted. If you want to grant the discount on all matching products, keep "
|
||||
"this field empty."
|
||||
msgstr ""
|
||||
"Esta opción le permite crear descuentos del tipo \"compre X y obtenga Y "
|
||||
"reducido/gratis\". Por ejemplo, si establece \"Número mínimo de productos "
|
||||
"coincidentes\" en cuatro y este valor en dos, la cesta del cliente se "
|
||||
"dividirá en grupos de cuatro entradas y se descontarán las dos entradas más "
|
||||
"baratos dentro de cada grupo. Si desea otorgar el descuento en todos los "
|
||||
"productos coincidentes, mantenga este campo vacío."
|
||||
"Esta opción le permite crear descuentos del tipo "
|
||||
"\"compre X y obtenga Y reducido/gratis\". Por ejemplo, si establece "
|
||||
"\"Número mínimo de productos coincidentes\" en cuatro y este valor en dos, "
|
||||
"el carrito del cliente se dividirá en grupos de cuatro entradas y se "
|
||||
"descontarán las dos entradas más baratos dentro de cada grupo. Si desea "
|
||||
"otorgar el descuento en todos los productos coincidentes, mantenga este "
|
||||
"campo vacío."
|
||||
|
||||
#: pretix/base/models/discount.py:165
|
||||
msgid "Apply to add-on products"
|
||||
@@ -4719,7 +4720,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/models/items.py:126
|
||||
msgid "Only show if the cart contains one of the following products"
|
||||
msgstr "Sólo se muestra si la cesta contiene uno de los siguientes productos"
|
||||
msgstr "Sólo se muestra el carrito contiene uno de los siguientes productos"
|
||||
|
||||
#: pretix/base/models/items.py:129
|
||||
msgid "Cross-selling condition"
|
||||
@@ -4989,7 +4990,7 @@ msgid ""
|
||||
"many times. If you keep the field empty or set it to 0, there is no special "
|
||||
"limit for this product."
|
||||
msgstr ""
|
||||
"Este producto sólo se puede comprar si se agrega a la cesta por lo menos "
|
||||
"Este producto sólo se puede comprar si se agrega al carrito por lo menos "
|
||||
"esta cantidad de veces. Si deja el campo vacío o lo fija en 0, no hay ningún "
|
||||
"límite especial para este producto."
|
||||
|
||||
@@ -6063,15 +6064,15 @@ msgstr "Posición del pedido"
|
||||
|
||||
#: pretix/base/models/orders.py:3091
|
||||
msgid "Cart ID (e.g. session key)"
|
||||
msgstr "ID de cesta (p. ej. clave de sesión)"
|
||||
msgstr "ID de carrito (p. ej. clave de sesión)"
|
||||
|
||||
#: pretix/base/models/orders.py:3128
|
||||
msgid "Cart position"
|
||||
msgstr "Posición de la cesta"
|
||||
msgstr "Posición del carrito"
|
||||
|
||||
#: pretix/base/models/orders.py:3129
|
||||
msgid "Cart positions"
|
||||
msgstr "Posiciones de la cesta"
|
||||
msgstr "Posiciones del carrito"
|
||||
|
||||
#: pretix/base/models/orders.py:3265
|
||||
msgid "Business customer"
|
||||
@@ -6636,7 +6637,7 @@ msgid ""
|
||||
"of a specific product, you can also select a quota. In this case, all "
|
||||
"products assigned to this quota can be selected."
|
||||
msgstr ""
|
||||
"Este producto añadirá a la cesta del usuario si está usado el vale de "
|
||||
"Este producto añadirá al carrito del usuario si está usado el vale de "
|
||||
"compra. En vez de un producto específico, se puede seleccionar una cuota. En "
|
||||
"este caso, todos los productos que están asignados al esta cuota se pueden "
|
||||
"seleccionar."
|
||||
@@ -7787,7 +7788,7 @@ msgstr "Usted no seleccionó ningún producto."
|
||||
|
||||
#: pretix/base/services/cart.py:105
|
||||
msgid "Unknown cart position."
|
||||
msgstr "Posición de la cesta desconocida."
|
||||
msgstr "Posición del carrito desconocida."
|
||||
|
||||
#: pretix/base/services/cart.py:106
|
||||
msgctxt "subevent"
|
||||
@@ -7821,7 +7822,7 @@ msgid ""
|
||||
"products are affected and have not been added to your cart: %s"
|
||||
msgstr ""
|
||||
"Algunos de los productos que seleccionó ya no están disponibles. Los "
|
||||
"siguientes productos están afectados y no se han agregado a su cesta: %s"
|
||||
"siguientes productos están afectados y no se han agregado a su carrito: %s"
|
||||
|
||||
#: pretix/base/services/cart.py:121
|
||||
#, python-format
|
||||
@@ -7832,7 +7833,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Algunos de los productos que seleccionó ya no están disponibles en la "
|
||||
"cantidad que seleccionó. Los siguientes productos están afectados y no se "
|
||||
"han agregado a su cesta: %s"
|
||||
"han agregado a su carrito: %s"
|
||||
|
||||
#: pretix/base/services/cart.py:126
|
||||
#, python-format
|
||||
@@ -7870,11 +7871,11 @@ msgid_plural ""
|
||||
"We removed %(product)s from your cart as you can not buy less than %(min)s "
|
||||
"items of it."
|
||||
msgstr[0] ""
|
||||
"Eliminamos %(product)s de su cesta ya que no puede comprar menos de %(min)s "
|
||||
"artículo del mismo."
|
||||
"Eliminamos %(product)s de su carrito ya que no puede comprar menos de %(min)"
|
||||
"s artículo del mismo."
|
||||
msgstr[1] ""
|
||||
"Eliminamos %(product)s de su cesta ya que no puede comprar menos de %(min)s "
|
||||
"artículos del mismo."
|
||||
"Eliminamos %(product)s de su carrito ya que no puede comprar menos de %(min)"
|
||||
"s artículos del mismo."
|
||||
|
||||
#: pretix/base/services/cart.py:144 pretix/base/services/orders.py:154
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:167
|
||||
@@ -7900,7 +7901,7 @@ msgid ""
|
||||
"positions have been removed from your cart."
|
||||
msgstr ""
|
||||
"El período de preventa de este evento aún no ha comenzado. Las posiciones "
|
||||
"afectadas han sido eliminadas de su cesta."
|
||||
"afectadas han sido eliminadas de su carrito."
|
||||
|
||||
#: pretix/base/services/cart.py:151 pretix/base/services/orders.py:182
|
||||
msgid ""
|
||||
@@ -7908,7 +7909,7 @@ msgid ""
|
||||
"affected positions have been removed from your cart."
|
||||
msgstr ""
|
||||
"El período de preventa de uno de los eventos de su cesta ha finalizado. Las "
|
||||
"posiciones afectadas han sido eliminadas de su cesta."
|
||||
"posiciones afectadas han sido eliminadas de su carrito."
|
||||
|
||||
#: pretix/base/services/cart.py:153
|
||||
msgid "The entered price is not a number."
|
||||
@@ -7950,11 +7951,11 @@ msgid_plural ""
|
||||
msgstr[0] ""
|
||||
"El vale de compra \"%(voucher)s\" solo se puede utilizar si selecciona al "
|
||||
"menos %(number)s productos coincidentes. Por lo tanto, hemos eliminado "
|
||||
"algunas posiciones de su cesta que ya no se pueden comprar así."
|
||||
"algunas posiciones de su carrito que ya no se pueden comprar así."
|
||||
msgstr[1] ""
|
||||
"Los vale de compra \"%(voucher)s\" solo se pueden utilizar si selecciona al "
|
||||
"menos %(number)s productos coincidentes. Por lo tanto, hemos eliminado "
|
||||
"algunas posiciones de su cesta que ya no se pueden comprar así."
|
||||
"algunas posiciones de su carrito que ya no se pueden comprar así."
|
||||
|
||||
#: pretix/base/services/cart.py:168
|
||||
msgid ""
|
||||
@@ -7971,7 +7972,7 @@ msgid ""
|
||||
"process. You can try to use it again in %d minutes."
|
||||
msgstr ""
|
||||
"Este vale de compra está actualmente bloqueado ya que está contenido en un "
|
||||
"cesta de la compra. Esto puede significar que otra persona está canjeando "
|
||||
"carrito de la compra. Esto puede significar que otra persona está canjeando "
|
||||
"este vale de compra ahora mismo, o que usted intentó canjearlo antes pero no "
|
||||
"completó el proceso de pago. Puede intentar utilizarlo de nuevo en %d "
|
||||
"minutos."
|
||||
@@ -7986,7 +7987,7 @@ msgid ""
|
||||
"Applying a voucher to the whole cart should not be combined with other "
|
||||
"operations."
|
||||
msgstr ""
|
||||
"La aplicación de un vale de compra a todo la cesta no debe combinarse con "
|
||||
"La aplicación de un vale de compra a todo el carrito no debe combinarse con "
|
||||
"otras operaciones."
|
||||
|
||||
#: pretix/base/services/cart.py:178
|
||||
@@ -7994,7 +7995,7 @@ msgid ""
|
||||
"You already used this voucher code. Remove the associated line from your "
|
||||
"cart if you want to use it for a different product."
|
||||
msgstr ""
|
||||
"Ya ha utilizado este vale de compra. Elimine la línea asociada de su cesta "
|
||||
"Ya ha utilizado este vale de compra. Elimine la línea asociada de su carrito "
|
||||
"si desea utilizarlo para un producto diferente."
|
||||
|
||||
#: pretix/base/services/cart.py:181
|
||||
@@ -8015,7 +8016,7 @@ msgid ""
|
||||
"for. If you want to add something new to your cart using that voucher, you "
|
||||
"can do so with the voucher redemption option on the bottom of the page."
|
||||
msgstr ""
|
||||
"No encontramos ninguna posición en su cesta para la que podamos usar este "
|
||||
"No encontramos ninguna posición en su carrito para la que podamos usar este "
|
||||
"vale de compra. Si desea agregar algo nuevo a su cesta usando ese vale de "
|
||||
"compra, puede hacerlo con la opción de canje de vale de compra en la parte "
|
||||
"inferior de la página."
|
||||
@@ -8616,8 +8617,8 @@ msgid ""
|
||||
"The price of some of the items in your cart has changed in the meantime. "
|
||||
"Please see below for details."
|
||||
msgstr ""
|
||||
"El precio de algunos de los artículos en su cesta ha cambiado en el durante "
|
||||
"este tiempo. Por favor vea abajo para más detalles."
|
||||
"El precio de algunos de los artículos en su carrito ha cambiado en el "
|
||||
"durante este tiempo. Por favor vea abajo para más detalles."
|
||||
|
||||
#: pretix/base/services/orders.py:141
|
||||
msgid "An internal error occurred, please try again."
|
||||
@@ -8633,7 +8634,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/services/orders.py:144
|
||||
msgid "Your cart is empty."
|
||||
msgstr "Su cesta está vacía."
|
||||
msgstr "Su carrito está vacío."
|
||||
|
||||
#: pretix/base/services/orders.py:146
|
||||
#, python-format
|
||||
@@ -8645,10 +8646,10 @@ msgid_plural ""
|
||||
"removed the surplus items from your cart."
|
||||
msgstr[0] ""
|
||||
"No puede seleccionar más de %(max)s artículos del producto %(product)s. "
|
||||
"Eliminamos el artículo sobrante de su cesta."
|
||||
"Eliminamos el artículo sobrante de su carrito."
|
||||
msgstr[1] ""
|
||||
"No puede seleccionar más de %(max)s artículos del producto %(product)s. "
|
||||
"Eliminamos los artículos sobrantes de su cesta."
|
||||
"Eliminamos los artículos sobrantes de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:155
|
||||
msgid "The booking period has ended."
|
||||
@@ -8659,7 +8660,7 @@ msgid ""
|
||||
"The voucher code used for one of the items in your cart is not known in our "
|
||||
"database."
|
||||
msgstr ""
|
||||
"El vale de compra utilizado para uno de los artículos de su cesta no es "
|
||||
"El vale de compra utilizado para uno de los artículos de su carrito no es "
|
||||
"conocido en nuestra base de datos."
|
||||
|
||||
#: pretix/base/services/orders.py:163
|
||||
@@ -8668,16 +8669,16 @@ msgid ""
|
||||
"used the maximum number of times allowed. We removed this item from your "
|
||||
"cart."
|
||||
msgstr ""
|
||||
"El vale de compra utilizado para uno de los artículos de su cesta ya ha sido "
|
||||
"utilizado el máximo número de veces permitido. Hemos quitado este artículo "
|
||||
"de su cesta."
|
||||
"El vale de compra utilizado para uno de los artículos de su carrito ya ha "
|
||||
"sido utilizado el máximo número de veces permitido. Hemos quitado este "
|
||||
"artículo de su cesta."
|
||||
|
||||
#: pretix/base/services/orders.py:167
|
||||
msgid ""
|
||||
"The voucher code used for one of the items in your cart has already been too "
|
||||
"often. We adjusted the price of the item in your cart."
|
||||
msgstr ""
|
||||
"El vale de compra utilizado para uno de los artículos de su cesta ya se ha "
|
||||
"El vale de compra utilizado para uno de los artículos de su carrito ya se ha "
|
||||
"utilizado con demasiada frecuencia. Ajustamos el precio del artículo en su "
|
||||
"cesta."
|
||||
|
||||
@@ -8686,16 +8687,16 @@ msgid ""
|
||||
"The voucher code used for one of the items in your cart is expired. We "
|
||||
"removed this item from your cart."
|
||||
msgstr ""
|
||||
"El vale de compra utilizado para uno de los artículos de su cesta ha "
|
||||
"caducado. Hemos quitado este artículo de su cesta."
|
||||
"El vale de compra utilizado para uno de los artículos de su carrito ha "
|
||||
"caducado. Hemos quitado este artículo de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:174
|
||||
msgid ""
|
||||
"The voucher code used for one of the items in your cart is not valid for "
|
||||
"this item. We removed this item from your cart."
|
||||
msgstr ""
|
||||
"El vale de compra utilizado para uno de los artículos de su cesta no es "
|
||||
"válido para este artículo. Hemos quitado este artículo de su cesta."
|
||||
"El vale de compra utilizado para uno de los artículos de su carrito no es "
|
||||
"válido para este artículo. Hemos quitado este artículo de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:176
|
||||
msgid "You need a valid voucher code to order one of the products."
|
||||
@@ -8706,22 +8707,22 @@ msgid ""
|
||||
"The booking period for one of the events in your cart has not yet started. "
|
||||
"The affected positions have been removed from your cart."
|
||||
msgstr ""
|
||||
"El período de preventa de uno de los eventos de su cesta aún no ha "
|
||||
"comenzado. Las posiciones afectadas han sido eliminadas de su cesta."
|
||||
"El período de preventa de uno de los eventos de su carrito aún no ha "
|
||||
"comenzado. Las posiciones afectadas han sido eliminadas de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:185
|
||||
msgid ""
|
||||
"One of the seats in your order was invalid, we removed the position from "
|
||||
"your cart."
|
||||
msgstr ""
|
||||
"Uno de las butacas de su pedido no era válida, la eliminamos de su cesta."
|
||||
"Uno de las butacas de su pedido no era válida, la eliminamos de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:186
|
||||
msgid ""
|
||||
"One of the seats in your order has been taken in the meantime, we removed "
|
||||
"the position from your cart."
|
||||
msgstr ""
|
||||
"Una de las butaca de su pedido ha sido ocupada. La eliminamos de su cesta."
|
||||
"Una de las butaca de su pedido ha sido ocupada. La eliminamos de su carrito."
|
||||
|
||||
#: pretix/base/services/orders.py:202
|
||||
#, python-format
|
||||
@@ -9154,8 +9155,8 @@ msgid ""
|
||||
"Independent of your choice, the cart will show gross prices as this is the "
|
||||
"price that needs to be paid."
|
||||
msgstr ""
|
||||
"Independientemente de su elección, el cesta mostrará los precios brutos, ya "
|
||||
"que este es el precio que debe pagarse."
|
||||
"Independientemente de su elección, el carrito mostrará los precios brutos, "
|
||||
"ya que este es el precio que debe pagarse."
|
||||
|
||||
#: pretix/base/settings.py:338
|
||||
msgid "Hide prices on attendee ticket page"
|
||||
@@ -9521,15 +9522,15 @@ msgstr "Período de reserva"
|
||||
msgid ""
|
||||
"The number of minutes the items in a user's cart are reserved for this user."
|
||||
msgstr ""
|
||||
"El número de minutos que los artículos en la cesta de un usuario permanecen "
|
||||
"reservados para un usuario."
|
||||
"El número de minutos que los artículos en el carrito de un usuario "
|
||||
"permanecen reservados para un usuario."
|
||||
|
||||
#: pretix/base/settings.py:807
|
||||
msgid ""
|
||||
"Directly redirect to check-out after a product has been added to the cart."
|
||||
msgstr ""
|
||||
"Redirigir directamente a la compra después de que un producto se haya "
|
||||
"agregado a la cesta."
|
||||
"agregado a la carrito."
|
||||
|
||||
#: pretix/base/settings.py:816
|
||||
msgid "End of presale text"
|
||||
@@ -14675,8 +14676,8 @@ msgid ""
|
||||
"\"inactive\" instead."
|
||||
msgstr ""
|
||||
"La variación \"%s\" no se puede borrar porque ya ha sido pedida por un "
|
||||
"usuario o está actualmente en la cesta de un usuario. En su lugar, configure "
|
||||
"la variación como \"inactiva\"."
|
||||
"usuario o está actualmente en el carrito de un usuario. En su lugar, "
|
||||
"configure la variación como \"inactiva\"."
|
||||
|
||||
#: pretix/control/forms/item.py:994
|
||||
msgid "Use value from product"
|
||||
@@ -19854,7 +19855,7 @@ msgstr "Añadir enlace"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/settings.html:345
|
||||
msgid "Cart"
|
||||
msgstr "Cesta"
|
||||
msgstr "Carrito"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/settings.html:353
|
||||
msgid ""
|
||||
@@ -20284,7 +20285,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Ejemplos: múltiples presentaciones del mismo espectáculo, el mismo concierto "
|
||||
"en múltiples ubicaciones, museos, bibliotecas o piscinas, eventos que deben "
|
||||
"reservarse juntos en una sola cesta."
|
||||
"reservarse juntos en un solo carrito."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_foundation.html:53
|
||||
msgid ""
|
||||
@@ -20874,7 +20875,7 @@ msgid ""
|
||||
"as add-ons in the cart for this product."
|
||||
msgstr ""
|
||||
"Con los paquetes, puede especificar productos que siempre se agregan "
|
||||
"automáticamente a la cesta como complementos para este producto."
|
||||
"automáticamente al carrito como complementos para este producto."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/item/include_bundles.html:68
|
||||
msgid "Add a new bundled product"
|
||||
@@ -21060,7 +21061,7 @@ msgstr "Condición"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/items/discount.html:34
|
||||
msgid "Minimum cart content"
|
||||
msgstr "Contenido mínimo de la cesta"
|
||||
msgstr "Contenido mínimo del carrito"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/items/discount.html:43
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:53
|
||||
@@ -21156,7 +21157,7 @@ msgid ""
|
||||
"overlapping discounts, the first one in the order of the list below will "
|
||||
"apply."
|
||||
msgstr ""
|
||||
"Un sólo desuento puede aplicarse a los productos de la cesta. Si tiene "
|
||||
"Un sólo desuento puede aplicarse a los productos del carrito. Si tiene "
|
||||
"descuentos superpuestos, se aplicará el primero en el pedido de la lista "
|
||||
"siguiente."
|
||||
|
||||
@@ -25822,7 +25823,7 @@ msgstr ""
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:4
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:6
|
||||
msgid "Delete carts"
|
||||
msgstr "Eliminar cestas"
|
||||
msgstr "Eliminar carrito"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:9
|
||||
#, python-format
|
||||
@@ -25830,7 +25831,7 @@ msgid ""
|
||||
"Are you sure you want to delete any cart positions with voucher "
|
||||
"<strong>%(voucher)s</strong>?"
|
||||
msgstr ""
|
||||
"¿Está seguro de que desea eliminar alguna entrada de la cesta con vale de "
|
||||
"¿Está seguro de que desea eliminar alguna entrada del carrito con vale de "
|
||||
"compra <strong>%(voucher)s</strong>?"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/delete_carts.html:10
|
||||
@@ -25839,7 +25840,7 @@ msgid ""
|
||||
"a purchase. This can be really confusing. Only use this if you know that the "
|
||||
"session is no longer in use."
|
||||
msgstr ""
|
||||
"Esto eliminará silenciosamente productos de la cesta de un usuario que "
|
||||
"Esto eliminará silenciosamente productos del carrito de un usuario que "
|
||||
"actualmente realiza una compra. Esto puede resultar realmente confuso. "
|
||||
"Utilice esto únicamente si sabe que la sesión ya no está en uso."
|
||||
|
||||
@@ -25859,13 +25860,13 @@ msgid ""
|
||||
"This voucher is currently used in %(number)s cart sessions and might not be "
|
||||
"free to use until the cart sessions expire."
|
||||
msgstr ""
|
||||
"Este vale de compra se utiliza actualmente en %(number)s sesiones de la "
|
||||
"cesta y es posible que no sea de uso gratuito hasta que caduque la sesión de "
|
||||
"la cesta."
|
||||
"Este vale de compra se utiliza actualmente en %(number)s sesiones del "
|
||||
"carrito y es posible que no sea de uso gratuito hasta que caduque la sesión "
|
||||
"de la cesta."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/detail.html:28
|
||||
msgid "Remove cart positions"
|
||||
msgstr "Eliminar element de la cesta"
|
||||
msgstr "Eliminar elemento del carrito"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/vouchers/detail.html:43
|
||||
msgid "Voucher link"
|
||||
@@ -32151,7 +32152,7 @@ msgid ""
|
||||
"Your cart includes a product that requires an active membership to be "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"Su cesta incluye un producto que requiere una suscripción activa para ser "
|
||||
"Su carrito incluye un producto que requiere una suscripción activa para ser "
|
||||
"seleccionado."
|
||||
|
||||
#: pretix/presale/checkoutflow.py:489
|
||||
@@ -32187,8 +32188,8 @@ msgid ""
|
||||
"accordingly."
|
||||
msgstr ""
|
||||
"Debido a la dirección de factura que ingresó, necesitamos aplicar una tasa "
|
||||
"impositiva diferente a su compra y el precio de los productos en su cesta ha "
|
||||
"cambiado en consecuencia."
|
||||
"impositiva diferente a su compra y el precio de los productos en su carrito "
|
||||
"ha cambiado en consecuencia."
|
||||
|
||||
#: pretix/presale/checkoutflow.py:1029
|
||||
msgid "Please enter your invoicing address."
|
||||
@@ -32546,7 +32547,7 @@ msgid ""
|
||||
"For some of the products in your cart, you can choose additional options "
|
||||
"before you continue."
|
||||
msgstr ""
|
||||
"Para algunos de los productos en su cesta, usted puede elegir opciones "
|
||||
"Para algunos de los productos en su carrito, usted puede elegir opciones "
|
||||
"adicionales antes de continuar."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:16
|
||||
@@ -32554,7 +32555,7 @@ msgid ""
|
||||
"A product in your cart is only sold in combination with add-on products that "
|
||||
"are not available. Please contact the event organizer."
|
||||
msgstr ""
|
||||
"Un producto de su cesta sólo se vende en combinación con productos "
|
||||
"Un producto de su carrito sólo se vende en combinación con productos "
|
||||
"complementarios que no están disponibles. Póngase en contacto con el "
|
||||
"organizador del evento."
|
||||
|
||||
@@ -32602,17 +32603,17 @@ msgstr "Compra"
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:11
|
||||
msgid "Your cart"
|
||||
msgstr "Su cesta"
|
||||
msgstr "Su carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:28
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:31
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:18
|
||||
msgid "Cart expired"
|
||||
msgstr "La cesta de compra ha expirado"
|
||||
msgstr "El carrito de compra ha expirado"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:36
|
||||
msgid "Show full cart"
|
||||
msgstr "Mostrar cesta completa"
|
||||
msgstr "Mostrar carrito completo"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_base.html:48
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:84
|
||||
@@ -32758,7 +32759,7 @@ msgid ""
|
||||
"Some of the products in your cart can only be purchased if there is an "
|
||||
"active membership on your account."
|
||||
msgstr ""
|
||||
"Algunos productos de la cesta sólo pueden comprarse si existe una "
|
||||
"Algunos productos del carrito sólo pueden comprarse si existe una "
|
||||
"suscripción activa en su cuenta."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_membership.html:37
|
||||
@@ -32891,7 +32892,7 @@ msgid ""
|
||||
"browser settings accordingly."
|
||||
msgstr ""
|
||||
"Su navegador no acepta cookies de nuestra parte. Sin embargo, necesitamos "
|
||||
"establecer una cookie para recordar quién es usted y qué hay en su cesta. "
|
||||
"establecer una cookie para recordar quién es usted y qué hay en su carrito. "
|
||||
"Por favor, cambie la configuración de su navegador en consecuencia."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:17
|
||||
@@ -33053,7 +33054,7 @@ msgstr "incluido. %(rate)s%% %(name)s"
|
||||
#: pretix/presale/templates/pretixpresale/event/voucher.html:252
|
||||
#, python-format
|
||||
msgid "Add %(item)s, %(var)s to cart"
|
||||
msgstr "Cantidad de %(item)s - %(var)s en la cesta"
|
||||
msgstr "Cantidad de %(item)s - %(var)s en el carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:203
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:349
|
||||
@@ -33092,7 +33093,7 @@ msgstr "Aumentar cantidad"
|
||||
#: pretix/presale/templates/pretixpresale/event/voucher.html:408
|
||||
#, python-format
|
||||
msgid "Add %(item)s to cart"
|
||||
msgstr "Añadir %(item)s a la cesta"
|
||||
msgstr "Añadir %(item)s al carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:379
|
||||
msgid "There are no add-ons available for this product."
|
||||
@@ -33214,12 +33215,12 @@ msgstr "Entendido, estamos removiendo eso…"
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:289
|
||||
#, python-format
|
||||
msgid "Remove %(item)s from your cart"
|
||||
msgstr "Eliminar %(item)s de su cesta"
|
||||
msgstr "Eliminar %(item)s de su carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:292
|
||||
#, python-format
|
||||
msgid "Remove one %(item)s from your cart"
|
||||
msgstr "Eliminar un %(item)s de tu cesta"
|
||||
msgstr "Eliminar un %(item)s de tu carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:294
|
||||
#, python-format
|
||||
@@ -33227,7 +33228,7 @@ msgid ""
|
||||
"Remove one %(item)s from your cart. You currently have %(count)s in your "
|
||||
"cart."
|
||||
msgstr ""
|
||||
"Elimina un %(item)s de su cesta. Actualmente tiene %(count)s en su cesta."
|
||||
"Elimina un %(item)s de su carrito. Actualmente tiene %(count)s en su carrito."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:302
|
||||
msgid "We're trying to reserve another one for you!"
|
||||
@@ -33242,13 +33243,13 @@ msgid ""
|
||||
"Once the items are in your cart, you will have %(time)s minutes to complete "
|
||||
"your purchase."
|
||||
msgstr ""
|
||||
"Una vez los elementos están en su cesta, tendrá %(time)s minutos para "
|
||||
"Una vez los elementos están en su carrito, tendrá %(time)s minutos para "
|
||||
"completar la compra."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:322
|
||||
#, python-format
|
||||
msgid "Add one more %(item)s to your cart"
|
||||
msgstr "Añadir un %(item)s más a su cesta"
|
||||
msgstr "Añadir un %(item)s más a su carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:324
|
||||
#, python-format
|
||||
@@ -33256,7 +33257,8 @@ msgid ""
|
||||
"Add one more %(item)s to your cart. You currently have %(count)s in your "
|
||||
"cart."
|
||||
msgstr ""
|
||||
"Agregar un %(item)s más a su cesta. Actualmente tiene %(count)s en su cesta."
|
||||
"Agregar un %(item)s más a su carrito. Actualmente tiene %(count)s en su "
|
||||
"carrito."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:384
|
||||
#: pretix/presale/templates/pretixpresale/event/order_giftcard.html:20
|
||||
@@ -33280,15 +33282,15 @@ msgstr "incl. %(tax_sum)s impuestos"
|
||||
#, python-format
|
||||
msgid "The items in your cart are reserved for you for %(minutes)s minutes."
|
||||
msgstr ""
|
||||
"Los artículos de su cesta están reservados durante %(minutes)ss minutos."
|
||||
"Los artículos de su carrito están reservados durante %(minutes)ss minutos."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:493
|
||||
msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they’re available."
|
||||
msgstr ""
|
||||
"Los elementos en su cesta de compras ya no se encuentran reservados. Puedes "
|
||||
"seguir añadiendo más productos mientras estén disponibles."
|
||||
"Los elementos en su carrito de compras ya no se encuentran reservados. "
|
||||
"Puedes seguir añadiendo más productos mientras estén disponibles."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:497
|
||||
msgid "Overview of your ordered products."
|
||||
@@ -33306,7 +33308,7 @@ msgstr "Proceder con la compra"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:63
|
||||
msgid "Empty cart"
|
||||
msgstr "Vaciar cesta"
|
||||
msgstr "Vaciar carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:68
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:246
|
||||
@@ -33316,7 +33318,7 @@ msgstr "Canjear vale de compra"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:71
|
||||
msgid "We're applying this voucher to your cart..."
|
||||
msgstr "Estamos aplicando este vale de compra a su cesta..."
|
||||
msgstr "Estamos aplicando este vale de compra a su carrito..."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:79
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:26
|
||||
@@ -33692,11 +33694,11 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:48
|
||||
msgid "Your cart, general information, add products to your cart"
|
||||
msgstr "Su cesta, información general, añadir productos a su cesta"
|
||||
msgstr "Su carrito, información general, añadir productos a su carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:48
|
||||
msgid "General information, add products to your cart"
|
||||
msgstr "Información general, añadir productos a la cesta"
|
||||
msgstr "Información general, añadir productos al carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:68
|
||||
msgid "Please select a date to redeem your voucher."
|
||||
@@ -33750,10 +33752,10 @@ msgstr "Registrarse"
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:232
|
||||
#: pretix/presale/templates/pretixpresale/event/voucher.html:443
|
||||
msgid "Add to cart"
|
||||
msgstr "Agregar a la cesta"
|
||||
msgstr "Agregar al carrito"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Si ya ha pedido una entrada"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
@@ -34590,8 +34592,8 @@ msgid ""
|
||||
"Functional cookies (e.g. shopping cart, login, payment, language preference) "
|
||||
"and technical cookies (e.g. security purposes)"
|
||||
msgstr ""
|
||||
"Cookies funcionales (por ejemplo, cesta de compras, inicio de sesión, pago, "
|
||||
"preferencia de idioma) y cookies técnicas (por ejemplo, con fines de "
|
||||
"Cookies funcionales (por ejemplo, carrito de compras, inicio de sesión, "
|
||||
"pago, preferencia de idioma) y cookies técnicas (por ejemplo, con fines de "
|
||||
"seguridad)"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:89
|
||||
@@ -34883,26 +34885,26 @@ msgstr "Por favor, introduzca sólo números positivos."
|
||||
#: pretix/presale/views/cart.py:441
|
||||
msgid "We applied the voucher to as many products in your cart as we could."
|
||||
msgstr ""
|
||||
"Aplicamos el vale de compra a tantos productos en su cesta como pudimos."
|
||||
"Aplicamos el vale de compra a tantos productos en su carrito como pudimos."
|
||||
|
||||
#: pretix/presale/views/cart.py:460 pretix/presale/views/cart.py:468
|
||||
msgid ""
|
||||
"The gift card has been saved to your cart. Please continue your checkout."
|
||||
msgstr ""
|
||||
"La tarjeta regalo se ha guardado en su cesta. Continúe con el proceso de "
|
||||
"La tarjeta regalo se ha guardado en su carrito. Continúe con el proceso de "
|
||||
"compra."
|
||||
|
||||
#: pretix/presale/views/cart.py:504
|
||||
msgid "Your cart has been updated."
|
||||
msgstr "Su cesta ha sido actualizada."
|
||||
msgstr "Su carrito ha sido actualizada."
|
||||
|
||||
#: pretix/presale/views/cart.py:507 pretix/presale/views/cart.py:533
|
||||
msgid "Your cart is now empty."
|
||||
msgstr "Su cesta ha sido vaciada."
|
||||
msgstr "Su carrito ha sido vaciada."
|
||||
|
||||
#: pretix/presale/views/cart.py:548
|
||||
msgid "The products have been successfully added to your cart."
|
||||
msgstr "Los productos se han añadido con éxito a su cesta."
|
||||
msgstr "Los productos se han añadido con éxito a su carrito."
|
||||
|
||||
#: pretix/presale/views/cart.py:572 pretix/presale/views/event.py:540
|
||||
#: pretix/presale/views/widget.py:377
|
||||
@@ -34915,8 +34917,8 @@ msgid ""
|
||||
"The gift card has been saved to your cart. Please now select the products "
|
||||
"you want to purchase."
|
||||
msgstr ""
|
||||
"La tarjeta regalo se ha guardado en su cesta. Seleccione ahora los productos "
|
||||
"que desea comprar."
|
||||
"La tarjeta regalo se ha guardado en su carrito. Seleccione ahora los "
|
||||
"productos que desea comprar."
|
||||
|
||||
#: pretix/presale/views/cart.py:739
|
||||
msgctxt "subevent"
|
||||
@@ -34925,7 +34927,7 @@ msgstr "No pudimos encontrar la fecha especificada."
|
||||
|
||||
#: pretix/presale/views/checkout.py:55
|
||||
msgid "Your cart is empty"
|
||||
msgstr "Su cesta está vacía"
|
||||
msgstr "Su carito está vacío"
|
||||
|
||||
#: pretix/presale/views/checkout.py:59
|
||||
msgid "The booking period for this event is over or has not yet started."
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
|
||||
"PO-Revision-Date: 2025-04-29 18:00+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"PO-Revision-Date: 2025-05-14 02:00+0000\n"
|
||||
"Last-Translator: Zona Vip <contacto@zonavip.mx>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/"
|
||||
"pretix-js/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11.1\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||
@@ -706,12 +706,12 @@ msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they’re available."
|
||||
msgstr ""
|
||||
"Los elementos en su cesta de compras ya no se encuentran reservados. Puedes "
|
||||
"seguir añadiendo más productos mientras estén disponibles."
|
||||
"Los elementos en su carrito de compras ya no se encuentran reservados. "
|
||||
"Puedes seguir añadiendo más productos mientras estén disponibles."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:45
|
||||
msgid "Cart expired"
|
||||
msgstr "La cesta de compra ha expirado"
|
||||
msgstr "El carrito de compra ha expirado"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:50
|
||||
msgid "The items in your cart are reserved for you for one minute."
|
||||
|
||||
@@ -29859,7 +29859,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32099,7 +32099,7 @@ msgid "Add to cart"
|
||||
msgstr "Saskira gehitu"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Dagoeneko sarrera bat eskatu baduzu"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -31848,7 +31848,7 @@ msgid "Add to cart"
|
||||
msgstr "Lisää ostoskoriin"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Jos tilasit jo tuotteita"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29880,7 +29880,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34033,7 +34033,7 @@ msgid "Add to cart"
|
||||
msgstr "Ajouter au panier"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Si vous avez déjà commandé un billet"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -35859,7 +35859,7 @@ msgid "Add to cart"
|
||||
msgstr "Engadir ao pedido"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Se xa pediu unha entrada"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29895,7 +29895,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -30700,7 +30700,7 @@ msgid "Add to cart"
|
||||
msgstr "Dodaj u košaricu"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Ako ste već kupili kartu"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -31023,7 +31023,7 @@ msgid "Add to cart"
|
||||
msgstr "Hozzáadás a kosárhoz"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Ha már rendeltél jegyet"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33865,7 +33865,7 @@ msgid "Add to cart"
|
||||
msgstr "Masukkan ke keranjang"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Jika kamu sudah memesan tiket"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -31883,7 +31883,7 @@ msgid "Add to cart"
|
||||
msgstr "Aggiungi al carrello"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Se hai già prenotato un biglietto"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
|
||||
"PO-Revision-Date: 2025-05-09 06:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-12 13:00+0000\n"
|
||||
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
|
||||
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"ja/>\n"
|
||||
@@ -19763,7 +19763,7 @@ msgstr "クォータごとの有料チケット"
|
||||
#: pretix/control/views/dashboards.py:519 pretix/control/views/typeahead.py:89
|
||||
msgctxt "subevent"
|
||||
msgid "No dates"
|
||||
msgstr "データなし"
|
||||
msgstr "日付なし"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/index.html:141
|
||||
#: pretix/control/templates/pretixcontrol/subevents/index.html:158
|
||||
@@ -32867,7 +32867,7 @@ msgid "Add to cart"
|
||||
msgstr "カートに追加"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "すでにチケットを注文済みの場合"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
|
||||
"PO-Revision-Date: 2025-05-09 06:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-12 13:00+0000\n"
|
||||
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
|
||||
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/"
|
||||
"pretix-js/ja/>\n"
|
||||
@@ -233,7 +233,7 @@ msgstr "未払い"
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45
|
||||
msgid "Canceled"
|
||||
msgstr "キャンセル"
|
||||
msgstr "キャンセル済み"
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
|
||||
msgid "Confirmed"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -29862,7 +29862,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32169,7 +32169,7 @@ msgid "Add to cart"
|
||||
msgstr "Pievienot grozam"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Ja jau esat pasūtījis biļeti"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29857,7 +29857,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34036,7 +34036,7 @@ msgid "Add to cart"
|
||||
msgstr "Legg til handlekurv"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Har du allerede bestilt billett"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33634,7 +33634,7 @@ msgid "Add to cart"
|
||||
msgstr "Voeg toe aan winkelwagen"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Als u al een ticket heeft besteld"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34971,7 +34971,7 @@ msgid "Add to cart"
|
||||
msgstr "Voeg toe aan winkelwagen"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Als je al een kaartje hebt besteld"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33525,7 +33525,7 @@ msgid "Add to cart"
|
||||
msgstr "Dodaj do koszyka"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Jeżeli bilet jest już zamówiony"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -30093,7 +30093,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -30334,7 +30334,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32910,7 +32910,7 @@ msgid "Add to cart"
|
||||
msgstr "Adicionar ao carrinho"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Se você já solicitou um ingresso"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34042,7 +34042,7 @@ msgid "Add to cart"
|
||||
msgstr "Adicionar ao carrinho"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Se já pediste um bilhete"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34887,7 +34887,7 @@ msgid "Add to cart"
|
||||
msgstr "Adaugă în coș"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Dacă ați comandat deja un bilet"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33106,7 +33106,7 @@ msgid "Add to cart"
|
||||
msgstr "Добавить в корзину"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Если вы уже заказали билет"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29992,7 +29992,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32809,7 +32809,7 @@ msgid "Add to cart"
|
||||
msgstr "Pridať do košíka"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Ak ste si už objednali vstupenku"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -32657,7 +32657,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29857,7 +29857,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33595,7 +33595,7 @@ msgid "Add to cart"
|
||||
msgstr "Lägg till i bokning"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Om du redan har bokat en biljett"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29859,7 +29859,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -35827,7 +35827,7 @@ msgid "Add to cart"
|
||||
msgstr "Sepete ekle"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Zaten bir bilet sipariş ettiyseniz"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -33579,7 +33579,7 @@ msgid "Add to cart"
|
||||
msgstr "Додати до кошика"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "Якщо Ви вже замовили квиток"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29897,7 +29897,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -29857,7 +29857,7 @@ msgid "Add to cart"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -34570,7 +34570,7 @@ msgid "Add to cart"
|
||||
msgstr "添加到购物车"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "如果您已经订了票"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -31796,7 +31796,7 @@ msgid "Add to cart"
|
||||
msgstr "加入購物車"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:253
|
||||
msgid "If you already ordered a ticket"
|
||||
msgid "If you have already ordered a ticket"
|
||||
msgstr "如果你已訂購票"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/index.html:257
|
||||
|
||||
@@ -801,7 +801,13 @@ class CheckinLogList(ListExporter):
|
||||
ia = ci.position.order.invoice_address
|
||||
except InvoiceAddress.DoesNotExist:
|
||||
ia = InvoiceAddress()
|
||||
|
||||
name = (
|
||||
ci.position.attendee_name or
|
||||
(ci.position.addon_to.attendee_name if ci.position.addon_to else '') or
|
||||
ia.name
|
||||
)
|
||||
else:
|
||||
name = ""
|
||||
yield [
|
||||
date_format(ci.datetime.astimezone(self.timezone), 'SHORT_DATE_FORMAT'),
|
||||
date_format(ci.datetime.astimezone(self.timezone), 'TIME_FORMAT'),
|
||||
@@ -811,7 +817,7 @@ class CheckinLogList(ListExporter):
|
||||
ci.position.positionid if ci.position else '',
|
||||
ci.raw_barcode or ci.position.secret,
|
||||
str(ci.position.item) if ci.position else (str(ci.raw_item) if ci.raw_item else ''),
|
||||
(ci.position.attendee_name or ia.name) if ci.position else '',
|
||||
name,
|
||||
str(ci.device) if ci.device else '',
|
||||
_('Yes') if ci.force_sent is True else (_('No') if ci.force_sent is False else '?'),
|
||||
_('Yes') if ci.forced else _('No'),
|
||||
|
||||
@@ -625,8 +625,22 @@ class PaypalMethod(BasePaymentProvider):
|
||||
}
|
||||
return template.render(ctx)
|
||||
|
||||
@transaction.atomic
|
||||
# We are wrapping the actual _execute_payment() here, since PaymentExceptions
|
||||
# within the atomic transaction would rollback any changes to the payment-object,
|
||||
# this throwing away any logentries and payment.fail()
|
||||
def execute_payment(self, request: HttpRequest, payment: OrderPayment):
|
||||
ex = None
|
||||
with transaction.atomic():
|
||||
try:
|
||||
return self._execute_payment(request, payment)
|
||||
except PaymentException as e:
|
||||
ex = e
|
||||
if ex:
|
||||
raise ex
|
||||
|
||||
return False
|
||||
|
||||
def _execute_payment(self, request: HttpRequest, payment: OrderPayment):
|
||||
payment = OrderPayment.objects.select_for_update(of=OF_SELF).get(pk=payment.pk)
|
||||
if payment.state == OrderPayment.PAYMENT_STATE_CONFIRMED:
|
||||
logger.warning('payment is already confirmed; possible return-view/webhook race-condition')
|
||||
|
||||
@@ -66,6 +66,8 @@ class AuthenticationForm(forms.Form):
|
||||
|
||||
error_messages = {
|
||||
'incomplete': _('You need to fill out all fields.'),
|
||||
'empty_email': _('You need to enter an email address.'),
|
||||
'empty_password': _('You need to enter a password.'),
|
||||
'invalid_login': _(
|
||||
"We have not found an account with this email address and password."
|
||||
),
|
||||
@@ -112,6 +114,10 @@ class AuthenticationForm(forms.Form):
|
||||
else:
|
||||
self.confirm_login_allowed(self.customer_cache)
|
||||
else:
|
||||
if not email:
|
||||
self.add_error("email", self.error_messages['empty_email'])
|
||||
if not password:
|
||||
self.add_error("password", self.error_messages['empty_password'])
|
||||
raise forms.ValidationError(
|
||||
self.error_messages['incomplete'],
|
||||
code='incomplete'
|
||||
|
||||
@@ -44,6 +44,9 @@
|
||||
</head>
|
||||
<body class="nojs" data-locale="{{ request.LANGUAGE_CODE }}" data-now="{% now "U.u" %}" data-datetimeformat="{{ js_datetime_format }}" data-timeformat="{{ js_time_format }}" data-dateformat="{{ js_date_format }}" data-datetimelocale="{{ js_locale }}" data-currency="{{ request.event.currency }}">
|
||||
{{ html_page_header|safe }}
|
||||
<nav id="skip-to-main" role="navigation" aria-label="{% trans "Skip link" context "skip-to-main-nav" %}" class="sr-only on-focus-visible">
|
||||
<p><a href="#content">{% trans "Skip to main content" %}</a></p>
|
||||
</nav>
|
||||
<header>
|
||||
{% if ie_deprecation_warning %}
|
||||
<div class="old-browser-warning">
|
||||
|
||||
@@ -94,10 +94,11 @@
|
||||
</a>
|
||||
{% else %}
|
||||
<h1>
|
||||
<a href="{% eventurl event "presale:event.index" cart_namespace=cart_namespace|default_if_none:"" %}">{{ event.name }}</a>
|
||||
<a href="{% eventurl event "presale:event.index" cart_namespace=cart_namespace|default_if_none:"" %}" class="no-underline">{{ event.name }}
|
||||
{% if request.event.settings.show_dates_on_frontpage and not event.has_subevents %}
|
||||
<small>{{ event.get_date_range_display_as_html }}</small>
|
||||
<small class="text-muted">{{ event.get_date_range_display_as_html }}</small>
|
||||
{% endif %}
|
||||
</a>
|
||||
</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load eventurl %}
|
||||
|
||||
{% if item.current_unavailability_reason == 'require_voucher' %}
|
||||
@@ -20,14 +21,15 @@
|
||||
{% elif avail <= 10 %}
|
||||
<div class="col-md-2 col-sm-3 col-xs-6 availability-box gone">
|
||||
{% if price or original_price %}
|
||||
<strong>{% trans "SOLD OUT" %}</strong>
|
||||
<strong>{% icon "ban" %} {% trans "SOLD OUT" %}</strong>
|
||||
{% else %}
|
||||
<strong>{% trans "FULLY BOOKED" %}</strong>
|
||||
<strong>{% icon "ban" %} {% trans "FULLY BOOKED" %}</strong>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% if allow_waitinglist and item.allow_waitinglist %}
|
||||
<br/>
|
||||
<a href="{% eventurl event "presale:event.waitinglist" cart_namespace=cart_namespace|default_if_none:"" %}?item={{ item.pk }}{% if var %}&var={{ var.pk }}{% endif %}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
||||
<span class="fa fa-plus-circle" aria-hidden="true"></span>
|
||||
<a href="{% eventurl event "presale:event.waitinglist" cart_namespace=cart_namespace|default_if_none:"" %}?item={{ item.pk }}{% if var %}&var={{ var.pk }}{% endif %}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}" class="btn btn-default btn-xs">
|
||||
{% icon "plus-circle" %}
|
||||
{% trans "Waiting list" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load l10n %}
|
||||
{% load eventurl %}
|
||||
{% load money %}
|
||||
@@ -7,7 +8,7 @@
|
||||
{% load rich_text %}
|
||||
{% for tup in items_by_category %}{% with category=tup.0 items=tup.1 form_prefix=tup.2 %}
|
||||
{% if category %}
|
||||
<section aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}>
|
||||
<section class="item-category" aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}>
|
||||
<h{{ headline_level|default:3 }} class="h3" id="{{ form_prefix }}category-{{ category.id }}">{{ category.name }}
|
||||
{% if category.subevent_name %}
|
||||
<small class="text-muted"><i class="fa fa-calendar" aria-hidden="true"></i> {{ category.subevent_name }}</small>
|
||||
@@ -24,7 +25,7 @@
|
||||
<div id="{{ form_prefix }}category-info-{{ category.id }}">{{ category.description|localize|rich_text }}</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<section aria-labelledby="{{ form_prefix }}category-none">
|
||||
<section class="item-category" aria-labelledby="{{ form_prefix }}category-none">
|
||||
<h{{ headline_level|default:"3" }} id="{{ form_prefix }}category-none" class="h3 sr-only">{% trans "Uncategorized items" %}</h{{ headline_level|default:3 }}>
|
||||
{% endif %}
|
||||
{% for item in items %}
|
||||
@@ -82,9 +83,9 @@
|
||||
{% if not event.settings.show_variations_expanded %}
|
||||
{% if item.best_variation_availability <= 10 %}
|
||||
{% if not item.min_price %}
|
||||
<strong class="gone">{% trans "FULLY BOOKED" %}</strong>
|
||||
<strong class="gone">{% icon "ban" %} {% trans "FULLY BOOKED" %}</strong>
|
||||
{% else %}
|
||||
<strong class="gone">{% trans "SOLD OUT" %}</strong>
|
||||
<strong class="gone">{% icon "ban" %} {% trans "SOLD OUT" %}</strong>
|
||||
{% endif %}
|
||||
{% if allow_waitinglist and item.allow_waitinglist %}
|
||||
<br/>
|
||||
|
||||
@@ -1,44 +1,55 @@
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% load icon %}
|
||||
{% load urlreplace %}
|
||||
<nav aria-label="{% trans "calendar navigation" %}">
|
||||
<ul class="row calendar-nav">
|
||||
<li class="col-sm-4 col-xs-2 text-left flip">
|
||||
<li class="text-left flip">
|
||||
{% if subevent_list.has_before %}
|
||||
<a href="?{% url_replace request "date" subevent_list.before|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.before|date:"F Y" %}Show previous month, {{ month }}{% endblocktrans %}">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
{% icon "arrow-left" %}
|
||||
<span class="hidden-xs">{{ subevent_list.before|date:"F Y" }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="col-sm-4 col-xs-8 text-center">
|
||||
<li class="text-center">
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<select name="date" class="form-control" aria-label="{% trans "Select month to show" %}">
|
||||
{% for y in subevent_list.years %}
|
||||
<optgroup label="{{ y }}">
|
||||
{% for m in subevent_list.months %}
|
||||
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit" class="js-hidden btn btn-default">
|
||||
{% trans "Go" %}
|
||||
</button>
|
||||
<fieldset>
|
||||
<legend class="sr-only">{% trans "Select a month to display" %}</legend>
|
||||
<div>
|
||||
<label for="calendar-input-date">{% trans "Month" %}</label>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<select name="date" class="form-control" id="calendar-input-date">
|
||||
{% for y in subevent_list.years %}
|
||||
<optgroup label="{{ y }}">
|
||||
{% for m in subevent_list.months %}
|
||||
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
|
||||
{% icon "chevron-right" %}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</li>
|
||||
<li class="col-sm-4 col-xs-2 text-right flip">
|
||||
<li class="text-right flip">
|
||||
{% if subevent_list.has_after %}
|
||||
<a href="?{% url_replace request "date" subevent_list.after|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.after|date:"F Y" %}Show next month, {{ month }}{% endblocktrans %}">
|
||||
<span class="hidden-xs">{{ subevent_list.after|date:"F Y" }}</span>
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
{% icon "arrow-right" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
@@ -1,63 +1,78 @@
|
||||
{% load i18n %}
|
||||
{% load eventurl %}
|
||||
{% load icon %}
|
||||
{% load urlreplace %}
|
||||
<nav aria-label="{% trans "calendar navigation" %}">
|
||||
<ul class="row calendar-nav">
|
||||
<li class="col-sm-4 col-xs-2 text-left flip">
|
||||
<li class="text-left flip">
|
||||
{% if subevent_list.has_before %}
|
||||
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
{% icon "arrow-left" %}
|
||||
<span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="col-sm-4 col-xs-8 text-center">
|
||||
<li class="text-center">
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
|
||||
{% for weeks_per_year in subevent_list.weeks %}
|
||||
<optgroup label="{{ weeks_per_year.0.0.year }}">
|
||||
{% for w in weeks_per_year %}
|
||||
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
|
||||
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
|
||||
{{ w.0|date:subevent_list.week_format }}
|
||||
({{ w.0|date:subevent_list.short_month_day_format }} – {{ w.1|date:subevent_list.short_month_day_format }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit" class="js-hidden btn btn-default">
|
||||
{% trans "Go" %}
|
||||
</button>
|
||||
<fieldset>
|
||||
<legend class="sr-only">{% trans "Select a week to display" %}</legend>
|
||||
<div>
|
||||
<label for="calendar-input-date">{% trans "Week" %}</label>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
|
||||
{% for weeks_per_year in subevent_list.weeks %}
|
||||
<optgroup label="{{ weeks_per_year.0.0.year }}">
|
||||
{% for w in weeks_per_year %}
|
||||
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
|
||||
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
|
||||
{{ w.0|date:subevent_list.week_format }}
|
||||
({{ w.0|date:subevent_list.short_month_day_format }} – {{ w.1|date:subevent_list.short_month_day_format }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
|
||||
{% icon "chevron-right" %}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</li>
|
||||
<li class="col-sm-4 col-xs-2 text-right flip">
|
||||
<li class="text-right flip">
|
||||
{% if subevent_list.has_after %}
|
||||
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
|
||||
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
{% icon "arrow-right" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=event.settings.event_list_availability days=subevent_list.days show_names=subevent_list.show_names %}
|
||||
<div class="visible-xs text-center" aria-hidden="true">
|
||||
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
{{ subevent_list.before|date:subevent_list.week_format }}
|
||||
</a>
|
||||
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
|
||||
{{ subevent_list.after|date:subevent_list.week_format }}
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
<div class="row visible-xs">
|
||||
<div class="col-xs-6 text-left flip">
|
||||
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
<span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right flip">
|
||||
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
|
||||
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
{% load icon %}
|
||||
{% load eventurl %}
|
||||
|
||||
<dl class="full-width-list alternating-rows">
|
||||
<div class="event-list full-width-list alternating-rows">
|
||||
{% for subev in subevent_list.subevent_list %}
|
||||
<div class="row">
|
||||
<dt class="col-md-4 col-xs-12">
|
||||
<a href="{% if request.GET.voucher %}{% eventurl event "presale:event.redeem" cart_namespace=cart_namespace %}?voucher={{ request.GET.voucher|urlencode }}&subevent={{ subev.pk }}{% else %}{% eventurl event "presale:event.index" subevent=subev.id cart_namespace=cart_namespace %}{% endif %}">
|
||||
<article class="row" aria-labelledby="subevent-{{ subev.pk }}-label" aria-describedby="subevent-{{ subev.pk }}-desc">
|
||||
<h3 class="col-md-4 col-xs-12">
|
||||
<a id="subevent-{{ subev.pk }}-label" href="{% if request.GET.voucher %}{% eventurl event "presale:event.redeem" cart_namespace=cart_namespace %}?voucher={{ request.GET.voucher|urlencode }}&subevent={{ subev.pk }}{% else %}{% eventurl event "presale:event.index" subevent=subev.id cart_namespace=cart_namespace %}{% endif %}">
|
||||
{{ subev.name }}
|
||||
</a>
|
||||
</dt>
|
||||
<dd class="col-md-3 col-xs-12">
|
||||
</h3>
|
||||
<p class="col-md-3 col-xs-12" id="subevent-{{ subev.pk }}-desc">
|
||||
{{ subev.get_date_range_display_as_html }}
|
||||
{% if event.settings.show_times %}
|
||||
<br>
|
||||
@@ -20,13 +20,13 @@
|
||||
<time datetime="{{ subev.date_from.isoformat }}">{{ subev.date_from|date:"TIME_FORMAT" }}</time>
|
||||
</span>
|
||||
{% endif %}
|
||||
</dd>
|
||||
<dd class="col-md-3 col-xs-6">
|
||||
</p>
|
||||
<p class="col-md-3 col-xs-6">
|
||||
<small>
|
||||
{% include "pretixpresale/fragment_event_list_status.html" with event=subev %}
|
||||
</small>
|
||||
</dd>
|
||||
<dd class="col-md-2 col-xs-6 text-right flip">
|
||||
</p>
|
||||
<p class="col-md-2 col-xs-6 text-right flip">
|
||||
<a class="btn btn-primary btn-block" href="{% if request.GET.voucher %}{% eventurl event "presale:event.redeem" cart_namespace=cart_namespace %}?voucher={{ request.GET.voucher|urlencode }}&subevent={{ subev.pk }}{% else %}{% eventurl event "presale:event.index" subevent=subev.id cart_namespace=cart_namespace %}{% endif %}">
|
||||
{% if subev.presale_is_running and subev.best_availability_state == 100 %}
|
||||
{% icon "ticket" %} {% trans "Tickets" %}
|
||||
@@ -34,7 +34,7 @@
|
||||
{% icon "info" %} {% trans "More info" %}
|
||||
{% endif %}
|
||||
</a>
|
||||
</dd>
|
||||
</div>
|
||||
</p>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
{% endif %}
|
||||
<h3 class="panel-title"><b>
|
||||
<h3 class="panel-title"><strong>
|
||||
{% if subevent_list_foldable %}
|
||||
{% if show_cart %}
|
||||
{% trans "Add tickets for a different date" %}
|
||||
@@ -88,7 +88,7 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% trans "Choose date to book a ticket" %}
|
||||
{% endif %}</b>
|
||||
{% endif %}</strong>
|
||||
</h3>
|
||||
{% if subevent_list_foldable %}
|
||||
</summary>
|
||||
@@ -252,7 +252,7 @@
|
||||
{% if not cart_namespace %}
|
||||
{% eventsignal event "pretix.presale.signals.front_page_bottom" subevent=subevent request=request %}
|
||||
<aside class="front-page" aria-labelledby="if-you-already-ordered-a-ticket">
|
||||
<h3 id="if-you-already-ordered-a-ticket">{% trans "If you already ordered a ticket" %}</h3>
|
||||
<h3 id="if-you-already-ordered-a-ticket">{% trans "If you have already ordered a ticket" %}</h3>
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-xs-12">
|
||||
<p>
|
||||
|
||||
@@ -10,15 +10,13 @@
|
||||
<h2>
|
||||
{% trans "Resend order links" %}
|
||||
</h2>
|
||||
<div class="row">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
{% blocktrans trimmed %}
|
||||
If you lost the link to your order or orders, please enter the email address you
|
||||
used for your order. We will send you an email with links to all orders you placed
|
||||
using this email address.
|
||||
{% endblocktrans %}
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
<div class="row">
|
||||
<form class="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
{% for d in weeks|iter_weekdays %}
|
||||
<th><span aria-hidden="true">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th>
|
||||
<th><span aria-hidden="true" class="text-muted">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
{% for f in filter_form.fields %}
|
||||
{% bootstrap_field filter_form|getitem:f %}
|
||||
{% endfor %}
|
||||
<div class="visible-xs"> </div>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<span class="fa fa-filter" aria-hidden="true"></span>
|
||||
{% trans "Filter" %}
|
||||
|
||||
@@ -9,14 +9,13 @@
|
||||
title="{% trans "View customer account" %}" data-toggle="tooltip">
|
||||
<span class="fa fa-user" aria-hidden="true"></span>
|
||||
{{ request.customer.name|default:request.customer.email }}</a>
|
||||
<a href="{% if request.event_domain %}{% abseventurl request.event "presale:organizer.customer.logout" %}{% else %}{% abseventurl request.organizer "presale:organizer.customer.logout" %}{% endif %}?next={{ request.path|urlencode }}%3F{{ request.META.QUERY_STRING|urlencode }}"
|
||||
aria-label="{% trans "Log out" %}" data-toggle="tooltip" data-placement="left"
|
||||
title="{% trans "Log out" %}">
|
||||
<a href="{% if request.event_domain %}{% abseventurl request.event "presale:organizer.customer.logout" %}{% else %}{% abseventurl request.organizer "presale:organizer.customer.logout" %}{% endif %}?next={{ request.path|urlencode }}%3F{{ request.META.QUERY_STRING|urlencode }}">
|
||||
<span class="fa fa-sign-out" aria-hidden="true"></span>
|
||||
<span class="sr-only">{% trans "Log out" %}</span>
|
||||
{% trans "Log out" %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.login" %}{% if request.resolver_match.url_name != "organizer.customer.login" %}?next={% if request.event_domain %}{{ request.scheme }}://{{ request.get_host }}{% endif %}{{ request.path|urlencode }}%3F{{ request.META.QUERY_STRING|urlencode }}{% endif %}{% if request.event_domain %}&request_cross_domain_customer_auth=true{% endif %}">
|
||||
<span class="fa fa-sign-in" aria-hidden="true"></span>
|
||||
{% trans "Log in" %}</a>
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
<div class="modal-card-content">
|
||||
<h3 id="cookie-consent-modal-label"></h3>
|
||||
<div id="cookie-consent-modal-description">
|
||||
<form class="form-horizontal">
|
||||
{% with request.event|default:request.organizer as sh %}
|
||||
<h3>{{ sh.settings.cookie_consent_dialog_title }}</h3>
|
||||
{{ sh.settings.cookie_consent_dialog_text|rich_text }}
|
||||
@@ -70,40 +71,42 @@
|
||||
</summary>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" disabled checked="">
|
||||
{% trans "Required cookies" %}<br>
|
||||
<span class="text-muted">
|
||||
{% trans "Functional cookies (e.g. shopping cart, login, payment, language preference) and technical cookies (e.g. security purposes)" %}
|
||||
</span>
|
||||
<input type="checkbox" disabled checked="" aira-describedby="cookie-consent-checkbox-required-description">
|
||||
{% trans "Required cookies" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="help-block" id="cookie-consent-checkbox-required-description">
|
||||
<p>{% trans "Functional cookies (e.g. shopping cart, login, payment, language preference) and technical cookies (e.g. security purposes)" %}</p>
|
||||
</div>
|
||||
{% for cp in cookie_providers %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="{{ cp.identifier }}">
|
||||
{{ cp.provider_name }}<br>
|
||||
<span class="text-muted">
|
||||
{% for c in cp.usage_classes %}
|
||||
{% if forloop.counter0 > 0 %}· {% endif %}
|
||||
{% if c.value == 1 %}
|
||||
{% trans "Functionality" context "cookie_usage" %}
|
||||
{% elif c.value == 2 %}
|
||||
{% trans "Analytics" context "cookie_usage" %}
|
||||
{% elif c.value == 3 %}
|
||||
{% trans "Marketing" context "cookie_usage" %}
|
||||
{% elif c.value == 4 %}
|
||||
{% trans "Social features" context "cookie_usage" %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if cp.privacy_url %}
|
||||
·
|
||||
<a href="{% safelink cp.privacy_url %}" target="_blank">
|
||||
{% trans "Privacy policy" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
<input type="checkbox" name="{{ cp.identifier }}" aira-describedby="cookie-consent-checkbox-{{ cp.identifier }}-description">
|
||||
{{ cp.provider_name }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="help-block" id="cookie-consent-checkbox-{{ cp.identifier }}-description">
|
||||
<p>
|
||||
{% for c in cp.usage_classes %}
|
||||
{% if forloop.counter0 > 0 %}· {% endif %}
|
||||
{% if c.value == 1 %}
|
||||
{% trans "Functionality" context "cookie_usage" %}
|
||||
{% elif c.value == 2 %}
|
||||
{% trans "Analytics" context "cookie_usage" %}
|
||||
{% elif c.value == 3 %}
|
||||
{% trans "Marketing" context "cookie_usage" %}
|
||||
{% elif c.value == 4 %}
|
||||
{% trans "Social features" context "cookie_usage" %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if cp.privacy_url %}
|
||||
·
|
||||
<a href="{% safelink cp.privacy_url %}" target="_blank">
|
||||
{% trans "Privacy policy" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</details>
|
||||
<div class="row">
|
||||
@@ -130,6 +133,7 @@
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
<form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
class="organizer-logo" />
|
||||
</a>
|
||||
{% else %}
|
||||
<h1><a href="{% eventurl organizer "presale:organizer.index" %}">{{ organizer.name }}</a></h1>
|
||||
<h1><a href="{% eventurl organizer "presale:organizer.index" %}" class="no-underline">{{ organizer.name }}</a></h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if organizer.settings.locales|length > 1 or request.organizer.settings.customer_accounts %}
|
||||
|
||||
@@ -1,61 +1,91 @@
|
||||
{% extends "pretixpresale/organizers/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load rich_text %}
|
||||
{% load eventurl %}
|
||||
{% load urlreplace %}
|
||||
{% block title %}{% trans "Event overview" %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if organizer_homepage_text %}
|
||||
<div>
|
||||
<div class="blank-after">
|
||||
{{ organizer_homepage_text | rich_text }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<h3>{{ date|date:"F Y" }}</h3>
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %}
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-8 text-center" role="group" aria-label="{% trans "Select month to show" %}">
|
||||
<select name="date" class="form-control" aria-label="{% trans "Month" %}">
|
||||
{% for y in years %}
|
||||
<optgroup label="{{ y }}">
|
||||
{% for m in months %}
|
||||
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit" class="js-hidden btn btn-default">
|
||||
{% trans "Go" %}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
<span class="hidden-sm hidden-xs">{{ before|date:"F Y" }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
<span class="hidden-sm hidden-xs">{{ after|date:"F Y" }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="blank-after text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %}
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h2 class="panel-title">
|
||||
<strong>
|
||||
{% blocktrans trimmed with month=date|date:"F Y" %}
|
||||
Events in {{ month }}
|
||||
{% endblocktrans %}
|
||||
</strong>
|
||||
</h2>
|
||||
</div>
|
||||
</form>
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
|
||||
{% if filter_form.fields %}
|
||||
<div class="panel-subhead">
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel-body">
|
||||
<nav aria-label="{% trans "calendar navigation" %}">
|
||||
<ul class="row calendar-nav">
|
||||
<li class="text-left flip">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
|
||||
{% icon "arrow-left" %}
|
||||
<span class="hidden-xs">{{ before|date:"F Y" }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="text-center">
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<fieldset>
|
||||
<legend class="sr-only">{% trans "Select a month to display" %}</legend>
|
||||
<div>
|
||||
<label for="calendar-input-date">{% trans "Month" %}</label>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<select name="date" class="form-control" id="calendar-input-date">
|
||||
{% for y in years %}
|
||||
<optgroup label="{{ y }}">
|
||||
{% for m in months %}
|
||||
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
|
||||
{% icon "chevron-right" %}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</li>
|
||||
<li class="text-right flip">
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
|
||||
<span class="hidden-xs">{{ after|date:"F Y" }}</span>
|
||||
{% icon "arrow-right" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
</div>
|
||||
</div>
|
||||
{% if multiple_timezones %}
|
||||
<div class="alert alert-info">
|
||||
{% blocktrans trimmed %}
|
||||
|
||||
@@ -1,68 +1,102 @@
|
||||
{% extends "pretixpresale/organizers/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load rich_text %}
|
||||
{% load eventurl %}
|
||||
{% load urlreplace %}
|
||||
{% block title %}{% trans "Event overview" %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if organizer_homepage_text %}
|
||||
<div>
|
||||
<div class="blank-after">
|
||||
{{ organizer_homepage_text | rich_text }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<h3>{{ date|date:"DATE_FORMAT" }}</h3>
|
||||
<form class="form-inline" method="get" id="monthselform"
|
||||
action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %}
|
||||
<div class="blank-after text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %}
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h2 class="panel-title">
|
||||
<strong>
|
||||
{% blocktrans trimmed with day=date|date:"DATE_FORMAT" %}
|
||||
Events on {{ day }}
|
||||
{% endblocktrans %}
|
||||
</strong>
|
||||
</h2>
|
||||
</div>
|
||||
{% if filter_form.fields %}
|
||||
<div class="panel-subhead">
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-8 text-center">
|
||||
<input class="datepickerfield form-control" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date">
|
||||
<button type="submit" class="js-hidden btn btn-default">
|
||||
{% trans "Go" %}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip">
|
||||
{% endif %}
|
||||
<div class="panel-body">
|
||||
<nav aria-label="{% trans "calendar navigation" %}">
|
||||
<ul class="row calendar-nav">
|
||||
<li class="text-left flip">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before.date.isoformat %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}">
|
||||
{% icon "arrow-left" %}
|
||||
<span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="text-center">
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<fieldset>
|
||||
<legend class="sr-only">{% trans "Select a date to display" %}</legend>
|
||||
<div>
|
||||
<label for="calendar-input-date">{% trans "Date" %}</label>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input class="datepickerfield form-control" id="calendar-input-date" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date">
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default" aria-label="{% trans "Show date" %}">
|
||||
{% icon "chevron-right" %}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</li>
|
||||
<li class="text-right flip">
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after.date.isoformat %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}">
|
||||
<span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
{% icon "arrow-right" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
<div class="row visible-xs">
|
||||
{% if has_before %}
|
||||
<div class="col-xs-6 text-left flip">
|
||||
<a href="?{% url_replace request "date" before.date.isoformat %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}">
|
||||
class="btn btn-default">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
<span class="hidden-sm hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
<span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if has_after %}
|
||||
<div class="col-xs-6 text-right flip{% if not has_before %} col-xs-offset-6{% endif %}">
|
||||
<a href="?{% url_replace request "date" after.date.isoformat %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}">
|
||||
<span class="hidden-sm hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
class="btn btn-default">
|
||||
<span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
<div class="col-sm-4 visible-xs text-center">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before.date.isoformat %}"
|
||||
class="btn btn-default">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
{{ before|date:"SHORT_DATE_FORMAT" }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after.date.isoformat %}"
|
||||
class="btn btn-default">
|
||||
{{ after|date:"SHORT_DATE_FORMAT" }}
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if multiple_timezones %}
|
||||
|
||||
@@ -1,82 +1,117 @@
|
||||
{% extends "pretixpresale/organizers/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load icon %}
|
||||
{% load rich_text %}
|
||||
{% load eventurl %}
|
||||
{% load urlreplace %}
|
||||
{% block title %}{% trans "Event overview" %}{% endblock %}
|
||||
{% block content %}
|
||||
{% if organizer_homepage_text %}
|
||||
<div>
|
||||
<div class="blank-after">
|
||||
{{ organizer_homepage_text | rich_text }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<h3>{{ date|date:"F Y" }}</h3>
|
||||
<form class="form-inline" method="get" id="monthselform"
|
||||
action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-sm-6 col-xs-12 text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %}
|
||||
<div class="blank-after text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %}
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h2 class="panel-title">
|
||||
<strong>
|
||||
{% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date|date:short_month_day_format %}
|
||||
Events in {{ week }} ({{ week_day_from }} – {{ week_day_to }})
|
||||
{% endblocktrans %}
|
||||
</strong>
|
||||
</h2>
|
||||
</div>
|
||||
{% if filter_form.fields %}
|
||||
<div class="panel-subhead">
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-4 col-xs-8 text-center">
|
||||
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
|
||||
{% for weeks_per_year in weeks %}
|
||||
<optgroup label="{{ weeks_per_year.0.0.year }}">
|
||||
{% for w in weeks_per_year %}
|
||||
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
|
||||
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}>
|
||||
{{ w.0|date:week_format }}
|
||||
({{ w.0|date:short_month_day_format }} – {{ w.1|date:short_month_day_format }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit" class="js-hidden btn btn-default">
|
||||
{% trans "Go" %}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-2 col-xs-4 text-right flip">
|
||||
{% endif %}
|
||||
<div class="panel-body">
|
||||
<nav aria-label="{% trans "calendar navigation" %}">
|
||||
<ul class="row calendar-nav">
|
||||
<li class="text-left flip">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}">
|
||||
{% icon "arrow-left" %}
|
||||
<span class="hidden-xs">{{ before|date:week_format }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="text-center">
|
||||
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
|
||||
{% for f, v in request.GET.items %}
|
||||
{% if f != "date" %}
|
||||
<input type="hidden" name="{{ f }}" value="{{ v }}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<fieldset>
|
||||
<legend class="sr-only">{% trans "Select a week to display" %}</legend>
|
||||
<div>
|
||||
<label for="calendar-input-date">{% trans "Week" %}</label>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<select name="date" class="form-control" id="calendar-input-date">
|
||||
{% for weeks_per_year in weeks %}
|
||||
<optgroup label="{{ weeks_per_year.0.0.year }}">
|
||||
{% for w in weeks_per_year %}
|
||||
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
|
||||
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}>
|
||||
{{ w.0|date:week_format }}
|
||||
({{ w.0|date:short_month_day_format }} – {{ w.1|date:short_month_day_format }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
|
||||
{% icon "chevron-right" %}
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</li>
|
||||
<li class="text-right flip">
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}">
|
||||
<span class="hidden-xs">{{ after|date:week_format }}</span>
|
||||
{% icon "arrow-right" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
<div class="row visible-sm visible-xs">
|
||||
{% if has_before %}
|
||||
<div class="col-xs-6 text-left flip">
|
||||
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}">
|
||||
class="btn btn-default">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
<span class="hidden-sm hidden-xs">{{ before|date:week_format }}</span>
|
||||
{{ before|date:week_format }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if has_after %}
|
||||
<div class="col-xs-6 text-right flip">
|
||||
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
|
||||
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}">
|
||||
<span class="hidden-sm hidden-xs">{{ after|date:week_format }}</span>
|
||||
class="btn btn-default">
|
||||
{{ after|date:week_format }}
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
|
||||
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
|
||||
<div class="col-sm-12 visible-sm visible-xs text-center">
|
||||
{% if has_before %}
|
||||
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
|
||||
class="btn btn-default">
|
||||
<span class="fa fa-arrow-left" aria-hidden="true"></span>
|
||||
{{ before|date:week_format }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if has_after %}
|
||||
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
|
||||
class="btn btn-default">
|
||||
{{ after|date:week_format }}
|
||||
<span class="fa fa-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
||||
{% if multiple_timezones %}
|
||||
<div class="alert alert-info">
|
||||
{% blocktrans trimmed %}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "address-card-o" %} <b>{% trans "Delete address" %}</b>
|
||||
{% icon "address-card-o" %} <strong>{% trans "Delete address" %}</strong>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body account-addresses">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "address-card-o" %}
|
||||
<b>{% trans "Addresses" %}</b> ({{ page_obj.paginator.count }})
|
||||
<strong>{% trans "Addresses" %}</strong> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
{% else %}
|
||||
{% icon "id-badge" %}
|
||||
{% endif %}
|
||||
<b>{% trans "Your membership" %}</b>
|
||||
<strong>{% trans "Your membership" %}</strong>
|
||||
{% if membership.testmode %}
|
||||
<span class="h6">
|
||||
{% textbubble "warning" %}
|
||||
|
||||
@@ -9,99 +9,96 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "id-badge" %}
|
||||
<b>{% trans "Memberships" %}</b> ({{ page_obj.paginator.count }})
|
||||
<strong>{% trans "Memberships" %}</strong> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if memberships %}
|
||||
<ul class="full-width-list alternating-rows">
|
||||
<div class="event-list full-width-list alternating-rows">
|
||||
{% for m in memberships %}
|
||||
<li class="row">
|
||||
<dl>
|
||||
<div class="col-xs-5">
|
||||
<dt>
|
||||
{% if m.canceled %}<del>{% endif %}
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}">
|
||||
{{ m.membership_type.name }}
|
||||
</a>
|
||||
{% if m.canceled %}</del>{% endif %}
|
||||
{% if m.membership_type.transferable %}
|
||||
<span class="text-muted" data-toggle="tooltip" title="{% trans "Membership is transferable" %}">
|
||||
{% icon "users" %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</dt>
|
||||
{% if m.attendee_name %}
|
||||
<dd class="text-muted">
|
||||
{% icon "id-badge" %}
|
||||
<span class="sr-only">{% trans "Attendee name" %}:</span>
|
||||
{{ m.attendee_name }}
|
||||
</dd>
|
||||
<article class="row">
|
||||
<div class="col-xs-5">
|
||||
<h4>
|
||||
{% if m.canceled %}<del>{% endif %}
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}">
|
||||
{{ m.membership_type.name }}
|
||||
</a>
|
||||
{% if m.canceled %}</del>{% endif %}
|
||||
{% if m.membership_type.transferable %}
|
||||
<span class="text-muted" data-toggle="tooltip" title="{% trans "Membership is transferable" %}">
|
||||
{% icon "users" %}
|
||||
</span>
|
||||
{% endif %}
|
||||
<dd class="text-muted">
|
||||
<small>
|
||||
{% if m.canceled %}
|
||||
{% textbubble "danger" icon="times" %}
|
||||
{% trans "Canceled" %}
|
||||
{% endtextbubble %}
|
||||
{% elif m.expired %}
|
||||
{% icon "minus-square-o" %}
|
||||
{% trans "Expired since" %}
|
||||
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% elif m.not_yet_valid %}
|
||||
{% icon "clock-o" %}
|
||||
{% trans "Valid from" %}
|
||||
<time datetime="{{ m.date_start|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% else %}
|
||||
{% icon "check" %}
|
||||
{% trans "Valid until" %}
|
||||
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% endif %}
|
||||
</small>
|
||||
</dd>
|
||||
{% if m.testmode %}
|
||||
<dd>
|
||||
<small>
|
||||
{% textbubble "warning" %}
|
||||
{% trans "TEST MODE" %}
|
||||
</h4>
|
||||
{% if m.attendee_name %}
|
||||
<p class="text-muted">
|
||||
{% icon "id-badge" %}
|
||||
<span class="sr-only">{% trans "Attendee name" %}:</span>
|
||||
{{ m.attendee_name }}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p class="text-muted">
|
||||
<small>
|
||||
{% if m.canceled %}
|
||||
{% textbubble "danger" icon="times" %}
|
||||
{% trans "Canceled" %}
|
||||
{% endtextbubble %}
|
||||
</small>
|
||||
</dd>
|
||||
{% elif m.expired %}
|
||||
{% icon "minus-square-o" %}
|
||||
{% trans "Expired since" %}
|
||||
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% elif m.not_yet_valid %}
|
||||
{% icon "clock-o" %}
|
||||
{% trans "Valid from" %}
|
||||
<time datetime="{{ m.date_start|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_start|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% else %}
|
||||
{% icon "check" %}
|
||||
{% trans "Valid until" %}
|
||||
<time datetime="{{ m.date_end|date:"Y-m-d H:i" }}">
|
||||
{{ m.date_end|date:"SHORT_DATETIME_FORMAT" }}
|
||||
</time>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-xs-5">
|
||||
<dd>
|
||||
<div class="quotabox full-width">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success progress-bar-{{ m.percentage_used }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="numbers">
|
||||
{{ m.usages }} /
|
||||
{{ m.membership_type.max_usages|default_if_none:"∞" }}
|
||||
</small>
|
||||
</p>
|
||||
{% if m.testmode %}
|
||||
<p>
|
||||
<small>
|
||||
{% textbubble "warning" %}
|
||||
{% trans "TEST MODE" %}
|
||||
{% endtextbubble %}
|
||||
</small>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-xs-5">
|
||||
<p>
|
||||
<div class="quotabox full-width">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success progress-bar-{{ m.percentage_used }}">
|
||||
</div>
|
||||
</div>
|
||||
</dd>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<dt class="sr-only">{% trans "Actions" %}</dt>
|
||||
<dd class="text-right">
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}">
|
||||
{% icon "list-ul" %}
|
||||
{% trans "Details" %}
|
||||
</a>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</li>
|
||||
<div class="numbers">
|
||||
{{ m.usages }} /
|
||||
{{ m.membership_type.max_usages|default_if_none:"∞" }}
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<p class="text-right">
|
||||
<a href="{% abseventurl request.organizer "presale:organizer.customer.membership" id=m.id %}">
|
||||
{% icon "list-ul" %}
|
||||
{% trans "Details" %}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="text-center">{% trans "You don’t have any memberships in your account yet." %}</p>
|
||||
{% endif %}
|
||||
|
||||
@@ -10,70 +10,65 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "shopping-cart" %}
|
||||
<b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }})
|
||||
<strong>{% trans "Orders" %}</strong> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if orders %}
|
||||
<ul class="full-width-list alternating-rows">
|
||||
<div class="event-list full-width-list alternating-rows">
|
||||
{% for o in orders %}
|
||||
<li class="row">
|
||||
<dl>
|
||||
<div class="col-md-4 col-sm-5 col-xs-8">
|
||||
<dt class="sr-only">{% trans "Order" %}</dt>
|
||||
<dd><strong>
|
||||
<a href="{% abseventurl o.event "presale:event.order" order=o.code secret=o.secret %}" target="_blank">
|
||||
{% icon "shopping-cart" %}
|
||||
{{ o.code }}</a>
|
||||
</strong>
|
||||
{% if o.customer_id != customer.pk %}
|
||||
<span class="text-muted" data-toggle="tooltip"
|
||||
title="{% trans "Matched to the account based on the email address." %}">
|
||||
{% icon "compress" %}
|
||||
</span>
|
||||
{% endif %}
|
||||
<small>{% include "pretixpresale/event/fragment_order_status.html" with order=o event=o.event %}</small>
|
||||
</dd>
|
||||
<dd><time datetime="{{ o.datetime|date:"Y-m-d H:i" }}" class="text-muted small">{{ o.datetime|date:"SHORT_DATETIME_FORMAT" }}</time></dd>
|
||||
{% if o.testmode %}
|
||||
<dd>
|
||||
<small>
|
||||
{% textbubble "warning" %}
|
||||
{% trans "TEST MODE" %}
|
||||
{% endtextbubble %}
|
||||
</small>
|
||||
</dd>
|
||||
<article class="row">
|
||||
<div class="col-md-4 col-sm-5 col-xs-8">
|
||||
<h4><strong>
|
||||
<a href="{% abseventurl o.event "presale:event.order" order=o.code secret=o.secret %}" target="_blank">
|
||||
{% icon "shopping-cart" %}
|
||||
{{ o.code }}</a>
|
||||
</strong>
|
||||
{% if o.customer_id != customer.pk %}
|
||||
<span class="text-muted" data-toggle="tooltip"
|
||||
title="{% trans "Matched to the account based on the email address." %}">
|
||||
{% icon "compress" %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-2 col-xs-4 text-right">
|
||||
<dt class="sr-only">{% trans "Order total" %}</dt>
|
||||
<dd>{{ o.total|money:o.event.currency }}</dd>
|
||||
<dt class="sr-only">{% trans "Positions" %}</dt>
|
||||
<dd class="text-muted"><small>{% blocktranslate count counter=o.count_positions|default_if_none:0 %}{{ counter }} item{% plural %}{{ counter }} items{% endblocktranslate %}</small>
|
||||
</dd>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-3 col-xs-8">
|
||||
<dt class="sr-only">{% trans "Event" %}</dt>
|
||||
<dd>
|
||||
{{ o.event }}
|
||||
{% if not o.event.has_subevents and o.event.settings.show_dates_on_frontpage %}
|
||||
<br><small class="text-muted">{{ o.event.get_date_range_display }}</small>
|
||||
{% endif %}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-4">
|
||||
<dt class="sr-only">{% trans "Actions" %}</dt>
|
||||
<dd class="text-right">
|
||||
<a href="{% abseventurl o.event "presale:event.order" order=o.code secret=o.secret %}"
|
||||
target="_blank">
|
||||
{% icon "list-ul" %}
|
||||
{% trans "Details" %}
|
||||
</a></dd>
|
||||
</div>
|
||||
</dl>
|
||||
</li>
|
||||
<small>{% include "pretixpresale/event/fragment_order_status.html" with order=o event=o.event %}</small>
|
||||
</h4>
|
||||
<p><time datetime="{{ o.datetime|date:"Y-m-d H:i" }}" class="text-muted small">{{ o.datetime|date:"SHORT_DATETIME_FORMAT" }}</time></p>
|
||||
{% if o.testmode %}
|
||||
<p>
|
||||
<small>
|
||||
{% textbubble "warning" %}
|
||||
{% trans "TEST MODE" %}
|
||||
{% endtextbubble %}
|
||||
</small>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-2 col-xs-4 text-right">
|
||||
<p>
|
||||
{{ o.total|money:o.event.currency }}
|
||||
<br><span class="text-muted"><small>{% blocktranslate count counter=o.count_positions|default_if_none:0 %}{{ counter }} item{% plural %}{{ counter }} items{% endblocktranslate %}</small>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-3 col-xs-8">
|
||||
<p>
|
||||
{{ o.event }}
|
||||
{% if not o.event.has_subevents and o.event.settings.show_dates_on_frontpage %}
|
||||
<br><small class="text-muted">{{ o.event.get_date_range_display }}</small>
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-4">
|
||||
<p class="text-right">
|
||||
<a href="{% abseventurl o.event "presale:event.order" order=o.code secret=o.secret %}"
|
||||
target="_blank">
|
||||
{% icon "list-ul" %}
|
||||
{% trans "Details" %}
|
||||
</a></p>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="text-center">{% trans "You don’t have any orders in your account yet." %}</p>
|
||||
{% endif %}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "user" %} <b>{% trans "Delete profile" %}</b>
|
||||
{% icon "user" %} <strong>{% trans "Delete profile" %}</strong>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% icon "users" %}
|
||||
<b>{% trans "Attendee profiles" %}</b> ({{ page_obj.paginator.count }})
|
||||
<strong>{% trans "Attendee profiles" %}</strong> ({{ page_obj.paginator.count }})
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@@ -19,28 +19,24 @@
|
||||
<meta property="og:url" content="{% abseventurl organizer "presale:organizer.index" %}"/>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div>
|
||||
{% if organizer_homepage_text %}
|
||||
{% if organizer_homepage_text %}
|
||||
<div class="blank-after">
|
||||
{{ organizer_homepage_text | rich_text }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="monthselform">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="blank-after text-left flip">
|
||||
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h2 class="panel-title">
|
||||
<b>
|
||||
<strong>
|
||||
{% if "old" in request.GET %}
|
||||
{% trans "Past events" %}
|
||||
{% else %}
|
||||
{% trans "Upcoming events" %}
|
||||
{% endif %}
|
||||
</b>
|
||||
</strong>
|
||||
</h2>
|
||||
</div>
|
||||
{% if filter_form.fields %}
|
||||
@@ -50,11 +46,11 @@
|
||||
{% endif %}
|
||||
{% if events %}
|
||||
<div class="panel-body">
|
||||
<dl class="full-width-list alternating-rows">
|
||||
<div class="event-list full-width-list alternating-rows">
|
||||
{% for e in events %}{% eventurl e "presale:event.index" as url %}
|
||||
<div class="row">
|
||||
<dt class="col-md-4 col-xs-12"><a href="{{ url }}">{{ e.name }}</a></dt>
|
||||
<dd class="col-md-3 col-xs-12">
|
||||
<article class="row" aria-labelledby="event-{{ e.pk }}-label" aria-describedby="event-{{ e.pk }}-desc">
|
||||
<h3 class="col-md-4 col-xs-12"><a href="{{ url }}" id="event-{{ e.pk }}-label">{{ e.name }}</a></h3>
|
||||
<p class="col-md-3 col-xs-12" id="event-{{ e.pk }}-desc">
|
||||
{% if e.settings.show_dates_on_frontpage %}
|
||||
{% if e.has_subevents %}
|
||||
{% icon "calendar" %} {% trans "Multiple dates" context "subevent" %}
|
||||
@@ -82,13 +78,13 @@
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</dd>
|
||||
<dd class="col-md-3 col-xs-6">
|
||||
</p>
|
||||
<p class="col-md-3 col-xs-6">
|
||||
<small>
|
||||
{% include "pretixpresale/fragment_event_list_status.html" with event=e %}
|
||||
</small>
|
||||
</dd>
|
||||
<dd class="col-md-2 col-xs-6 text-right flip">
|
||||
</p>
|
||||
<p class="col-md-2 col-xs-6 text-right flip">
|
||||
<a class="btn btn-primary btn-block" href="{{ url }}{% if e.has_subevents and e.match_by_subevents %}{{ filterquery }}{% endif %}">
|
||||
{% if e.has_subevents %}{% icon "ticket" %} {% trans "Tickets" %}
|
||||
{% elif e.presale_is_running and e.best_availability_state == 100 %}
|
||||
@@ -97,10 +93,10 @@
|
||||
{% icon "info" %} {% trans "More info" %}
|
||||
{% endif %}
|
||||
</a>
|
||||
</dd>
|
||||
</div>
|
||||
</p>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
|
||||
@@ -51,6 +51,13 @@ $(function () {
|
||||
const required = 'required' in options && options.required && isRequired && visible;
|
||||
dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
|
||||
dependent.prop("required", required);
|
||||
const label = dependent.closest(".form-group").find("label");
|
||||
const labelRequired = label.find(".label-required");
|
||||
if (!required) {
|
||||
labelRequired.remove();
|
||||
} else if (!labelRequired.length) {
|
||||
label.append('<i class="label-required">' + gettext('required') + '</i>')
|
||||
}
|
||||
}
|
||||
for (var k in dependents) dependents[k].prop("disabled", false);
|
||||
}).always(function() {
|
||||
@@ -64,6 +71,7 @@ $(function () {
|
||||
|
||||
dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
|
||||
dependent.prop("required", required);
|
||||
dependent.closest(".form-group").find("label .label-required").remove();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -277,7 +277,8 @@ var form_handlers = function (el) {
|
||||
fill_field.on("dp.show", show);
|
||||
});
|
||||
|
||||
function luminanace(r, g, b) {
|
||||
function luminance(r, g, b) {
|
||||
// Algorithm defined as https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
|
||||
var a = [r, g, b].map(function (v) {
|
||||
v /= 255;
|
||||
return v <= 0.03928
|
||||
@@ -287,8 +288,9 @@ var form_handlers = function (el) {
|
||||
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
|
||||
}
|
||||
function contrast(rgb1, rgb2) {
|
||||
var l1 = luminanace(rgb1[0], rgb1[1], rgb1[2]) + 0.05,
|
||||
l2 = luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05,
|
||||
// Algorithm defined at https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
|
||||
var l1 = luminance(rgb1[0], rgb1[1], rgb1[2]) + 0.05,
|
||||
l2 = luminance(rgb2[0], rgb2[1], rgb2[2]) + 0.05,
|
||||
ratio = l1/l2
|
||||
if (l2 > l1) {ratio = 1/ratio}
|
||||
return ratio.toFixed(1)
|
||||
@@ -327,15 +329,15 @@ var form_handlers = function (el) {
|
||||
var icon, text, cls;
|
||||
if (c > 7) {
|
||||
icon = "fa-check-circle";
|
||||
text = gettext('Your color has great contrast and is very easy to read!');
|
||||
text = gettext('Your color has great contrast and will provide excellent accessibility.');
|
||||
cls = "text-success";
|
||||
} else if (c > 2.5) {
|
||||
} else if (c > 4.5) {
|
||||
icon = "fa-info-circle";
|
||||
text = gettext('Your color has decent contrast and is probably good-enough to read!');
|
||||
text = gettext('Your color has decent contrast and is sufficient for minimum accessibility requirements.');
|
||||
cls = "";
|
||||
} else {
|
||||
icon = "fa-warning";
|
||||
text = gettext('Your color has bad contrast for text on white background, please choose a darker shade.');
|
||||
text = gettext('Your color has insufficient contrast to white. Accessibility of your site will be impacted.');
|
||||
cls = "text-danger";
|
||||
}
|
||||
if ($icon.length === 0) {
|
||||
|
||||
@@ -263,6 +263,10 @@ function setup_basics(el) {
|
||||
|
||||
el.find(".js-only").removeClass("js-only");
|
||||
el.find(".js-hidden").hide();
|
||||
// make sure to always have a #content for skip-link to work
|
||||
if (!document.querySelector("#content")) {
|
||||
(document.querySelector('main') || document.querySelector('.page-header + *')).id = "content"
|
||||
}
|
||||
|
||||
el.find("div.collapsed").removeClass("collapsed").addClass("collapse");
|
||||
el.find(".has-error, .alert-danger").each(function () {
|
||||
@@ -303,8 +307,6 @@ function setup_basics(el) {
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
el.find('[data-toggle="tooltip"]').tooltip();
|
||||
|
||||
// AddOns
|
||||
el.find('.addon-variation-description').hide();
|
||||
el.find('.toggle-variation-description').click(function () {
|
||||
@@ -472,17 +474,10 @@ $(function () {
|
||||
$("[data-save-scrollpos]").on("click submit", function () {
|
||||
sessionStorage.setItem('scrollpos', window.scrollY);
|
||||
});
|
||||
$("#monthselform").on("submit", function () {
|
||||
sessionStorage.setItem('scrollpos', window.scrollY);
|
||||
});
|
||||
}
|
||||
$("#monthselform select").change(function () {
|
||||
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
|
||||
this.form.submit();
|
||||
});
|
||||
$("#monthselform input").on("dp.change", function () {
|
||||
if ($(this).data("DateTimePicker")) { // prevent submit after dp init
|
||||
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
|
||||
this.form.submit();
|
||||
}
|
||||
});
|
||||
var update_cart_form = function () {
|
||||
var is_enabled = $(".product-row input[type=checkbox]:checked, .variations input[type=checkbox]:checked, .product-row input[type=radio]:checked, .variations input[type=radio]:checked").length;
|
||||
if (!is_enabled) {
|
||||
@@ -551,7 +546,7 @@ $(function () {
|
||||
}
|
||||
dependent.closest('.form-group').toggleClass('required', enabled);
|
||||
if (enabled) {
|
||||
dependentLabel.append('<i class="sr-only label-required">, ' + gettext('required') + '</i>');
|
||||
dependentLabel.append('<i class="label-required">' + gettext('required') + '</i>');
|
||||
}
|
||||
else {
|
||||
dependentLabel.find(".label-required").remove();
|
||||
|
||||
@@ -208,7 +208,7 @@ Vue.component('availbox', {
|
||||
template: ('<div class="pretix-widget-availability-box">'
|
||||
+ '<div class="pretix-widget-availability-unavailable"'
|
||||
+ ' v-if="item.current_unavailability_reason === \'require_voucher\'">'
|
||||
+ '<small><a @click.prevent.stop="focus_voucher_field" role="button">{{unavailability_reason_message}}</a></small>'
|
||||
+ '<small><a @click.prevent.stop="focus_voucher_field" role="button" tabindex="0">{{unavailability_reason_message}}</a></small>'
|
||||
+ '</div>'
|
||||
+ '<div class="pretix-widget-availability-unavailable"'
|
||||
+ ' v-else-if="unavailability_reason_message">'
|
||||
@@ -239,12 +239,12 @@ Vue.component('availbox', {
|
||||
+ '>'
|
||||
+ '</label>'
|
||||
+ '<div :class="count_group_classes" v-else role="group" v-bind:aria-label="item.name">'
|
||||
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" aria-label="' + strings.quantity_dec + '"><span>-</span></button>'
|
||||
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" v-bind:aria-label="dec_label"><span>-</span></button>'
|
||||
+ '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"'
|
||||
+ ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"'
|
||||
+ ' aria-label="' + strings.quantity + '" ref="quantity"'
|
||||
+ ' v-bind:aria-labelledby="aria_labelledby" ref="quantity"'
|
||||
+ ' >'
|
||||
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" aria-label="' + strings.quantity_inc + '"><span>+</span></button>'
|
||||
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" v-bind:aria-label="inc_label"><span>+</span></button>'
|
||||
+ '</div>'
|
||||
+ '</div>'
|
||||
+ '</div>'),
|
||||
@@ -262,6 +262,15 @@ Vue.component('availbox', {
|
||||
this.$root.$emit('amounts_changed')
|
||||
},
|
||||
computed: {
|
||||
aria_labelledby: function () {
|
||||
return this.$root.html_id + '-item-label-' + this.item.id;
|
||||
},
|
||||
dec_label: function () {
|
||||
return '- ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_dec;
|
||||
},
|
||||
inc_label: function () {
|
||||
return '+ ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_inc;
|
||||
},
|
||||
count_group_classes: function () {
|
||||
return {
|
||||
'pretix-widget-item-count-group': !this.$root.use_native_spinners
|
||||
@@ -350,12 +359,12 @@ Vue.component('pricebox', {
|
||||
+ '<del class="pretix-widget-pricebox-original-price" v-bind:aria-label="original_price_aria_label" v-html="original_line"></del> '
|
||||
+ '<ins class="pretix-widget-pricebox-new-price" v-bind:aria-label="new_price_aria_label" v-html="priceline"></ins></span>'
|
||||
+ '<div v-if="free_price">'
|
||||
+ '<span class="pretix-widget-pricebox-currency">{{ $root.currency }}</span> '
|
||||
+ '<span class="pretix-widget-pricebox-currency" :id="price_box_id">{{ $root.currency }}</span> '
|
||||
+ '<input type="number" class="pretix-widget-pricebox-price-input" placeholder="0" '
|
||||
+ ' :min="display_price_nonlocalized" :value="suggested_price_nonlocalized" :name="field_name"'
|
||||
+ ' step="any" v-bind:aria-label="free_price_label">'
|
||||
+ ' step="any" v-bind:aria-labelledby="aria_labelledby" v-bind:aria-describedby="price_desc_id">'
|
||||
+ '</div>'
|
||||
+ '<small class="pretix-widget-pricebox-tax" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">'
|
||||
+ '<small class="pretix-widget-pricebox-tax" :id="price_desc_id" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">'
|
||||
+ '{{ taxline }}'
|
||||
+ '</small>'
|
||||
+ '</div>'),
|
||||
@@ -366,6 +375,7 @@ Vue.component('pricebox', {
|
||||
suggested_price: Object,
|
||||
original_price: String,
|
||||
mandatory_priced_addons: Boolean,
|
||||
item_id: Number,
|
||||
},
|
||||
methods: {
|
||||
stripHTML: function (s) {
|
||||
@@ -375,6 +385,18 @@ Vue.component('pricebox', {
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
aria_labelledby: function () {
|
||||
return [
|
||||
this.$root.html_id + '-item-label-' + this.item_id,
|
||||
this.price_box_id
|
||||
].join(" ");
|
||||
},
|
||||
price_box_id: function () {
|
||||
return this.$root.html_id + '-item-pricebox-' + this.item_id;
|
||||
},
|
||||
price_desc_id: function () {
|
||||
return this.$root.html_id + '-item-pricedesc-' + this.item_id;
|
||||
},
|
||||
display_price: function () {
|
||||
if (this.$root.display_net_prices) {
|
||||
return floatformat(parseFloat(this.price.net), 2);
|
||||
@@ -419,9 +441,6 @@ Vue.component('pricebox', {
|
||||
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + this.display_price;
|
||||
}
|
||||
},
|
||||
free_price_label () {
|
||||
return [strings.price, this.$root.currency].join(", ")
|
||||
},
|
||||
taxline: function () {
|
||||
if (this.$root.display_net_prices) {
|
||||
if (this.price.includes_mixed_tax_rate) {
|
||||
@@ -465,7 +484,7 @@ Vue.component('variation', {
|
||||
+ '<div :id="variation_price_id" class="pretix-widget-item-price-col">'
|
||||
+ '<pricebox :price="variation.price" :free_price="item.free_price" :original_price="orig_price" '
|
||||
+ ' :mandatory_priced_addons="item.mandatory_priced_addons" :suggested_price="variation.suggested_price"'
|
||||
+ ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices">'
|
||||
+ ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices" :item_id="item.id">'
|
||||
+ '</pricebox>'
|
||||
+ '<span v-if="!$root.showPrices"> </span>'
|
||||
+ '</div>'
|
||||
@@ -515,7 +534,7 @@ Vue.component('item', {
|
||||
+ '<a :href="item.picture_fullsize" v-if="item.picture" class="pretix-widget-item-picture-link" @click.prevent.stop="lightbox"><img :src="item.picture" class="pretix-widget-item-picture" :alt="picture_alt_text"></a>'
|
||||
+ '<div class="pretix-widget-item-title-and-description">'
|
||||
+ '<a v-if="item.has_variations && show_toggle" :id="item_label_id" class="pretix-widget-item-title" :href="\'#\' + item.id + \'-variants\'"'
|
||||
+ ' @click.prevent.stop="expand" tabindex="-1"'
|
||||
+ ' @click.prevent.stop="expand"'
|
||||
+ '>'
|
||||
+ '{{ item.name }}'
|
||||
+ '</a>'
|
||||
@@ -848,10 +867,10 @@ var shared_iframe_fragment = (
|
||||
);
|
||||
|
||||
var shared_alert_fragment = (
|
||||
'<div :class="alertClasses" role="dialog" aria-modal="true" aria-live="polite">'
|
||||
'<div :class="alertClasses" role="alertdialog" v-bind:aria-labelledby="$root.parent.html_id + \'-error-message\'">'
|
||||
+ '<transition name="bounce" @after-enter="focusButton">'
|
||||
+ '<div class="pretix-widget-alert-box" v-if="$root.error_message">'
|
||||
+ '<p>{{ $root.error_message }}</p>'
|
||||
+ '<p :id="$root.parent.html_id + \'-error-message\'">{{ $root.error_message }}</p>'
|
||||
+ '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>'
|
||||
+ '<button v-else @click.prevent.stop="errorClose">' + strings.close + '</button></p>'
|
||||
+ '</div>'
|
||||
@@ -996,7 +1015,7 @@ Vue.component('pretix-widget-event-form', {
|
||||
|
||||
// Form start
|
||||
+ '<div class="pretix-widget-event-description" v-if="display_event_info && $root.frontpage_text" v-html="$root.frontpage_text"></div>'
|
||||
+ '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget">'
|
||||
+ '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget" @submit="$parent.buy">'
|
||||
+ '<input type="hidden" name="_voucher_code" :value="$root.voucher_code" v-if="$root.voucher_code">'
|
||||
+ '<input type="hidden" name="subevent" :value="$root.subevent" />'
|
||||
+ '<input type="hidden" name="widget_data" :value="$root.widget_data_json" />'
|
||||
@@ -1040,7 +1059,7 @@ Vue.component('pretix-widget-event-form', {
|
||||
|
||||
// Buy button
|
||||
+ '<div class="pretix-widget-action" v-if="$root.display_add_to_cart">'
|
||||
+ '<button @click="$parent.buy" type="submit" :disabled="buy_disabled">{{ this.buy_label }}</button>'
|
||||
+ '<button type="submit">{{ this.buy_label }}</button>'
|
||||
+ '</div>'
|
||||
|
||||
+ '</form>'
|
||||
@@ -1049,10 +1068,10 @@ Vue.component('pretix-widget-event-form', {
|
||||
+ '<form method="get" :action="$root.voucherFormTarget" target="_blank" '
|
||||
+ ' v-if="$root.vouchers_exist && !$root.disable_vouchers && !$root.voucher_code">'
|
||||
+ '<div class="pretix-widget-voucher">'
|
||||
+ '<h3 class="pretix-widget-voucher-headline">'+ strings['redeem_voucher'] +'</h3>'
|
||||
+ '<h3 class="pretix-widget-voucher-headline" :id="aria_labelledby">'+ strings['redeem_voucher'] +'</h3>'
|
||||
+ '<div v-if="$root.voucher_explanation_text" class="pretix-widget-voucher-text" v-html="$root.voucher_explanation_text"></div>'
|
||||
+ '<div class="pretix-widget-voucher-input-wrap">'
|
||||
+ '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'">'
|
||||
+ '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'" v-bind:aria-labelledby="aria_labelledby">'
|
||||
+ '</div>'
|
||||
+ '<input type="hidden" v-for="p in hiddenParams" :name="p[0]" :value="p[1]" />'
|
||||
+ '<div class="pretix-widget-voucher-button-wrap">'
|
||||
@@ -1064,21 +1083,16 @@ Vue.component('pretix-widget-event-form', {
|
||||
|
||||
+ '</div>'
|
||||
),
|
||||
data: function () {
|
||||
return {
|
||||
buy_disabled: true
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
this.$root.$on('amounts_changed', this.calculate_buy_disabled)
|
||||
this.$root.$on('focus_voucher_field', this.focus_voucher_field)
|
||||
this.calculate_buy_disabled()
|
||||
},
|
||||
beforeDestroy: function() {
|
||||
this.$root.$off('amounts_changed', this.calculate_buy_disabled)
|
||||
this.$root.$off('focus_voucher_field', this.focus_voucher_field)
|
||||
},
|
||||
computed: {
|
||||
aria_labelledby: function() {
|
||||
return this.$root.html_id + '-voucher-headline';
|
||||
},
|
||||
display_event_info: function () {
|
||||
return this.$root.display_event_info || (this.$root.display_event_info === null && (this.$root.events || this.$root.weeks || this.$root.days));
|
||||
},
|
||||
@@ -1151,28 +1165,6 @@ Vue.component('pretix-widget-event-form', {
|
||||
$el.focus();
|
||||
});
|
||||
},
|
||||
calculate_buy_disabled: function() {
|
||||
var i, j, k;
|
||||
for (i = 0; i < this.$root.categories.length; i++) {
|
||||
var cat = this.$root.categories[i];
|
||||
for (j = 0; j < cat.items.length; j++) {
|
||||
var item = cat.items[j];
|
||||
if (item.has_variations) {
|
||||
for (k = 0; k < item.variations.length; k++) {
|
||||
var v = item.variations[k];
|
||||
if (v.amount_selected) {
|
||||
this.buy_disabled = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (item.amount_selected) {
|
||||
this.buy_disabled = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.buy_disabled = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1408,7 +1400,7 @@ Vue.component('pretix-widget-event-week-cell', {
|
||||
});
|
||||
|
||||
Vue.component('pretix-widget-event-calendar-cell', {
|
||||
template: ('<td :class="classObject" @click.prevent.stop="selectDay">'
|
||||
template: ('<td :class="classObject" :role="role" :tabindex="tabindex" v-bind:aria-label="date">'
|
||||
+ '<div class="pretix-widget-event-calendar-day" v-if="day" v-bind:aria-label="date">'
|
||||
+ '{{ daynum }}'
|
||||
+ '</div>'
|
||||
@@ -1420,10 +1412,12 @@ Vue.component('pretix-widget-event-calendar-cell', {
|
||||
day: Object,
|
||||
},
|
||||
methods: {
|
||||
selectDay: function () {
|
||||
selectDay: function (e) {
|
||||
if (!this.day || !this.day.events.length || !this.$parent.$parent.$parent.mobile) {
|
||||
return;
|
||||
}
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (this.day.events.length === 1) {
|
||||
var ev = this.day.events[0];
|
||||
this.$root.parent_stack.push(this.$root.target_url);
|
||||
@@ -1436,9 +1430,40 @@ Vue.component('pretix-widget-event-calendar-cell', {
|
||||
this.$root.events = this.day.events;
|
||||
this.$root.view = "events";
|
||||
}
|
||||
},
|
||||
onKeyDown: function (e) {
|
||||
var keyDown = e.key !== undefined ? e.key : e.keyCode;
|
||||
if ( (keyDown === 'Enter' || keyDown === 13) || (['Spacebar', ' '].indexOf(keyDown) >= 0 || keyDown === 32)) {
|
||||
// (prevent default so the page doesn't scroll when pressing space)
|
||||
e.preventDefault();
|
||||
this.selectDay(e);
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted: function () {
|
||||
if (this.role == 'button') {
|
||||
this.$el.addEventListener("click", this.selectDay);
|
||||
this.$el.addEventListener("keydown", this.onKeyDown);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
role: function (newValue) {
|
||||
if (newValue == 'button') {
|
||||
this.$el.addEventListener("click", this.selectDay);
|
||||
this.$el.addEventListener("keydown", this.onKeyDown);
|
||||
} else {
|
||||
this.$el.removeEventListener("click", this.selectDay);
|
||||
this.$el.removeEventListener("keydown", this.onKeyDown);
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
role: function () {
|
||||
return (!this.day || !this.day.events.length || !this.$parent.$parent.$parent.mobile) ? 'cell' : 'button';
|
||||
},
|
||||
tabindex: function () {
|
||||
return this.role == 'button' ? '0' : '-1';
|
||||
},
|
||||
daynum: function () {
|
||||
if (!this.day) {
|
||||
return;
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
width: 14.29%;
|
||||
}
|
||||
h3 {
|
||||
font-size: 16px;
|
||||
font-size: 0.875rem;
|
||||
color: $text-muted;
|
||||
border-bottom: 2px solid $table-border-color;
|
||||
}
|
||||
p {
|
||||
margin-bottom: 3px;
|
||||
@@ -11,6 +13,7 @@
|
||||
.events {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
a.event {
|
||||
--status-bg-color: var(--pretix-brand-primary-tint-90);
|
||||
@@ -97,9 +100,13 @@
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 8px;
|
||||
margin-bottom: 8px;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
background-color: #fff;
|
||||
}
|
||||
h3 .fa::before {
|
||||
content: $fa-var-caret-right;
|
||||
@@ -112,6 +119,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.table-calendar .day:nth-child(even) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
|
||||
.event-list-filter-form {
|
||||
.event-list-filter-form-row {
|
||||
display: flex;
|
||||
@@ -244,7 +255,7 @@
|
||||
}
|
||||
|
||||
.day-calendar a.event {
|
||||
margin: 1px;
|
||||
margin: 0;
|
||||
}
|
||||
.day-calendar a.event .event-time {
|
||||
display: inline;
|
||||
@@ -373,9 +384,20 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
|
||||
grid-template-rows: repeat(var(--concurrency, 1), auto);
|
||||
}
|
||||
|
||||
|
||||
.day-timeline {
|
||||
--total-concurrency: var(--concurrency);
|
||||
}
|
||||
.day-timeline > li {
|
||||
grid-column: calc(1 + var(--offset-hour, 0)*60/var(--raster-size, 5) + var(--offset-minute, 0)/var(--raster-size, 5)) / span calc(var(--duration-hour, 0)*60/var(--raster-size, 5) + var(--duration-minute, 0)/var(--raster-size, 5));
|
||||
grid-row: var(--concurrency, 1) / span 1;
|
||||
padding: 3px 8px 0;
|
||||
/* add 11px of padding-bottom to the events with --concurrency being the same as --total-concurrency, otherwise 0px */
|
||||
padding-bottom: #{'round(down, calc(11px * var(--concurrency)/var(--total-concurrency)), 11px)'};
|
||||
}
|
||||
|
||||
.day-timeline > li[data-concurrency="1"] {
|
||||
padding-top: 8px;
|
||||
}
|
||||
.day-timeline > li:focus-within {
|
||||
z-index: 2; /* move to front so focus-outline overlays other elements */
|
||||
@@ -385,12 +407,14 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
|
||||
grid-row: 1 / span var(--concurrency, 1) !important;
|
||||
}
|
||||
.ticks li {
|
||||
padding: 8px 3px 5px;
|
||||
padding: 11px 8px 8px;
|
||||
line-height: 1;
|
||||
border-top-left-radius: $border-radius-base;
|
||||
border-top-right-radius: $border-radius-base;
|
||||
border-bottom: 2px solid $table-border-color;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ticks li:nth-of-type(odd), .tick {
|
||||
.tick {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
.day-timeline:nth-last-of-type(1) li {
|
||||
@@ -422,7 +446,16 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
|
||||
|
||||
.weekday {
|
||||
flex: 1;
|
||||
margin: 0 5px;
|
||||
padding: 0 8px 8px;
|
||||
}
|
||||
.weekday:nth-child(even) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
.weekday h3 {
|
||||
margin-left: -8px;
|
||||
margin-right: -8px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.weekday:first-child {
|
||||
margin-left: 0;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
text-align: center;
|
||||
|
||||
&.gone, .gone {
|
||||
color: $alert-danger-text;
|
||||
color: $brand-danger;
|
||||
}
|
||||
&.unavailable, .unavailable {
|
||||
color: $alert-warning-text;
|
||||
@@ -240,14 +240,26 @@ div.front-page {
|
||||
}
|
||||
}
|
||||
|
||||
.calendar-nav, .calendar-nav li {
|
||||
.calendar-nav, .calendar-nav > li {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
.calendar-nav li {
|
||||
padding: 10px 0;
|
||||
.calendar-nav > li {
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
.calendar-nav {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
}
|
||||
.calendar-nav > li {
|
||||
width: 60%;
|
||||
}
|
||||
.calendar-nav > li:first-child,
|
||||
.calendar-nav > li:last-child {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
.subevent-toggle {
|
||||
display: none;
|
||||
|
||||
@@ -23,6 +23,10 @@ a.btn, button.btn {
|
||||
}
|
||||
}
|
||||
|
||||
.input-group:has(.input-group-btn:last-child) *:not(last-child) {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.panel-title .radio {
|
||||
margin-left: 20px;
|
||||
}
|
||||
@@ -49,6 +53,15 @@ a.btn, button.btn {
|
||||
}
|
||||
}
|
||||
}
|
||||
.checkbox + .help-block {
|
||||
padding-left: 20px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
output {
|
||||
padding-top: $padding-base-vertical;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
h1, .h1,
|
||||
h2, .h2,
|
||||
h3, .h3 {
|
||||
margin-top: 2.25 * $line-height-computed;
|
||||
margin-top: 0.75 * $line-height-computed;
|
||||
margin-bottom: 0.75 * $line-height-computed;
|
||||
}
|
||||
|
||||
.front-page, .item-category {
|
||||
h1, .h1,
|
||||
h2, .h2,
|
||||
h3, .h3 {
|
||||
margin-top: 2.25 * $line-height-computed;
|
||||
}
|
||||
}
|
||||
|
||||
.page-header {
|
||||
position: relative;
|
||||
padding-bottom: 9px;
|
||||
@@ -35,8 +43,9 @@ h3, .h3 {
|
||||
.page-header-links > div.header-part {
|
||||
padding-top: 15px;
|
||||
|
||||
a:link, a:visited {
|
||||
a {
|
||||
color: var(--pretix-link-contrast-color);
|
||||
outline-color: inherit;
|
||||
}
|
||||
a:active, a:hover, a:focus {
|
||||
color: var(--pretix-link-hover-contrast-color);
|
||||
|
||||
@@ -14,7 +14,7 @@ $font-size-h4: ($font-size-base * 1.25) !default;
|
||||
$font-size-h5: $font-size-base !default;
|
||||
$font-size-h6: ($font-size-base * .85) !default;
|
||||
|
||||
$line-height-base: 1.428571429 !default;
|
||||
$line-height-base: 1.43 !default;
|
||||
$line-height-computed: ($font-size-base * $line-height-base) !default;
|
||||
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
|
||||
$line-height-small: 1.5 !default;
|
||||
@@ -69,6 +69,30 @@ html {
|
||||
}
|
||||
}
|
||||
|
||||
.on-focus-visible:focus, .on-focus-visible:focus-within {
|
||||
height: auto;
|
||||
width: auto;
|
||||
overflow: auto;
|
||||
clip: auto;
|
||||
}
|
||||
#skip-to-main {
|
||||
/* padding is needed to make focus-outline visible */
|
||||
padding: 8px;
|
||||
background-color: inherit;
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
a {
|
||||
padding: .125em .5em;
|
||||
display: inline-block;
|
||||
color: var(--pretix-link-contrast-color);
|
||||
outline-color: inherit;
|
||||
}
|
||||
a:active, a:hover, a:focus {
|
||||
color: var(--pretix-link-hover-contrast-color);
|
||||
}
|
||||
}
|
||||
|
||||
/* fixe for bootstrap using px-values for fontsize */
|
||||
.panel-title {
|
||||
font-size: ($font-size-base * 1.125);
|
||||
@@ -84,7 +108,22 @@ pre {
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
/* make all links in textflow underlined */
|
||||
h1, h2, h3, h4, h5, h6, p, li {
|
||||
a:not(.btn) {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
a.no-underline:link, nav li a:link {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.no-underline:hover, nav li a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.help-block a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
/* See https://github.com/pretix/pretix/pull/761 */
|
||||
@@ -569,22 +608,18 @@ h2 .label {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.event-list {
|
||||
margin-bottom: 15px;
|
||||
border-top: 1px solid $table-border-color;
|
||||
|
||||
.row {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
border-left: 1px solid $table-border-color;
|
||||
border-right: 1px solid $table-border-color;
|
||||
.event-list.full-width-list {
|
||||
h3, h4, p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.row > div {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
h3, h4 {
|
||||
font-size: 1em;
|
||||
line-height: 1.25rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
h4 small {
|
||||
font-size: 85%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
margin: 10px 0;
|
||||
background-color: white;
|
||||
border: 2px solid $brand-info;
|
||||
color: $brand-info;
|
||||
color: $state-info-text;
|
||||
border-radius: $alert-border-radius;
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
margin: 10px 0;
|
||||
background-color: white;
|
||||
border: 2px solid $brand-danger;
|
||||
color: $brand-danger;
|
||||
color: $state-danger-text;
|
||||
border-radius: $alert-border-radius;
|
||||
}
|
||||
|
||||
|
||||
@@ -195,4 +195,27 @@ def test_NO_id_valid():
|
||||
|
||||
assert validate_vat_id('NO974760673 MVA', 'NO') == 'NO974760673MVA'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_NO_id_valid_without_prefix():
|
||||
responses.add(
|
||||
responses.GET,
|
||||
'https://data.brreg.no/enhetsregisteret/api/enheter/974760673',
|
||||
body='{"organisasjonsnummer":"974760673","navn":"REGISTERENHETEN I BRØNNØYSUND","organisasjonsform":{"kode":'
|
||||
'"ORGL","beskrivelse":"Organisasjonsledd","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/'
|
||||
'organisasjonsformer/ORGL"}}},"hjemmeside":"www.brreg.no","postadresse":{"land":"Norge","landkode":"NO","postn'
|
||||
'ummer":"8910","poststed":"BRØNNØYSUND","adresse":["Postboks 900"],"kommune":"BRØNNØY","kommunenummer":"1813"}'
|
||||
',"registreringsdatoEnhetsregisteret":"1995-08-09","registrertIMvaregisteret":false,"naeringskode1":{"beskrivels'
|
||||
'e":"Generell offentlig administrasjon","kode":"84.110"},"antallAnsatte":455,"overordnetEnhet":"912660680","for'
|
||||
'retningsadresse":{"land":"Norge","landkode":"NO","postnummer":"8900","poststed":"BRØNNØYSUND","adresse":["Havn'
|
||||
'egata 48"],"kommune":"BRØNNØY","kommunenummer":"1813"},"institusjonellSektorkode":{"kode":"6100","beskrivelse'
|
||||
'":"Statsforvaltningen"},"registrertIForetaksregisteret":false,"registrertIStiftelsesregisteret":false,"registr'
|
||||
'ertIFrivillighetsregisteret":false,"konkurs":false,"underAvvikling":false,"underTvangsavviklingEllerTvangsopp'
|
||||
'losning":false,"maalform":"Bokmål","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter'
|
||||
'/974760673"},"overordnetEnhet":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter/912660680"}}}',
|
||||
status=200
|
||||
)
|
||||
|
||||
assert validate_vat_id('974 760 673 MVA', 'NO') == 'NO974760673MVA'
|
||||
|
||||
# No tests for CH currently since it's harder to mock Zeep
|
||||
|
||||
Reference in New Issue
Block a user