mirror of
https://github.com/pretix/pretix.git
synced 2026-01-03 18:52:26 +00:00
Compare commits
1 Commits
a11y-autoc
...
subevent-e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58a0791770 |
@@ -19,4 +19,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
__version__ = "2025.6.0.dev0"
|
||||
__version__ = "2025.5.0.dev0"
|
||||
|
||||
@@ -182,13 +182,7 @@ class NamePartsWidget(forms.MultiWidget):
|
||||
if self.field.required:
|
||||
these_attrs['required'] = 'required'
|
||||
these_attrs.pop('data-no-required-attr', None)
|
||||
|
||||
autofill_section = self.attrs.get('autocomplete', '')
|
||||
autofill_by_name_scheme = self.autofill_map.get(self.scheme['fields'][i][0], 'off')
|
||||
if autofill_by_name_scheme == "off" or autofill_section.strip() == "off":
|
||||
these_attrs['autocomplete'] = "off"
|
||||
else:
|
||||
these_attrs['autocomplete'] = (autofill_section + ' ' + autofill_by_name_scheme).strip()
|
||||
these_attrs['autocomplete'] = (self.attrs.get('autocomplete', '') + ' ' + self.autofill_map.get(self.scheme['fields'][i][0], 'off')).strip()
|
||||
these_attrs['data-size'] = self.scheme['fields'][i][2]
|
||||
if len(self.widgets) > 1:
|
||||
these_attrs['aria-label'] = self.scheme['fields'][i][1]
|
||||
@@ -994,11 +988,7 @@ class BaseQuestionsForm(forms.Form):
|
||||
|
||||
for k, v in self.fields.items():
|
||||
if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts':
|
||||
autocomplete = v.widget.attrs.get('autocomplete', '')
|
||||
if autocomplete.strip() == "off":
|
||||
v.widget.attrs['autocomplete'] = 'off'
|
||||
else:
|
||||
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + autocomplete
|
||||
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + v.widget.attrs.get('autocomplete', '')
|
||||
|
||||
def clean(self):
|
||||
from pretix.base.addressvalidation import \
|
||||
@@ -1212,11 +1202,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
||||
|
||||
for k, v in self.fields.items():
|
||||
if v.widget.attrs.get('autocomplete') or k == 'name_parts':
|
||||
autocomplete = v.widget.attrs.get('autocomplete', '')
|
||||
if autocomplete.strip() == "off":
|
||||
v.widget.attrs['autocomplete'] = 'off'
|
||||
else:
|
||||
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + autocomplete
|
||||
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + v.widget.attrs.get('autocomplete', '')
|
||||
|
||||
def clean(self):
|
||||
from pretix.base.addressvalidation import \
|
||||
|
||||
@@ -43,6 +43,7 @@ from zoneinfo import ZoneInfo
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.core.exceptions import ImproperlyConfigured, ValidationError
|
||||
from django.db import transaction
|
||||
from django.dispatch import receiver
|
||||
@@ -92,73 +93,15 @@ class PaymentProviderForm(Form):
|
||||
cleaned_data = super().clean()
|
||||
for k, v in self.fields.items():
|
||||
val = cleaned_data.get(k)
|
||||
if hasattr(v, '_required') and v._required and not val:
|
||||
if v._required and not val:
|
||||
self.add_error(k, _('This field is required.'))
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class GiftCardPaymentForm(PaymentProviderForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.event = kwargs.pop('event')
|
||||
self.testmode = kwargs.pop('testmode')
|
||||
self.positions = kwargs.pop('positions')
|
||||
self.used_cards = kwargs.pop('used_cards')
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
if "code" not in cleaned_data:
|
||||
return cleaned_data
|
||||
|
||||
code = cleaned_data["code"].strip()
|
||||
msg = ""
|
||||
for p in self.positions:
|
||||
if p.item.issue_giftcard:
|
||||
msg = _("You cannot pay with gift cards when buying a gift card.")
|
||||
self.add_error('code', msg)
|
||||
return cleaned_data
|
||||
try:
|
||||
event = self.event
|
||||
gc = event.organizer.accepted_gift_cards.get(
|
||||
secret=code
|
||||
)
|
||||
if gc.currency != event.currency:
|
||||
msg = _("This gift card does not support this currency.")
|
||||
elif gc.testmode and not self.testmode:
|
||||
msg = _("This gift card can only be used in test mode.")
|
||||
elif not gc.testmode and self.testmode:
|
||||
msg = _("Only test gift cards can be used in test mode.")
|
||||
elif gc.expires and gc.expires < time_machine_now():
|
||||
msg = _("This gift card is no longer valid.")
|
||||
elif gc.value <= Decimal("0.00"):
|
||||
msg = _("All credit on this gift card has been used.")
|
||||
|
||||
if msg:
|
||||
self.add_error('code', msg)
|
||||
return cleaned_data
|
||||
|
||||
if gc.pk in self.used_cards:
|
||||
self.add_error('code', _("This gift card is already used for your payment."))
|
||||
return cleaned_data
|
||||
except GiftCard.DoesNotExist:
|
||||
if event.vouchers.filter(code__iexact=code).exists():
|
||||
msg = _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
|
||||
"the product selection.")
|
||||
self.add_error('code', msg)
|
||||
else:
|
||||
msg = _("This gift card is not known.")
|
||||
self.add_error('code', msg)
|
||||
except GiftCard.MultipleObjectsReturned:
|
||||
msg = _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event.")
|
||||
self.add_error('code', msg)
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class BasePaymentProvider:
|
||||
"""
|
||||
This is the base class for all payment providers.
|
||||
"""
|
||||
payment_form_template_name = 'pretixpresale/event/checkout_payment_form_default.html'
|
||||
|
||||
def __init__(self, event: Event):
|
||||
self.event = event
|
||||
@@ -751,7 +694,7 @@ class BasePaymentProvider:
|
||||
:param order: Only set when this is a change to a new payment method for an existing order.
|
||||
"""
|
||||
form = self.payment_form(request)
|
||||
template = get_template(self.payment_form_template_name)
|
||||
template = get_template('pretixpresale/event/checkout_payment_form_default.html')
|
||||
ctx = {'request': request, 'form': form}
|
||||
return template.render(ctx)
|
||||
|
||||
@@ -1375,49 +1318,6 @@ class GiftCardPayment(BasePaymentProvider):
|
||||
multi_use_supported = True
|
||||
execute_payment_needs_user = False
|
||||
verbose_name = _("Gift card")
|
||||
payment_form_class = GiftCardPaymentForm
|
||||
payment_form_template_name = 'pretixcontrol/giftcards/checkout.html'
|
||||
|
||||
def payment_form(self, request: HttpRequest) -> Form:
|
||||
# Unfortunately, in payment_form we do not know if we're in checkout
|
||||
# or in an existing order. But we need to do the validation logic in the
|
||||
# form to get the error messages in the right places for accessbility :-(
|
||||
if 'checkout' in request.resolver_match.url_name:
|
||||
cs = cart_session(request)
|
||||
used_cards = [
|
||||
p.get('info_data', {}).get('gift_card')
|
||||
for p in cs.get('payments', [])
|
||||
if p.get('info_data', {}).get('gift_card')
|
||||
]
|
||||
positions = get_cart(request)
|
||||
testmode = self.event.testmode
|
||||
else:
|
||||
used_cards = []
|
||||
order = self.event.orders.get(code=request.resolver_match.kwargs["order"])
|
||||
positions = order.positions.all()
|
||||
testmode = order.testmode
|
||||
|
||||
form = self.payment_form_class(
|
||||
event=self.event,
|
||||
used_cards=used_cards,
|
||||
positions=positions,
|
||||
testmode=testmode,
|
||||
data=(request.POST if request.method == 'POST' and request.POST.get("payment") == self.identifier else None),
|
||||
prefix='payment_%s' % self.identifier,
|
||||
initial={
|
||||
k.replace('payment_%s_' % self.identifier, ''): v
|
||||
for k, v in request.session.items()
|
||||
if k.startswith('payment_%s_' % self.identifier)
|
||||
}
|
||||
)
|
||||
form.fields = self.payment_form_fields
|
||||
|
||||
for k, v in form.fields.items():
|
||||
v._required = v.required
|
||||
v.required = False
|
||||
v.widget.is_required = False
|
||||
|
||||
return form
|
||||
|
||||
@property
|
||||
def public_name(self) -> str:
|
||||
@@ -1450,19 +1350,6 @@ class GiftCardPayment(BasePaymentProvider):
|
||||
f.move_to_end("_enabled", last=False)
|
||||
return f
|
||||
|
||||
@property
|
||||
def payment_form_fields(self):
|
||||
fields = [
|
||||
(
|
||||
"code",
|
||||
forms.CharField(
|
||||
label=_("Gift card code"),
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
return OrderedDict(fields)
|
||||
|
||||
@property
|
||||
def test_mode_message(self) -> str:
|
||||
return _("In test mode, only test cards will work.")
|
||||
@@ -1473,6 +1360,11 @@ class GiftCardPayment(BasePaymentProvider):
|
||||
def order_change_allowed(self, order: Order) -> bool:
|
||||
return super().order_change_allowed(order) and self.event.organizer.has_gift_cards
|
||||
|
||||
def payment_form_render(self, request: HttpRequest, total: Decimal) -> str:
|
||||
return get_template('pretixcontrol/giftcards/checkout.html').render({
|
||||
'request': request,
|
||||
})
|
||||
|
||||
def checkout_confirm_render(self, request, order=None, info_data=None) -> str:
|
||||
return get_template('pretixcontrol/giftcards/checkout_confirm.html').render({
|
||||
'info_data': info_data,
|
||||
@@ -1540,6 +1432,21 @@ class GiftCardPayment(BasePaymentProvider):
|
||||
def _add_giftcard_to_cart(self, cs, gc):
|
||||
from pretix.base.services.cart import add_payment_to_cart_session
|
||||
|
||||
if gc.currency != self.event.currency:
|
||||
raise ValidationError(_("This gift card does not support this currency."))
|
||||
if gc.testmode and not self.event.testmode:
|
||||
raise ValidationError(_("This gift card can only be used in test mode."))
|
||||
if not gc.testmode and self.event.testmode:
|
||||
raise ValidationError(_("Only test gift cards can be used in test mode."))
|
||||
if gc.expires and gc.expires < time_machine_now():
|
||||
raise ValidationError(_("This gift card is no longer valid."))
|
||||
if gc.value <= Decimal("0.00"):
|
||||
raise ValidationError(_("All credit on this gift card has been used."))
|
||||
|
||||
for p in cs.get('payments', []):
|
||||
if p['provider'] == self.identifier and p['info_data']['gift_card'] == gc.pk:
|
||||
raise ValidationError(_("This gift card is already used for your payment."))
|
||||
|
||||
add_payment_to_cart_session(
|
||||
cs,
|
||||
self,
|
||||
@@ -1551,32 +1458,77 @@ class GiftCardPayment(BasePaymentProvider):
|
||||
)
|
||||
|
||||
def checkout_prepare(self, request: HttpRequest, cart: Dict[str, Any]) -> Union[bool, str, None]:
|
||||
form = self.payment_form(request)
|
||||
if not form.is_valid():
|
||||
return False
|
||||
for p in get_cart(request):
|
||||
if p.item.issue_giftcard:
|
||||
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
|
||||
return
|
||||
|
||||
gc = self.event.organizer.accepted_gift_cards.get(
|
||||
secret=form.cleaned_data["code"]
|
||||
)
|
||||
cs = cart_session(request)
|
||||
self._add_giftcard_to_cart(cs, gc)
|
||||
return True
|
||||
if not request.POST.get("giftcard"):
|
||||
messages.error(request, _("Please enter the code of your gift card."))
|
||||
return
|
||||
|
||||
try:
|
||||
gc = self.event.organizer.accepted_gift_cards.get(
|
||||
secret=request.POST.get("giftcard").strip()
|
||||
)
|
||||
cs = cart_session(request)
|
||||
try:
|
||||
self._add_giftcard_to_cart(cs, gc)
|
||||
return True
|
||||
except ValidationError as e:
|
||||
messages.error(request, str(e.message))
|
||||
return
|
||||
except GiftCard.DoesNotExist:
|
||||
if self.event.vouchers.filter(code__iexact=request.POST.get("giftcard")).exists():
|
||||
messages.warning(request, _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
|
||||
"the product selection."))
|
||||
else:
|
||||
messages.error(request, _("This gift card is not known."))
|
||||
except GiftCard.MultipleObjectsReturned:
|
||||
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
||||
|
||||
def payment_prepare(self, request: HttpRequest, payment: OrderPayment) -> Union[bool, str, None]:
|
||||
form = self.payment_form(request)
|
||||
if not form.is_valid():
|
||||
return False
|
||||
gc = self.event.organizer.accepted_gift_cards.get(
|
||||
secret=form.cleaned_data["code"]
|
||||
)
|
||||
payment.info_data = {
|
||||
'gift_card': gc.pk,
|
||||
'gift_card_secret': gc.secret,
|
||||
'retry': True
|
||||
}
|
||||
payment.amount = min(payment.amount, gc.value)
|
||||
payment.save()
|
||||
return True
|
||||
for p in payment.order.positions.all():
|
||||
if p.item.issue_giftcard:
|
||||
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
|
||||
return
|
||||
|
||||
try:
|
||||
gc = self.event.organizer.accepted_gift_cards.get(
|
||||
secret=request.POST.get("giftcard").strip()
|
||||
)
|
||||
if gc.currency != self.event.currency:
|
||||
messages.error(request, _("This gift card does not support this currency."))
|
||||
return
|
||||
if gc.testmode and not payment.order.testmode:
|
||||
messages.error(request, _("This gift card can only be used in test mode."))
|
||||
return
|
||||
if not gc.testmode and payment.order.testmode:
|
||||
messages.error(request, _("Only test gift cards can be used in test mode."))
|
||||
return
|
||||
if gc.expires and gc.expires < time_machine_now():
|
||||
messages.error(request, _("This gift card is no longer valid."))
|
||||
return
|
||||
if gc.value <= Decimal("0.00"):
|
||||
messages.error(request, _("All credit on this gift card has been used."))
|
||||
return
|
||||
payment.info_data = {
|
||||
'gift_card': gc.pk,
|
||||
'gift_card_secret': gc.secret,
|
||||
'retry': True
|
||||
}
|
||||
payment.amount = min(payment.amount, gc.value)
|
||||
payment.save()
|
||||
|
||||
return True
|
||||
except GiftCard.DoesNotExist:
|
||||
if self.event.vouchers.filter(code__iexact=request.POST.get("giftcard").strip()).exists():
|
||||
messages.warning(request, _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
|
||||
"the product selection."))
|
||||
else:
|
||||
messages.error(request, _("This gift card is not known."))
|
||||
except GiftCard.MultipleObjectsReturned:
|
||||
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
||||
|
||||
def execute_payment(self, request: HttpRequest, payment: OrderPayment, is_early_special_case=False) -> str:
|
||||
for p in payment.order.positions.all():
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{% load i18n %}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14"
|
||||
class="{{ cls }}" role="img" aria-label="{% trans "Seat" %}">
|
||||
class="{{ cls }}">
|
||||
<path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
|
||||
<path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 636 B |
@@ -1,7 +1,5 @@
|
||||
{% load i18n %}
|
||||
{% load bootstrap3 %}
|
||||
{% load rich_text %}
|
||||
|
||||
{{ request.event.settings.payment_giftcard_public_description|rich_text }}
|
||||
|
||||
{% bootstrap_form form layout='checkout' %}
|
||||
<input name="giftcard" class="form-control" placeholder="{% trans "Gift card code" %}">
|
||||
|
||||
@@ -5,7 +5,7 @@ msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
||||
"PO-Revision-Date: 2025-05-27 10:40+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
|
||||
">\n"
|
||||
@@ -10699,17 +10699,23 @@ msgstr ""
|
||||
"sammeln."
|
||||
|
||||
#: pretix/base/settings.py:2071
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information URL"
|
||||
msgstr "URL zu Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2072
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "This should point e.g. to a part of your website that explains how you "
|
||||
#| "use data gathered in your ticket shop."
|
||||
msgid ""
|
||||
"This should point e.g. to a part of your website that explains how your "
|
||||
"ticket shop complies with accessibility regulation."
|
||||
msgstr ""
|
||||
"Dies sollte bspw. ein Link zu einem Teil Ihrer Website sein, auf dem Sie "
|
||||
"beschreiben, wie Ihr Ticketshop im Einklang mit Richtlinien zur "
|
||||
"Barrierefreiheit steht."
|
||||
"beschreiben, wie Sie persönliche Daten nutzen, die Sie in Ihrem Ticketshop "
|
||||
"sammeln."
|
||||
|
||||
#: pretix/base/settings.py:2079
|
||||
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
||||
@@ -10717,16 +10723,22 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information"
|
||||
msgstr "Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2083
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information title"
|
||||
msgstr "Titel für Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2093
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information text"
|
||||
msgstr "Text für Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2114
|
||||
msgid "Attach ticket files"
|
||||
@@ -23858,8 +23870,10 @@ msgstr ""
|
||||
"Drittanbietern nicht kennen."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
||||
#, fuzzy
|
||||
#| msgid "Availability"
|
||||
msgid "Accessibility"
|
||||
msgstr "Barrierefreiheit"
|
||||
msgstr "Verfügbarkeit"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
||||
msgid ""
|
||||
@@ -23868,19 +23882,12 @@ msgid ""
|
||||
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
||||
"target=\"_blank\">our documentation</a>."
|
||||
msgstr ""
|
||||
"In einigen Regionen, einschließlich der Europäischen Union, sind Sie "
|
||||
"verpflichtet, Informationen über die Barrierefreiheit Ihres Ticketshops zu "
|
||||
"veröffentlichen. Sie finden eine Vorlage in <a href="
|
||||
"\"https://docs.pretix.eu/de/trust/accessibility/\" target=\"_blank\">unserer "
|
||||
"Dokumentation</a>."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
||||
msgid ""
|
||||
"Instead of an URL, you can also configure a text that will be shown within "
|
||||
"pretix. This will be ignored if a URL is configured."
|
||||
msgstr ""
|
||||
"Statt einer URL kannst du auch einen Text eingeben, der von pretix angezeigt "
|
||||
"wird. Dies wird ignoriert, wenn eine URL konfiguriert wurde."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:228
|
||||
msgid "Barcode media"
|
||||
@@ -33392,6 +33399,8 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
#, fuzzy
|
||||
#| msgid "Extend reservation"
|
||||
msgid "Renew reservation"
|
||||
msgstr "Reservierung verlängern"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:08+0000\n"
|
||||
"PO-Revision-Date: 2025-05-27 10:40+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||
"de/>\n"
|
||||
@@ -728,7 +728,7 @@ msgstr "Warenkorb abgelaufen"
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||
msgid "Your cart is about to expire."
|
||||
msgstr "Ihr Warenkorb läuft gleich ab."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||
msgid "The items in your cart are reserved for you for one minute."
|
||||
@@ -739,10 +739,16 @@ msgstr[1] ""
|
||||
"Die Produkte in Ihrem Warenkorb sind noch {num} Minuten für Sie reserviert."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||
#, fuzzy
|
||||
#| msgid "Cart expired"
|
||||
msgid "Your cart has expired."
|
||||
msgstr "Ihr Warenkorb ist abgelaufen."
|
||||
msgstr "Warenkorb abgelaufen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The items in your cart are no longer reserved for you. You can still "
|
||||
#| "complete your order as long as they’re available."
|
||||
msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they're available."
|
||||
@@ -753,11 +759,11 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||
msgid "Do you want to renew the reservation period?"
|
||||
msgstr "Möchten Sie die Reservierung verlängern?"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||
msgid "Renew reservation"
|
||||
msgstr "Reservierung verlängern"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||
@@ -800,12 +806,12 @@ msgstr "Menge erhöhen"
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||
msgctxt "widget"
|
||||
msgid "Filter events by"
|
||||
msgstr "Veranstaltungen filtern nach"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||
msgctxt "widget"
|
||||
msgid "Filter"
|
||||
msgstr "Filtern"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||
@@ -1052,16 +1058,17 @@ msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||
#, fuzzy
|
||||
#| msgctxt "widget"
|
||||
#| msgid "Resume checkout"
|
||||
msgctxt "widget"
|
||||
msgid "Close checkout"
|
||||
msgstr "Kauf schließen"
|
||||
msgstr "Kauf fortsetzen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||
msgctxt "widget"
|
||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||
msgstr ""
|
||||
"Sie können diese Aktion nicht abbrechen. Bitte warten Sie, bis der "
|
||||
"Ladevorgang abgeschlossen ist."
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
||||
"PO-Revision-Date: 2025-05-27 10:40+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
|
||||
"pretix/pretix/de_Informal/>\n"
|
||||
@@ -10685,17 +10685,23 @@ msgstr ""
|
||||
"sammelst."
|
||||
|
||||
#: pretix/base/settings.py:2071
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information URL"
|
||||
msgstr "URL zu Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2072
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "This should point e.g. to a part of your website that explains how you "
|
||||
#| "use data gathered in your ticket shop."
|
||||
msgid ""
|
||||
"This should point e.g. to a part of your website that explains how your "
|
||||
"ticket shop complies with accessibility regulation."
|
||||
msgstr ""
|
||||
"Dies sollte bspw. ein Link zu einem Teil deiner Website sein, auf dem du "
|
||||
"beschreibst, wie dein Ticketshop im Einklang mit Richtlinien zur "
|
||||
"Barrierefreiheit steht."
|
||||
"beschreibst, wie du persönliche Daten nutzt, die du in deinem Ticketshop "
|
||||
"sammelst."
|
||||
|
||||
#: pretix/base/settings.py:2079
|
||||
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
||||
@@ -10703,16 +10709,22 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information"
|
||||
msgstr "Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2083
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information title"
|
||||
msgstr "Titel für Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2093
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information text"
|
||||
msgstr "Text für Informationen zur Barrierefreiheit"
|
||||
msgstr "Konto-Informationen"
|
||||
|
||||
#: pretix/base/settings.py:2114
|
||||
msgid "Attach ticket files"
|
||||
@@ -23822,8 +23834,10 @@ msgstr ""
|
||||
"eingesetzten Drittanbietern nicht kennen."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
||||
#, fuzzy
|
||||
#| msgid "Availability"
|
||||
msgid "Accessibility"
|
||||
msgstr "Barrierefreiheit"
|
||||
msgstr "Verfügbarkeit"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
||||
msgid ""
|
||||
@@ -23832,19 +23846,12 @@ msgid ""
|
||||
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
||||
"target=\"_blank\">our documentation</a>."
|
||||
msgstr ""
|
||||
"In einigen Regionen, einschließlich der Europäischen Union, bist du "
|
||||
"verpflichtet, Informationen über die Barrierefreiheit Ihres Ticketshops zu "
|
||||
"veröffentlichen. Du findest eine Vorlage in <a href="
|
||||
"\"https://docs.pretix.eu/de/trust/accessibility/\" target=\"_blank\">unserer "
|
||||
"Dokumentation</a>."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
||||
msgid ""
|
||||
"Instead of an URL, you can also configure a text that will be shown within "
|
||||
"pretix. This will be ignored if a URL is configured."
|
||||
msgstr ""
|
||||
"Statt einer URL kannst du auch einen Text eingeben, der von pretix angezeigt "
|
||||
"wird. Dies wird ignoriert, wenn eine URL konfiguriert wurde."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:228
|
||||
msgid "Barcode media"
|
||||
@@ -33335,6 +33342,8 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
#, fuzzy
|
||||
#| msgid "Extend reservation"
|
||||
msgid "Renew reservation"
|
||||
msgstr "Reservierung verlängern"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:07+0000\n"
|
||||
"PO-Revision-Date: 2025-05-27 10:40+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"
|
||||
@@ -728,7 +728,7 @@ msgstr "Warenkorb abgelaufen"
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||
msgid "Your cart is about to expire."
|
||||
msgstr "Dein Warenkorb läuft gleich ab."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||
msgid "The items in your cart are reserved for you for one minute."
|
||||
@@ -739,10 +739,16 @@ msgstr[1] ""
|
||||
"Die Produkte in deinem Warenkorb sind noch {num} Minuten für dich reserviert."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||
#, fuzzy
|
||||
#| msgid "Cart expired"
|
||||
msgid "Your cart has expired."
|
||||
msgstr "Dein Warenkorb ist abgelaufen."
|
||||
msgstr "Warenkorb abgelaufen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The items in your cart are no longer reserved for you. You can still "
|
||||
#| "complete your order as long as they’re available."
|
||||
msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they're available."
|
||||
@@ -753,11 +759,11 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||
msgid "Do you want to renew the reservation period?"
|
||||
msgstr "Möchtest du die Reservierung verlängern?"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||
msgid "Renew reservation"
|
||||
msgstr "Reservierung verlängern"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||
@@ -800,12 +806,12 @@ msgstr "Menge erhöhen"
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||
msgctxt "widget"
|
||||
msgid "Filter events by"
|
||||
msgstr "Veranstaltungen filtern nach"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||
msgctxt "widget"
|
||||
msgid "Filter"
|
||||
msgstr "Filtern"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||
@@ -1052,16 +1058,17 @@ msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||
#, fuzzy
|
||||
#| msgctxt "widget"
|
||||
#| msgid "Resume checkout"
|
||||
msgctxt "widget"
|
||||
msgid "Close checkout"
|
||||
msgstr "Kauf schließen"
|
||||
msgstr "Kauf fortsetzen"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||
msgctxt "widget"
|
||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||
msgstr ""
|
||||
"Du kannst diese Aktion nicht abbrechen. Bitte warte, bis der Ladevorgang "
|
||||
"abgeschlossen ist."
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:15+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/"
|
||||
"es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -4379,15 +4379,13 @@ msgstr "Opcional. Ningún producto será vendido antes de esta fecha."
|
||||
|
||||
#: pretix/base/models/event.py:621
|
||||
msgid "This event is remote or partially remote."
|
||||
msgstr "Este evento es remoto o parcialmente remoto."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/base/models/event.py:622
|
||||
msgid ""
|
||||
"This will be used to let users know if the event is in a different timezone "
|
||||
"and let’s us calculate users’ local times."
|
||||
msgstr ""
|
||||
"Esto se utilizará para que los usuarios sepan si el evento se celebra en una "
|
||||
"zona horaria diferente y nos permite calcular la hora local de los usuarios."
|
||||
|
||||
#: pretix/base/models/event.py:642 pretix/control/navigation.py:65
|
||||
msgid "Plugins"
|
||||
@@ -10690,16 +10688,22 @@ msgstr ""
|
||||
"cómo utiliza los datos recopilados en su taquilla virtual."
|
||||
|
||||
#: pretix/base/settings.py:2071
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information URL"
|
||||
msgstr "Información sobre accesibilidad URL"
|
||||
msgstr "Información de la cuenta"
|
||||
|
||||
#: pretix/base/settings.py:2072
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "This should point e.g. to a part of your website that explains how you "
|
||||
#| "use data gathered in your ticket shop."
|
||||
msgid ""
|
||||
"This should point e.g. to a part of your website that explains how your "
|
||||
"ticket shop complies with accessibility regulation."
|
||||
msgstr ""
|
||||
"Debe remitir, por ejemplo, a una parte de su sitio web que explique cómo su "
|
||||
"tienda de entradas cumple la normativa sobre accesibilidad."
|
||||
"Esto debería señalar, por ejemplo, a una parte de su sitio web que explica "
|
||||
"cómo utiliza los datos recopilados en su taquilla virtual."
|
||||
|
||||
#: pretix/base/settings.py:2079
|
||||
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
||||
@@ -10707,16 +10711,22 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information"
|
||||
msgstr "Información sobre accesibilidad"
|
||||
msgstr "Información de la cuenta"
|
||||
|
||||
#: pretix/base/settings.py:2083
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information title"
|
||||
msgstr "Título de la información sobre accesibilidad"
|
||||
msgstr "Información de la cuenta"
|
||||
|
||||
#: pretix/base/settings.py:2093
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information text"
|
||||
msgstr "Texto informativo sobre accesibilidad"
|
||||
msgstr "Información de la cuenta"
|
||||
|
||||
#: pretix/base/settings.py:2114
|
||||
msgid "Attach ticket files"
|
||||
@@ -17811,7 +17821,7 @@ msgstr "Funcionamiento en modo de desarrollo"
|
||||
#: pretix/presale/templates/pretixpresale/postmessage.html:27
|
||||
#: pretix/presale/templates/pretixpresale/waiting.html:42
|
||||
msgid "If this takes longer than a few minutes, please contact us."
|
||||
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
|
||||
msgstr "Si esto tarda más de unos minutos, póngase en contacto con nosotros."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4
|
||||
#: pretix/control/templates/pretixcontrol/organizers/devices.html:71
|
||||
@@ -23848,8 +23858,10 @@ msgstr ""
|
||||
"proveedores de pago o de seguimiento."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
||||
#, fuzzy
|
||||
#| msgid "Availability"
|
||||
msgid "Accessibility"
|
||||
msgstr "Accesibilidad"
|
||||
msgstr "Disponibilidad"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
||||
msgid ""
|
||||
@@ -23858,19 +23870,12 @@ msgid ""
|
||||
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
||||
"target=\"_blank\">our documentation</a>."
|
||||
msgstr ""
|
||||
"Algunas jurisdicciones, incluida la Unión Europea, exigen que publique "
|
||||
"información sobre la accesibilidad de su taquilla/tienda de entradas. Puede "
|
||||
"encontrar una plantilla en <a href="
|
||||
"\"https://docs.pretix.eu/trust/accessibility/\" target=\"_blank\">nuestra "
|
||||
"documentación</a>."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
||||
msgid ""
|
||||
"Instead of an URL, you can also configure a text that will be shown within "
|
||||
"pretix. This will be ignored if a URL is configured."
|
||||
msgstr ""
|
||||
"En lugar de una URL, también puede configurar un texto que se mostrará "
|
||||
"dentro de pretix. Esto se ignorará si se configura una URL."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:228
|
||||
msgid "Barcode media"
|
||||
@@ -32403,6 +32408,8 @@ msgstr ""
|
||||
"y contraseña."
|
||||
|
||||
#: pretix/presale/forms/customer.py:74
|
||||
#, fuzzy
|
||||
#| msgid "Please verify that you entered the correct email addess."
|
||||
msgid "Please verify that you entered the correct email address."
|
||||
msgstr ""
|
||||
"Compruebe que ha introducido la dirección de correo electrónico correcta."
|
||||
@@ -33383,8 +33390,10 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
#, fuzzy
|
||||
#| msgid "Event description"
|
||||
msgid "Renew reservation"
|
||||
msgstr "Renovar reserva"
|
||||
msgstr "Descripción del evento"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
||||
msgid "Overview of your ordered products."
|
||||
@@ -34684,8 +34693,10 @@ msgstr ""
|
||||
"Una vez completado el proceso en la nueva ventana, podrás continuar aquí."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:58
|
||||
#, fuzzy
|
||||
#| msgid "Closed"
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
msgstr "Cerrado"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:79
|
||||
msgid "Adjust settings in detail"
|
||||
@@ -34729,6 +34740,8 @@ msgid "Save selection"
|
||||
msgstr "Guarda selección"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:141
|
||||
#, fuzzy
|
||||
#| msgid "You didn’t select any ticket."
|
||||
msgid "You didn't select any ticket."
|
||||
msgstr "No ha seleccionado ninguna entrada."
|
||||
|
||||
|
||||
@@ -8,10 +8,10 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
||||
"PO-Revision-Date: 2025-05-22 08:37+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/"
|
||||
"pretix-js/es/>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||
"js/es/>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -343,7 +343,7 @@ msgstr "No"
|
||||
|
||||
#: pretix/static/lightbox/js/lightbox.js:96
|
||||
msgid "close"
|
||||
msgstr "cerrar"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: pretix/static/pretixbase/js/addressform.js:59
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:513
|
||||
@@ -416,7 +416,7 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||
msgid "If this takes longer than a few minutes, please contact us."
|
||||
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||
msgid "Close message"
|
||||
@@ -725,7 +725,7 @@ msgstr "El carrito de compra ha expirado"
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||
msgid "Your cart is about to expire."
|
||||
msgstr "Su carrito está a punto de caducar."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||
msgid "The items in your cart are reserved for you for one minute."
|
||||
@@ -737,10 +737,16 @@ msgstr[1] ""
|
||||
"minutos."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||
#, fuzzy
|
||||
#| msgid "Cart expired"
|
||||
msgid "Your cart has expired."
|
||||
msgstr "Su cesta ha caducado."
|
||||
msgstr "El carrito de compra ha expirado"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The items in your cart are no longer reserved for you. You can still "
|
||||
#| "complete your order as long as they’re available."
|
||||
msgid ""
|
||||
"The items in your cart are no longer reserved for you. You can still "
|
||||
"complete your order as long as they're available."
|
||||
@@ -750,11 +756,11 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||
msgid "Do you want to renew the reservation period?"
|
||||
msgstr "¿Desea renovar el periodo de reserva?"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||
msgid "Renew reservation"
|
||||
msgstr "Renovar reserva"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||
@@ -797,12 +803,12 @@ msgstr "Incrementar cantidad"
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||
msgctxt "widget"
|
||||
msgid "Filter events by"
|
||||
msgstr "Filtrar eventos por"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||
msgctxt "widget"
|
||||
msgid "Filter"
|
||||
msgstr "Filtrar"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||
@@ -1050,14 +1056,17 @@ msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||
#, fuzzy
|
||||
#| msgctxt "widget"
|
||||
#| msgid "Resume checkout"
|
||||
msgctxt "widget"
|
||||
msgid "Close checkout"
|
||||
msgstr "Cerrar caja"
|
||||
msgstr "Continuar pago"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||
msgctxt "widget"
|
||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||
msgstr "No puede cancelar esta operación. Espere a que finalice la carga."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||
|
||||
@@ -4,7 +4,7 @@ msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:06+0000\n"
|
||||
"PO-Revision-Date: 2025-04-29 18:00+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
|
||||
">\n"
|
||||
@@ -4396,16 +4396,13 @@ msgstr "Facultatif. Aucun produit ne sera vendu avant cette date."
|
||||
|
||||
#: pretix/base/models/event.py:621
|
||||
msgid "This event is remote or partially remote."
|
||||
msgstr "Cet événement est éloigné ou partiellement éloigné."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/base/models/event.py:622
|
||||
msgid ""
|
||||
"This will be used to let users know if the event is in a different timezone "
|
||||
"and let’s us calculate users’ local times."
|
||||
msgstr ""
|
||||
"Elle sera utilisée pour indiquer aux utilisateurs si l'événement se déroule "
|
||||
"dans un autre fuseau horaire et nous permettra de calculer l'heure locale "
|
||||
"des utilisateurs."
|
||||
|
||||
#: pretix/base/models/event.py:642 pretix/control/navigation.py:65
|
||||
msgid "Plugins"
|
||||
@@ -10788,17 +10785,22 @@ msgstr ""
|
||||
"explique comment vous utilisez les données collectées dans votre billetterie."
|
||||
|
||||
#: pretix/base/settings.py:2071
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information URL"
|
||||
msgstr "Informations d'accessibilité URL"
|
||||
msgstr "Informations sur le compte"
|
||||
|
||||
#: pretix/base/settings.py:2072
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "This should point e.g. to a part of your website that explains how you "
|
||||
#| "use data gathered in your ticket shop."
|
||||
msgid ""
|
||||
"This should point e.g. to a part of your website that explains how your "
|
||||
"ticket shop complies with accessibility regulation."
|
||||
msgstr ""
|
||||
"Elle doit renvoyer, par exemple, à une partie de votre site web qui explique "
|
||||
"comment votre billetterie est conforme à la réglementation en matière "
|
||||
"d'accessibilité."
|
||||
"Cela devrait pointer par exemple vers une partie de votre site Web qui "
|
||||
"explique comment vous utilisez les données collectées dans votre billetterie."
|
||||
|
||||
#: pretix/base/settings.py:2079
|
||||
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
||||
@@ -10806,16 +10808,22 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information"
|
||||
msgstr "Informations sur l'accessibilité"
|
||||
msgstr "Informations sur le compte"
|
||||
|
||||
#: pretix/base/settings.py:2083
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information title"
|
||||
msgstr "Titre de l'information sur l'accessibilité"
|
||||
msgstr "Informations sur le compte"
|
||||
|
||||
#: pretix/base/settings.py:2093
|
||||
#, fuzzy
|
||||
#| msgid "Account information"
|
||||
msgid "Accessibility information text"
|
||||
msgstr "Texte d'information sur l'accessibilité"
|
||||
msgstr "Informations sur le compte"
|
||||
|
||||
#: pretix/base/settings.py:2114
|
||||
msgid "Attach ticket files"
|
||||
@@ -24033,8 +24041,10 @@ msgstr ""
|
||||
"tiers tels que les fournisseurs de paiement ou de suivi."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
||||
#, fuzzy
|
||||
#| msgid "Availability"
|
||||
msgid "Accessibility"
|
||||
msgstr "Accessibilité"
|
||||
msgstr "Disponibilité"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
||||
msgid ""
|
||||
@@ -24043,19 +24053,12 @@ msgid ""
|
||||
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
||||
"target=\"_blank\">our documentation</a>."
|
||||
msgstr ""
|
||||
"Certaines juridictions, y compris l'Union européenne, vous obligent à "
|
||||
"publier des informations sur l'accessibilité de votre billetterie. Vous "
|
||||
"pouvez trouver un modèle dans <a href="
|
||||
"\"https://docs.pretix.eu/trust/accessibility/\" target=\"_blank\">notre "
|
||||
"documentation</a>."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
||||
msgid ""
|
||||
"Instead of an URL, you can also configure a text that will be shown within "
|
||||
"pretix. This will be ignored if a URL is configured."
|
||||
msgstr ""
|
||||
"Au lieu d'une URL, vous pouvez également configurer un texte qui sera "
|
||||
"affiché dans pretix. Ce texte sera ignoré si une URL est configurée."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:228
|
||||
msgid "Barcode media"
|
||||
@@ -32664,8 +32667,10 @@ msgstr ""
|
||||
"passe."
|
||||
|
||||
#: pretix/presale/forms/customer.py:74
|
||||
#, fuzzy
|
||||
#| msgid "Please verify that you entered the correct email addess."
|
||||
msgid "Please verify that you entered the correct email address."
|
||||
msgstr "Veuillez vérifier que vous avez saisi l'adresse électronique correcte."
|
||||
msgstr "Veuillez vérifier que vous avez saisi une adresse e-mail conforme."
|
||||
|
||||
#: pretix/presale/forms/customer.py:75
|
||||
msgid "Please enter the correct password."
|
||||
@@ -33656,8 +33661,10 @@ msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||
#, fuzzy
|
||||
#| msgid "Event description"
|
||||
msgid "Renew reservation"
|
||||
msgstr "Renouveler la réservation"
|
||||
msgstr "Description de l’événement"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
||||
msgid "Overview of your ordered products."
|
||||
@@ -34995,8 +35002,10 @@ msgstr ""
|
||||
"continuer ici."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:58
|
||||
#, fuzzy
|
||||
#| msgid "Closed"
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
msgstr "Fermé"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:79
|
||||
msgid "Adjust settings in detail"
|
||||
@@ -35040,6 +35049,8 @@ msgid "Save selection"
|
||||
msgstr "Enregistrer la sélection"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:141
|
||||
#, fuzzy
|
||||
#| msgid "You didn’t select any ticket."
|
||||
msgid "You didn't select any ticket."
|
||||
msgstr "Vous n'avez sélectionné aucun billet."
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: French\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||
"PO-Revision-Date: 2025-05-30 11:06+0000\n"
|
||||
"PO-Revision-Date: 2025-05-22 08:37+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||
"fr/>\n"
|
||||
@@ -417,7 +417,7 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||
msgid "If this takes longer than a few minutes, please contact us."
|
||||
msgstr "Si cela prend plus de quelques minutes, veuillez nous contacter."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||
msgid "Close message"
|
||||
@@ -634,7 +634,8 @@ msgstr "Erreur inconnue."
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/main.js:292
|
||||
msgid "Your color has great contrast and will provide excellent accessibility."
|
||||
msgstr "Votre choix de couleur a un bon contraste et il est très facile à lire."
|
||||
msgstr ""
|
||||
"Votre choix de couleur a un bon contraste et il est très facile à lire !"
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
||||
msgid ""
|
||||
@@ -642,7 +643,7 @@ msgid ""
|
||||
"requirements."
|
||||
msgstr ""
|
||||
"Votre choix de couleur est assez bon pour la lecture et offre un bon "
|
||||
"contraste."
|
||||
"contraste !"
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
||||
msgid ""
|
||||
@@ -726,7 +727,7 @@ msgstr "Panier expiré"
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||
msgid "Your cart is about to expire."
|
||||
msgstr "Votre panier est sur le point d'expirer."
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||
msgid "The items in your cart are reserved for you for one minute."
|
||||
@@ -735,24 +736,30 @@ msgstr[0] "Les articles de votre panier sont réservés pour une minute."
|
||||
msgstr[1] "Les articles de votre panier sont réservés pendant {num} minutes."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||
#, fuzzy
|
||||
#| msgid "Cart expired"
|
||||
msgid "Your cart has expired."
|
||||
msgstr "Votre panier a expiré."
|
||||
msgstr "Panier expiré"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The items in your cart are no longer reserved for you. You can still "
|
||||
#| "complete your order as long as they’re available."
|
||||
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 ""
|
||||
"Les articles de votre panier ne vous sont plus réservés. Vous pouvez encore "
|
||||
"compléter votre commande tant qu'ils sont disponibles."
|
||||
"Les articles de votre panier ne vous sont plus réservés. Vous pouvez "
|
||||
"toujours compléter votre commande tant qu'ils sont disponibles."
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||
msgid "Do you want to renew the reservation period?"
|
||||
msgstr "Souhaitez-vous renouveler la période de réservation ?"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||
msgid "Renew reservation"
|
||||
msgstr "Renouveler la réservation"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||
@@ -796,12 +803,12 @@ msgstr "Augmenter la quantité"
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||
msgctxt "widget"
|
||||
msgid "Filter events by"
|
||||
msgstr "Filtrer les événements par"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||
msgctxt "widget"
|
||||
msgid "Filter"
|
||||
msgstr "Filtrer"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||
@@ -1049,16 +1056,17 @@ msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||
#, fuzzy
|
||||
#| msgctxt "widget"
|
||||
#| msgid "Resume checkout"
|
||||
msgctxt "widget"
|
||||
msgid "Close checkout"
|
||||
msgstr "Fermer la caisse"
|
||||
msgstr "Finaliser ma commande"
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||
msgctxt "widget"
|
||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas annuler cette opération. Veuillez attendre la fin du "
|
||||
"chargement."
|
||||
|
||||
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||
|
||||
@@ -16,17 +16,16 @@
|
||||
{% for p in current_payments %}
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col-md-7 col-sm-6 col-xs-8">
|
||||
<strong id="payment-label-{{ forloop.counter }}">{{ p.provider_name }}</strong>
|
||||
<div class="col-xs-9">
|
||||
{{ p.provider_name }}
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-2 col-xs-4 text-right">
|
||||
<div class="col-xs-2 text-right">
|
||||
{{ p.payment_amount|money:request.event.currency }}
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-4 col-xs-12 text-right">
|
||||
<button name="remove_payment" value="{{ p.id }}" aria-describedby="payment-label-{{ forloop.counter }}"
|
||||
class="btn btn-danger">
|
||||
<span class="fa fa-trash"></span>
|
||||
{% trans "Remove payment" %}
|
||||
<div class="col-xs-1 text-right">
|
||||
<button name="remove_payment" value="{{ p.id }}" title="{% trans "Remove payment" %}"
|
||||
class="btn btn-link btn-xs">
|
||||
<span class="fa fa-trash text-danger"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,11 +34,11 @@
|
||||
{% if remaining %}
|
||||
<div class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col-md-7 col-sm-6 col-xs-8">
|
||||
<div class="col-xs-9">
|
||||
<strong>{% trans "Remaining balance" %}</strong><br>
|
||||
<span class="text-muted">{% trans "Please select a payment method below." %}</span>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-2 col-xs-4 text-right">
|
||||
<div class="col-xs-2 text-right">
|
||||
<strong>
|
||||
{{ remaining|money:request.event.currency }}
|
||||
</strong>
|
||||
|
||||
@@ -70,7 +70,7 @@ from pretix.helpers.http import redirect_to_url
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.views import (
|
||||
CartMixin, EventViewMixin, allow_cors_if_namespaced,
|
||||
allow_frame_if_namespaced, get_cart, iframe_entry_view_wrapper,
|
||||
allow_frame_if_namespaced, iframe_entry_view_wrapper,
|
||||
)
|
||||
from pretix.presale.views.event import (
|
||||
get_grouped_items, item_group_by_category,
|
||||
@@ -441,7 +441,7 @@ class CartApplyVoucher(EventViewMixin, CartActionMixin, AsyncAction, View):
|
||||
return _('We applied the voucher to as many products in your cart as we could.')
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
from pretix.base.payment import GiftCardPayment, GiftCardPaymentForm
|
||||
from pretix.base.payment import GiftCardPayment
|
||||
|
||||
if 'voucher' in request.POST:
|
||||
code = request.POST.get('voucher').strip()
|
||||
@@ -454,22 +454,6 @@ class CartApplyVoucher(EventViewMixin, CartActionMixin, AsyncAction, View):
|
||||
raise ValidationError(error_messages['voucher_invalid'])
|
||||
else:
|
||||
cs = cart_session(request)
|
||||
used_cards = [
|
||||
p.get('info_data', {}).get('gift_card')
|
||||
for p in cs.get('payments', [])
|
||||
if p.get('info_data', {}).get('gift_card')
|
||||
]
|
||||
form = GiftCardPaymentForm(
|
||||
event=request.event,
|
||||
used_cards=used_cards,
|
||||
positions=get_cart(request),
|
||||
testmode=request.event.testmode,
|
||||
data={'code': code},
|
||||
)
|
||||
form.fields = gcp.payment_form_fields
|
||||
if not form.is_valid():
|
||||
# raise first validation-error in form
|
||||
raise next(iter(form.errors.as_data().values()))[0]
|
||||
gcp._add_giftcard_to_cart(cs, gc)
|
||||
messages.success(
|
||||
request,
|
||||
@@ -710,7 +694,7 @@ class RedeemView(NoSearchIndexViewMixin, EventViewMixin, CartMixin, TemplateView
|
||||
return context
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
from pretix.base.payment import GiftCardPayment, GiftCardPaymentForm
|
||||
from pretix.base.payment import GiftCardPayment
|
||||
|
||||
err = None
|
||||
v = request.GET.get('voucher')
|
||||
@@ -735,28 +719,12 @@ class RedeemView(NoSearchIndexViewMixin, EventViewMixin, CartMixin, TemplateView
|
||||
err = error_messages['voucher_redeemed_cart'] % self.request.event.settings.reservation_time
|
||||
except Voucher.DoesNotExist:
|
||||
try:
|
||||
gc = request.event.organizer.accepted_gift_cards.get(secret=v)
|
||||
gcp = GiftCardPayment(request.event)
|
||||
if not gcp.is_enabled or not gcp.is_allowed(request, Decimal("1.00")):
|
||||
gc = self.request.event.organizer.accepted_gift_cards.get(secret=v.strip())
|
||||
gcp = GiftCardPayment(self.request.event)
|
||||
if not gcp.is_enabled or not gcp.is_allowed(self.request, Decimal("1.00")):
|
||||
err = error_messages['voucher_invalid']
|
||||
else:
|
||||
cs = cart_session(request)
|
||||
used_cards = [
|
||||
p.get('info_data', {}).get('gift_card')
|
||||
for p in cs.get('payments', [])
|
||||
if p.get('info_data', {}).get('gift_card')
|
||||
]
|
||||
form = GiftCardPaymentForm(
|
||||
event=request.event,
|
||||
used_cards=used_cards,
|
||||
positions=get_cart(request),
|
||||
testmode=request.event.testmode,
|
||||
data={'code': v},
|
||||
)
|
||||
form.fields = gcp.payment_form_fields
|
||||
if not form.is_valid():
|
||||
# raise first validation-error in form
|
||||
raise next(iter(form.errors.as_data().values()))[0]
|
||||
gcp._add_giftcard_to_cart(cs, gc)
|
||||
messages.success(
|
||||
request,
|
||||
|
||||
@@ -683,8 +683,6 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
|
||||
ctx['show_fees'] = any(p['fee_diff'] for p in self.provider_forms)
|
||||
if len(self.provider_forms) == 1:
|
||||
ctx['selected'] = self.provider_forms[0]['provider'].identifier
|
||||
elif "payment" in self.request.POST:
|
||||
ctx['selected'] = self.request.POST.get("payment")
|
||||
return ctx
|
||||
|
||||
def get_confirm_url(self, payment):
|
||||
|
||||
@@ -10,12 +10,6 @@ body {
|
||||
padding: 50px 0;
|
||||
}
|
||||
|
||||
*:focus, .btn:focus {
|
||||
outline: 2px solid $link-hover-color;
|
||||
outline-offset: 2px;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.big-icon {
|
||||
font-size: 200px;
|
||||
color: $navbar-inverse-bg;
|
||||
|
||||
@@ -1591,7 +1591,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
self.assertEqual(len(doc.select('input[name="payment"]')), 3)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1636,7 +1636,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
self.assertEqual(len(doc.select('input[name="payment"]')), 3)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1646,7 +1646,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc2.secret
|
||||
'giftcard': gc2.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1677,7 +1677,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
self.assertEqual(len(doc.select('input[name="payment"]')), 3)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1706,7 +1706,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
self.assertEqual(len(doc.select('input[name="payment"]')), 3)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1748,7 +1748,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card is no longer valid.' in response.content.decode()
|
||||
|
||||
@@ -1763,7 +1763,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card does not support this currency.' in response.content.decode()
|
||||
|
||||
@@ -1780,7 +1780,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card is not known.' in response.content.decode()
|
||||
|
||||
@@ -1798,7 +1798,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -1828,7 +1828,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card is not known.' in response.content.decode()
|
||||
|
||||
@@ -1845,7 +1845,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'Only test gift cards can be used in test mode.' in response.content.decode()
|
||||
|
||||
@@ -1860,7 +1860,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card can only be used in test mode.' in response.content.decode()
|
||||
|
||||
@@ -1874,7 +1874,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'All credit on this gift card has been used.' in response.content.decode()
|
||||
|
||||
@@ -1889,11 +1889,11 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'This gift card is already used for your payment.' in response.content.decode()
|
||||
|
||||
@@ -1910,7 +1910,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
)
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
assert 'You cannot pay with gift cards when buying a gift card.' in response.content.decode()
|
||||
|
||||
@@ -1964,7 +1964,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/confirm/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
@@ -2006,7 +2006,7 @@ class CheckoutTestCase(BaseCheckoutTestCase, TimemachineTestMixin, TestCase):
|
||||
|
||||
response = self.client.post('/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug), {
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/checkout/payment/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
|
||||
@@ -673,7 +673,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
assert "gift card" in response.content.decode()
|
||||
response = self.client.post(
|
||||
'/%s/%s/order/%s/%s/cancel/do' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
|
||||
'payment_giftcard-code': 'false'
|
||||
'giftcard': 'false'
|
||||
}, follow=True)
|
||||
self.assertRedirects(response,
|
||||
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code,
|
||||
@@ -1421,7 +1421,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
with scopes_disabled():
|
||||
@@ -1458,7 +1458,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "You cannot pay with gift cards when buying a gift card." in response.content.decode()
|
||||
@@ -1471,7 +1471,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "This gift card does not support this currency." in response.content.decode()
|
||||
@@ -1486,7 +1486,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "Only test gift cards can be used in test mode." in response.content.decode()
|
||||
@@ -1499,7 +1499,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "This gift card can only be used in test mode." in response.content.decode()
|
||||
@@ -1511,7 +1511,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "All credit on this gift card has been used." in response.content.decode()
|
||||
@@ -1526,7 +1526,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
assert "This gift card is not known." in response.content.decode()
|
||||
@@ -1548,7 +1548,7 @@ class OrdersTest(BaseOrdersTest):
|
||||
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
|
||||
{
|
||||
'payment': 'giftcard',
|
||||
'payment_giftcard-code': gc.secret
|
||||
'giftcard': gc.secret
|
||||
}
|
||||
)
|
||||
with scopes_disabled():
|
||||
|
||||
Reference in New Issue
Block a user