Compare commits

...
Author SHA1 Message Date
Raphael Michel 8a3a6a471e draft 2021-02-05 15:31:46 +01:00
Martin GrossandGitHub f0574755a2 Add salutation_given_family to PERSON_NAME_SCHEMES. (#1921) 2021-02-05 13:31:57 +01:00
Raphael Michel 4cfedebf3b Fix scoping issue in tests 2021-02-05 12:53:55 +01:00
Raphael Michel 45376dd757 Fix linter issue 2021-02-04 21:43:04 +01:00
Raphael Michel 0999f41b0c Do not allow modifications after checkin 2021-02-04 21:43:04 +01:00
Raphael Michel 565f77d13b Add imprint and contact mail on organizer level 2021-02-04 17:36:29 +01:00
Raphael Michel 5ae7a350b0 Add signal global_footer_link 2021-02-04 17:32:10 +01:00
Raphael Michel af7d9942f6 Sort payment providers by public name 2021-02-04 17:21:47 +01:00
Raphael Michel 36efb25b98 Invoice address: Always validate that VAT ID is for correct country 2021-02-04 17:21:24 +01:00
Raphael Michel 7a496da945 Widget: Introduce disable-iframe parameter 2021-02-04 10:58:15 +01:00
Raphael Michel 03f1016cc7 Fix syntax error in setup.py 2021-02-04 10:42:41 +01:00
Raphael Michel 4d4d2d5fe7 Fix ill-formed requirement 2021-02-04 10:24:04 +01:00
Raphael Michel 98f48e78a8 Update bleach to 3.3.0 2021-02-04 10:23:18 +01:00
Raphael Michel 512c9f5301 Upgrade bootstrap JS to 3.4.1 2021-02-04 10:20:49 +01:00
Raphael Michel d16c59e86c Update Vue.js from 2.4.0 to 2.6.12 2021-02-04 10:06:51 +01:00
Raphael Michel 177b0505fd Update moment.js from 2.14 to 2.29 2021-02-04 10:06:38 +01:00
Raphael Michel 01f7a70347 ADd some extensibility features to MultiSheetListExporter 2021-02-03 17:29:15 +01:00
Raphael Michel 3b4c99d450 Rich text: Fix issue with <a> without href="" 2021-02-02 15:58:43 +01:00
Raphael Michel 3bb23bb77e Invoice exporter: Add order ID to filename 2021-02-02 15:54:05 +01:00
Raphael Michel 89da0847ca Device security policy: Allow order payments for POS 2021-02-02 15:54:05 +01:00
Martin Gross 07bed72b5e Add information on `subevent`-parameter for pretix-Button 2021-02-01 16:08:16 +01:00
Raphael Michel c103288eec 2021 attempt at disabling autocomplete in date fields
Apparently, we so far disabled "autofill" but not "autocomplete". For
date fields, autocomplete is more relevant. Explanation
https://stackoverflow.com/a/57810447/336784
2021-02-01 10:07:57 +01:00
Raphael Michel 03648b77b1 List of teams: Order alphabetically 2021-02-01 10:07:57 +01:00
Raphael MichelandGitHub 818d75ddd7 Merge pull request #1917 from pretix-translations/weblate-pretix-pretix 2021-01-30 21:02:25 +01:00
Raphael Michelandpretix Translation Platform 20f608caae Translated on translate.pretix.eu (German)
Currently translated at 100.0% (3940 of 3940 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2021-01-30 20:49:41 +01:00
Raphael Michelandpretix Translation Platform 7b3a6d47fc Translated on translate.pretix.eu (German (informal) (de_Informal))
Currently translated at 100.0% (3940 of 3940 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2021-01-30 20:49:26 +01:00
Maarten van den Bergandpretix Translation Platform d586406c79 Translated on translate.pretix.eu (Dutch (informal))
Currently translated at 100.0% (3940 of 3940 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl_Informal/

powered by weblate
2021-01-29 12:23:33 +01:00
Maarten van den Bergandpretix Translation Platform e214c8cb95 Translated on translate.pretix.eu (Dutch)
Currently translated at 100.0% (3940 of 3940 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/

powered by weblate
2021-01-29 12:23:31 +01:00
Raphael Michel 81f2b9db30 Fix typo in docstring 2021-01-29 10:32:35 +01:00
Raphael Michel 04a6ed20b9 Bump to 3.16.0.dev0 2021-01-29 10:14:45 +01:00
43 changed files with 24826 additions and 16513 deletions
+1 -1
View File
@@ -34,7 +34,7 @@ Frontend
--------
.. automodule:: pretix.presale.signals
:members: html_head, html_footer, footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, sass_preamble, sass_postamble, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header
:members: html_head, html_footer, footer_link, global_footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, sass_preamble, sass_postamble, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header
.. automodule:: pretix.presale.signals
+13 -1
View File
@@ -88,6 +88,15 @@ website. If you confident to have a good reason for not using SSL, you can overr
<pretix-widget event="https://pretix.eu/demo/democon/" skip-ssl-check></pretix-widget>
Always open a new tab
---------------------
If you want the checkout process to always open a new tab regardless of screen size, you can pass the ``disable-iframe``
attribute::
<pretix-widget event="https://pretix.eu/demo/democon/" disable-iframe></pretix-widget>
Pre-selecting a voucher
-----------------------
@@ -197,7 +206,10 @@ should be added to the cart. The syntax of this attribute is ``item_ITEMID=1,ite
where ``ITEMID`` are the internal IDs of items to be added and ``VARID`` are the internal IDs of variations of those
items, if the items have variations. If you omit the ``items`` attribute, the general start page will be presented.
Just as the widget, the button supports the optional attributes ``voucher`` and ``skip-ssl-check``.
In case you are using an event-series, you will need to specify the subevent for which the item(s) should be put in the
cart. This can be done by specifying the ``subevent``-attribute.
Just as the widget, the button supports the optional attributes ``voucher``, ``disable-iframe``, and ``skip-ssl-check``.
You can style the button using the ``pretix-button`` CSS class.
+1 -1
View File
@@ -1 +1 @@
__version__ = "3.15.0"
__version__ = "3.16.0.dev0"
+1
View File
@@ -98,6 +98,7 @@ class PretixPosSecurityProfile(AllowListSecurityProfile):
('GET', 'api-v1:order-detail'),
('DELETE', 'api-v1:orderposition-detail'),
('POST', 'api-v1:order-mark_canceled'),
('POST', 'api-v1:orderpayment-list'),
('POST', 'api-v1:orderrefund-list'),
('POST', 'api-v1:orderrefund-done'),
('POST', 'api-v1:cartposition-list'),
+1
View File
@@ -580,6 +580,7 @@ class EventSettingsSerializer(SettingsSerializer):
'locale',
'region',
'last_order_modification_date',
'allow_modifications_after_checkin',
'show_quota_left',
'waiting_list_enabled',
'waiting_list_hours',
+2
View File
@@ -213,6 +213,8 @@ class TeamMemberSerializer(serializers.ModelSerializer):
class OrganizerSettingsSerializer(SettingsSerializer):
default_fields = [
'contact_mail',
'imprint_url',
'organizer_info_text',
'event_list_type',
'event_list_availability',
+7 -1
View File
@@ -242,7 +242,10 @@ class MultiSheetListExporter(ListExporter):
pass
def iterate_sheet(self, form_data, sheet):
raise NotImplementedError() # noqa
if hasattr(self, 'iterate_' + sheet):
yield from getattr(self, 'iterate_' + sheet)(form_data)
else:
raise NotImplementedError() # noqa
def _render_sheet_csv(self, form_data, sheet, output_file=None, **kwargs):
total = 0
@@ -288,6 +291,9 @@ class MultiSheetListExporter(ListExporter):
n_sheets = len(self.sheets)
for i_sheet, (s, l) in enumerate(self.sheets):
ws = wb.create_sheet(str(l))
if hasattr(self, 'prepare_xlsx_sheet_' + s):
getattr(self, 'prepare_xlsx_sheet_' + s)(ws)
total = 0
counter = 0
for i, line in enumerate(self.iterate_sheet(form_data, sheet=s)):
+3 -3
View File
@@ -66,7 +66,7 @@ class InvoiceExporterMixin:
)
def invoices_queryset(self, form_data: dict):
qs = Invoice.objects.filter(event__in=self.events)
qs = Invoice.objects.filter(event__in=self.events).select_related('order')
if form_data.get('payment_provider'):
qs = qs.annotate(
@@ -112,13 +112,13 @@ class InvoiceExporter(InvoiceExporterMixin, BaseExporter):
invoice_pdf_task.apply(args=(i.pk,))
i.refresh_from_db()
i.file.open('rb')
zipf.writestr('{}.pdf'.format(i.number), i.file.read())
zipf.writestr('{}-{}.pdf'.format(i.number, i.order.code), i.file.read())
i.file.close()
except FileNotFoundError:
invoice_pdf_task.apply(args=(i.pk,))
i.refresh_from_db()
i.file.open('rb')
zipf.writestr('{}.pdf'.format(i.number), i.file.read())
zipf.writestr('{}-{}.pdf'.format(i.number, i.order.code), i.file.read())
i.file.close()
counter += 1
if total and counter % max(10, total // 100) == 0:
+4 -2
View File
@@ -848,11 +848,13 @@ class BaseInvoiceAddressForm(forms.ModelForm):
) and len(data.get('name_parts', {})) == 1:
# Do not save the country if it is the only field set -- we don't know the user even checked it!
self.cleaned_data['country'] = ''
if data.get('vat_id') and is_eu_country(data.get('country')) and data.get('vat_id')[:2] != cc_to_vat_prefix(str(data.get('country'))):
raise ValidationError(_('Your VAT ID does not match the selected country.'))
if self.validate_vat_id and self.instance.vat_id_validated and 'vat_id' not in self.changed_data:
pass
elif self.validate_vat_id and data.get('is_business') and is_eu_country(data.get('country')) and data.get('vat_id'):
if data.get('vat_id')[:2] != cc_to_vat_prefix(str(data.get('country'))):
raise ValidationError(_('Your VAT ID does not match the selected country.'))
try:
result = vat_moss.id.validate(data.get('vat_id'))
if result:
+4 -4
View File
@@ -16,7 +16,7 @@ class DatePickerWidget(forms.DateInput):
date_attrs = dict(attrs)
date_attrs.setdefault('class', 'form-control')
date_attrs['class'] += ' datepickerfield'
date_attrs['autocomplete'] = 'date-picker-do-not-autofill'
date_attrs['autocomplete'] = 'off'
def placeholder():
df = date_format or get_format('DATE_INPUT_FORMATS')[0]
@@ -37,7 +37,7 @@ class TimePickerWidget(forms.TimeInput):
time_attrs = dict(attrs)
time_attrs.setdefault('class', 'form-control')
time_attrs['class'] += ' timepickerfield'
time_attrs['autocomplete'] = 'time-picker-do-not-autofill'
time_attrs['autocomplete'] = 'off'
def placeholder():
tf = time_format or get_format('TIME_INPUT_FORMATS')[0]
@@ -111,8 +111,8 @@ class SplitDateTimePickerWidget(forms.SplitDateTimeWidget):
time_attrs.setdefault('autocomplete', 'off')
date_attrs['class'] += ' datepickerfield'
time_attrs['class'] += ' timepickerfield'
date_attrs['autocomplete'] = 'date-picker-do-not-autofill'
time_attrs['autocomplete'] = 'time-picker-do-not-autofill'
date_attrs['autocomplete'] = 'off'
time_attrs['autocomplete'] = 'off'
if min_date:
date_attrs['data-min'] = (
min_date if isinstance(min_date, date) else min_date.astimezone(get_current_timezone()).date()
+15 -4
View File
@@ -2,7 +2,6 @@ import copy
import hashlib
import json
import logging
import os
import string
from collections import Counter
from datetime import datetime, time, timedelta
@@ -666,6 +665,8 @@ class Order(LockModel, LoggedModel):
related to the order. This checks order status and modification deadlines. It also
returns ``False`` if there are no questions that can be answered.
"""
from .checkin import Checkin
if self.status not in (Order.STATUS_PENDING, Order.STATUS_PAID, Order.STATUS_EXPIRED):
return False
@@ -681,10 +682,21 @@ class Order(LockModel, LoggedModel):
if modify_deadline is not None and now() > modify_deadline:
return False
positions = list(
self.positions.all().annotate(
has_checkin=Exists(Checkin.objects.filter(position_id=OuterRef('pk')))
).select_related('item').prefetch_related('item__questions')
)
if not self.event.settings.allow_modifications_after_checkin:
for cp in positions:
if cp.has_checkin:
return False
if self.event.settings.get('invoice_address_asked', as_type=bool):
return True
ask_names = self.event.settings.get('attendee_names_asked', as_type=bool)
for cp in self.positions.all().prefetch_related('item__questions'):
for cp in positions:
if (cp.item.admission and ask_names) or cp.item.questions.all():
return True
@@ -1492,7 +1504,7 @@ class OrderPayment(models.Model):
OrderRefund.REFUND_STATE_CREATED)
).aggregate(s=Sum('amount'))['s'] or Decimal('0.00')
if payment_sum - refund_sum < self.order.total:
logger.info('Confirmed payment {} but payment sum is {} and refund sum is.'.format(
logger.info('Confirmed payment {} but payment sum is {} and refund sum is {}.'.format(
self.full_id, payment_sum, refund_sum
))
return
@@ -2320,7 +2332,6 @@ def cachedticket_name(instance, filename: str) -> str:
no=instance.order_position.positionid,
code=instance.order_position.order.code,
secret=secret,
ext=os.path.splitext(filename)[1]
)
+1 -1
View File
@@ -718,7 +718,7 @@ class BasePaymentProvider:
return a very short version of the payment method. Usually, this should return e.g.
a transaction ID or account identifier, but no information on status, dates, etc.
The default implementation falls back to payment_presa_elrender.
The default implementation falls back to ``payment_presale_render``.
:param order: The order object
"""
+9 -7
View File
@@ -327,7 +327,7 @@ def deny_order(order, comment='', user=None, send_mail: bool=True, auth=None):
def _cancel_order(order, user=None, send_mail: bool=True, api_token=None, device=None, oauth_application=None,
cancellation_fee=None, keep_fees=None):
cancellation_fee=None, keep_fees=None, cancel_invoice=True):
"""
Mark this order as canceled
:param order: The order to change
@@ -351,9 +351,10 @@ def _cancel_order(order, user=None, send_mail: bool=True, api_token=None, device
if not order.cancel_allowed():
raise OrderError(_('You cannot cancel this order.'))
invoices = []
i = order.invoices.filter(is_cancellation=False).last()
if i and not i.refered.exists():
invoices.append(generate_cancellation(i))
if cancel_invoice:
i = order.invoices.filter(is_cancellation=False).last()
if i and not i.refered.exists():
invoices.append(generate_cancellation(i))
for position in order.positions.all():
for gc in position.issued_gift_cards.all():
@@ -403,7 +404,7 @@ def _cancel_order(order, user=None, send_mail: bool=True, api_token=None, device
order.cancellation_date = now()
order.save(update_fields=['status', 'cancellation_date', 'total'])
if i:
if cancel_invoice and i:
invoices.append(generate_invoice(order))
else:
with order.event.lock():
@@ -2152,11 +2153,12 @@ def _try_auto_refund(order, manual_refund=False, allow_partial=False, source=Ord
@app.task(base=ProfiledTask, bind=True, max_retries=5, default_retry_delay=1, throws=(OrderError,))
@scopes_disabled()
def cancel_order(self, order: int, user: int=None, send_mail: bool=True, api_token=None, oauth_application=None,
device=None, cancellation_fee=None, try_auto_refund=False, refund_as_giftcard=False, comment=None):
device=None, cancellation_fee=None, try_auto_refund=False, refund_as_giftcard=False, comment=None,
cancel_invoice=True):
try:
try:
ret = _cancel_order(order, user, send_mail, api_token, device, oauth_application,
cancellation_fee)
cancellation_fee, cancel_invoice=cancel_invoice)
if try_auto_refund:
_try_auto_refund(order, refund_as_giftcard=refund_as_giftcard,
comment=comment)
+25
View File
@@ -1082,6 +1082,15 @@ DEFAULTS = {
help_text=_('If your event series has more than 50 dates in the future, only the month or week calendar can be used.')
),
},
'allow_modifications_after_checkin': {
'default': 'False',
'type': bool,
'form_class': forms.BooleanField,
'serializer_class': serializers.BooleanField,
'form_kwargs': dict(
label=_("Allow customers to modify their information after they checked in."),
)
},
'last_order_modification_date': {
'default': None,
'type': RelativeDateWrapper,
@@ -2367,6 +2376,22 @@ PERSON_NAME_SCHEMES = OrderedDict([
'_scheme': 'full_transcription',
},
}),
('salutation_given_family', {
'fields': (
('salutation', pgettext_lazy('person_name', 'Salutation'), 1),
('given_name', _('Given name'), 2),
('family_name', _('Family name'), 2),
),
'concatenation': lambda d: ' '.join(
str(p) for p in (d.get(key, '') for key in ["given_name", "family_name"]) if p
),
'sample': {
'salutation': pgettext_lazy('person_name_sample', 'Mr'),
'given_name': pgettext_lazy('person_name_sample', 'John'),
'family_name': pgettext_lazy('person_name_sample', 'Doe'),
'_scheme': 'salutation_given_family',
},
}),
('salutation_title_given_family', {
'fields': (
('salutation', pgettext_lazy('person_name', 'Salutation'), 1),
+2 -1
View File
@@ -101,7 +101,8 @@ def truelink_callback(attrs, new=False):
<a href="https://maps.google.com/location/foo">https://maps.google.com</a>
"""
text = re.sub(r'[^a-zA-Z0-9.\-/_]', '', attrs.get('_text')) # clean up link text
href_url = urllib.parse.urlparse(attrs[None, 'href'])
url = attrs.get((None, 'href'), '/')
href_url = urllib.parse.urlparse(url)
if URL_RE.match(text) and href_url.scheme not in ('tel', 'mailto'):
# link text looks like a url
if text.startswith('//'):
+1
View File
@@ -457,6 +457,7 @@ class EventSettingsForm(SettingsForm):
'banner_text_bottom',
'order_email_asked_twice',
'last_order_modification_date',
'allow_modifications_after_checkin',
'checkout_show_copy_answers_button',
'primary_color',
'theme_color_success',
+7
View File
@@ -117,6 +117,11 @@ class CancelForm(ConfirmPaymentForm):
'in your cancellation fee if you want to keep them. Please always enter a gross value, '
'tax will be calculated automatically.'),
)
cancel_invoice = forms.BooleanField(
label=_('Generate cancellation for invoice'),
initial=True,
required=False
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -130,6 +135,8 @@ class CancelForm(ConfirmPaymentForm):
self.fields['cancellation_fee'].max_value = prs
else:
del self.fields['cancellation_fee']
if not self.instance.invoices.exists():
del self.fields['cancel_invoice']
def clean_cancellation_fee(self):
val = self.cleaned_data['cancellation_fee'] or Decimal('0.00')
+2
View File
@@ -214,6 +214,8 @@ class DeviceForm(forms.ModelForm):
class OrganizerSettingsForm(SettingsForm):
auto_fields = [
'contact_mail',
'imprint_url',
'organizer_info_text',
'event_list_type',
'event_list_availability',
@@ -243,6 +243,7 @@
{% bootstrap_field form.presale_end layout="control" %}
{% bootstrap_field sform.show_items_outside_presale_period layout="control" %}
{% bootstrap_field sform.last_order_modification_date layout="control" %}
{% bootstrap_field sform.allow_modifications_after_checkin layout="control" %}
</fieldset>
<fieldset>
<legend>{% trans "Display" %}</legend>
@@ -23,13 +23,16 @@
<input type="hidden" name="status" value="c"/>
{% bootstrap_form_errors form %}
{% bootstrap_field form.send_email layout='' %}
{% if form.cancel_invoice %}
{% bootstrap_field form.cancel_invoice layout='' %}
{% endif %}
{% if form.cancellation_fee %}
{% bootstrap_field form.cancellation_fee layout='' %}
{% endif %}
<div class="row checkout-button-row">
<div class="col-md-4">
<a class="btn btn-block btn-default btn-lg"
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
href="{% url "control:event.order" event=request.event.slug organizer=request.event.organizer.slug code=order.code %}">
{% trans "No, take me back" %}
</a>
</div>
@@ -30,6 +30,8 @@
{% if form.domain %}
{% bootstrap_field form.domain layout="control" %}
{% endif %}
{% bootstrap_field sform.imprint_url layout="control" %}
{% bootstrap_field sform.contact_mail layout="control" %}
{% bootstrap_field sform.organizer_info_text layout="control" %}
{% bootstrap_field sform.event_team_provisioning layout="control" %}
</fieldset>
+5
View File
@@ -151,6 +151,9 @@ class OrderList(OrderSearchMixin, EventPermissionRequiredMixin, PaginationMixin,
s = OrderPosition.objects.filter(
order=OuterRef('pk')
).order_by().values('order').annotate(k=Count('id')).values('k')
i = Invoice.objects.filter(
order=OuterRef('pk')
).order_by().values('order').annotate(k=Count('id')).values('k')
annotated = {
o['pk']: o
for o in
@@ -158,6 +161,7 @@ class OrderList(OrderSearchMixin, EventPermissionRequiredMixin, PaginationMixin,
pk__in=[o.pk for o in ctx['orders']]
).annotate(
pcnt=Subquery(s, output_field=IntegerField()),
icnt=Subquery(i, output_field=IntegerField()),
has_cancellation_request=Exists(CancellationRequest.objects.filter(order=OuterRef('pk')))
).values(
'pk', 'pcnt', 'is_overpaid', 'is_underpaid', 'is_pending_with_full_payment', 'has_external_refund',
@@ -1133,6 +1137,7 @@ class OrderTransition(OrderView):
try:
cancel_order(self.order.pk, user=self.request.user,
send_mail=self.mark_canceled_form.cleaned_data['send_email'],
cancel_invoice=self.mark_canceled_form.cleaned_data.get('cancel_invoice', True),
cancellation_fee=self.mark_canceled_form.cleaned_data.get('cancellation_fee'))
except OrderError as e:
messages.error(self.request, str(e))
+1 -1
View File
@@ -395,7 +395,7 @@ class TeamListView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, L
memcount=Count('members', distinct=True),
eventcount=Count('limit_events', distinct=True),
invcount=Count('invites', distinct=True)
).all()
).all().order_by('name')
class TeamCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, CreateView):
+26 -37
View File
@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-27 17:45+0000\n"
"PO-Revision-Date: 2021-01-27 17:58+0000\n"
"PO-Revision-Date: 2021-01-30 19:49+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
">\n"
@@ -14,7 +14,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 3.10.3\n"
"X-Generator: Weblate 4.4.2\n"
"X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n"
#: htmlcov/pretix_control_views_dashboards_py.html:898
@@ -10499,6 +10499,8 @@ msgid ""
"A repeated password reset has been denied, as the last request was less than "
"24 hours ago."
msgstr ""
"Eine Zurücksetzung des Passworts wurde abgelehnt, da es bereits eine Anfrage "
"innerhalb der letzten 24 Stunden gab."
#: pretix/control/logdisplay.py:362
#, python-brace-format
@@ -13736,12 +13738,8 @@ msgid "Only available as an add-on product"
msgstr "Nur als Zusatzprodukt verfügbar"
#: pretix/control/templates/pretixcontrol/items/index.html:98
#, fuzzy
#| msgid "Only sell this product as part of a bundle"
msgid "Only available as part of a bundle"
msgstr ""
"Dieses Produkt nicht einzeln verkaufen, sondern nur als Teil eines festen "
"Produktpakets"
msgstr "Nur als Teil eines festen Pakets verfügbar"
#: pretix/control/templates/pretixcontrol/items/index.html:101
msgid "Only visible with a voucher"
@@ -14904,16 +14902,12 @@ msgstr ""
"haben."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:30
#, fuzzy
#| msgid "Original payment method"
msgid "Refund to original payment method"
msgstr "Ursprüngliche Zahlungsmethode"
msgstr "Auf das ursprüngliche Zahlungsmittel erstatten"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:36
#, fuzzy
#| msgid "Payment settings"
msgid "Payment details"
msgstr "Zahlungseinstellungen"
msgstr "Zahlungsdetails"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:37
msgid "Amount not refunded"
@@ -14921,32 +14915,24 @@ msgstr "Nicht erstatteter Betrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:38
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:85
#, fuzzy
#| msgid "Refund amount:"
msgid "Refund amount"
msgstr "Erstattungsbetrag:"
msgstr "Erstattungsbetrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:66
#, fuzzy
#| msgid "Full name"
msgid "Full amount"
msgstr "Voller Name"
msgstr "Voller Betrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:69
msgid "This payment method does not support automatic refunds."
msgstr "Diese Zahlungsmethode unterstützt keine automatische Erstattung."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:78
#, fuzzy
#| msgid "Use different payment method"
msgid "Refund to a different payment method"
msgstr "Andere Zahlungsmethode wählen"
msgstr "Erstattung auf anderes Zahlungsmittel"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:84
#, fuzzy
#| msgid "Rendering option"
msgid "Recipient / options"
msgstr "Ausgabemodus"
msgstr "Empfänger / Optionen"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:112
msgid "Transfer to other order"
@@ -16891,11 +16877,9 @@ msgid "Prefix (optional)"
msgstr "Präfix (optional)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
#, fuzzy
#| msgid "Number"
msgctxt "number_of_things"
msgid "Number"
msgstr "Zahl"
msgstr "Anzahl"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes"
@@ -18905,10 +18889,8 @@ msgstr ""
"Bestellungen zusätzlich zum Standardtext bezahlt."
#: pretix/plugins/banktransfer/payment.py:135
#, fuzzy
#| msgid "All open refunds"
msgid "IBAN blocklist for refunds"
msgstr "Alle offenen Erstattungen"
msgstr "IBAN-Blockliste für Erstattungen"
#: pretix/plugins/banktransfer/payment.py:138
msgid ""
@@ -18918,6 +18900,11 @@ msgid ""
"country codes such as \"GB\" if you never want to send refunds to IBANs from "
"a specific country."
msgstr ""
"Eine IBAN oder ein IBAN-Prefix pro Zeile. Das System versucht keine "
"automatischen Rückerstattungen an diese IBANs zu senden. Dies ist z.B. "
"nützlich wenn Sie viele \"weitergeleitete Zahlungen\" von einem "
"Zahlungsdienstleister erhalten. Sie können auch Ländercodes wie \"GB\" "
"auflisten, wenn Sie nie Erstattungen an britische IBANs anstoßen wollen."
#: pretix/plugins/banktransfer/payment.py:176
msgid "Please fill out your bank account details."
@@ -18964,16 +18951,13 @@ msgstr ""
"Zahlung gestartet werden."
#: pretix/plugins/banktransfer/payment.py:349
#, fuzzy
#| msgid "(optional)"
msgid "BIC (optional)"
msgstr "(optional)"
msgstr "BIC (optional)"
#: pretix/plugins/banktransfer/payment.py:388
#, fuzzy
#| msgid "Your input was invalid, please try again."
msgid "Your input was invalid, please see below for details."
msgstr "Die Eingabe war nicht korrekt, bitte erneut versuchen."
msgstr ""
"Die Eingabe war nicht korrekt, die Fehler finden Sie im Detail weiter unten."
#: pretix/plugins/banktransfer/refund_export.py:25
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:5
@@ -22620,6 +22604,11 @@ msgid ""
"{number} hours. If the email did not arrive, please your check spam folder "
"and also double check that you used the correct email address."
msgstr ""
"Wenn die von Ihnen eingegebene E-Mail-Adresse gültig ist und ein Ticket für "
"diese Adresse vorliegt, haben wir Ihnen in den letzten {number} Stunden "
"bereits eine E-Mail geschickt. Wenn diese E-Mail nicht ankam, bitte "
"überprüfen Sie Ihren Spam-Ordner und überprüfen Sie, dass Sie die richtige E"
"-Mail-Adresse verwendet haben."
#: pretix/presale/views/user.py:49
msgid "Your orders for {}"
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-27 17:45+0000\n"
"PO-Revision-Date: 2021-01-27 17:58+0000\n"
"PO-Revision-Date: 2021-01-30 19:49+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/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 3.10.3\n"
"X-Generator: Weblate 4.4.2\n"
#: htmlcov/pretix_control_views_dashboards_py.html:898
#: pretix/control/templates/pretixcontrol/events/index.html:144
@@ -10483,6 +10483,8 @@ msgid ""
"A repeated password reset has been denied, as the last request was less than "
"24 hours ago."
msgstr ""
"Eine Zurücksetzung des Passworts wurde abgelehnt, da es bereits eine Anfrage "
"innerhalb der letzten 24 Stunden gab."
#: pretix/control/logdisplay.py:362
#, python-brace-format
@@ -13714,12 +13716,8 @@ msgid "Only available as an add-on product"
msgstr "Nur als Zusatzprodukt verfügbar"
#: pretix/control/templates/pretixcontrol/items/index.html:98
#, fuzzy
#| msgid "Only sell this product as part of a bundle"
msgid "Only available as part of a bundle"
msgstr ""
"Dieses Produkt nicht einzeln verkaufen, sondern nur als Teil eines festen "
"Produktpakets"
msgstr "Nur als Teil eines festen Pakets verfügbar"
#: pretix/control/templates/pretixcontrol/items/index.html:101
msgid "Only visible with a voucher"
@@ -14880,16 +14878,12 @@ msgstr ""
"erledigt markieren kannst, wenn du das Geld tatsächlich zurückerstattet hast."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:30
#, fuzzy
#| msgid "Original payment method"
msgid "Refund to original payment method"
msgstr "Ursprüngliche Zahlungsmethode"
msgstr "Auf das ursprüngliche Zahlungsmittel erstatten"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:36
#, fuzzy
#| msgid "Payment settings"
msgid "Payment details"
msgstr "Zahlungseinstellungen"
msgstr "Zahlungsdetails"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:37
msgid "Amount not refunded"
@@ -14897,32 +14891,24 @@ msgstr "Nicht erstatteter Betrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:38
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:85
#, fuzzy
#| msgid "Refund amount:"
msgid "Refund amount"
msgstr "Erstattungsbetrag:"
msgstr "Erstattungsbetrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:66
#, fuzzy
#| msgid "Full name"
msgid "Full amount"
msgstr "Voller Name"
msgstr "Voller Betrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:69
msgid "This payment method does not support automatic refunds."
msgstr "Diese Zahlungsmethode unterstützt keine automatische Erstattung."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:78
#, fuzzy
#| msgid "Use different payment method"
msgid "Refund to a different payment method"
msgstr "Andere Zahlungsmethode wählen"
msgstr "Erstattung auf anderes Zahlungsmittel"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:84
#, fuzzy
#| msgid "Rendering option"
msgid "Recipient / options"
msgstr "Ausgabemodus"
msgstr "Empfänger / Optionen"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:112
msgid "Transfer to other order"
@@ -16860,11 +16846,9 @@ msgid "Prefix (optional)"
msgstr "Präfix (optional)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
#, fuzzy
#| msgid "Number"
msgctxt "number_of_things"
msgid "Number"
msgstr "Zahl"
msgstr "Anzahl"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes"
@@ -18870,10 +18854,8 @@ msgstr ""
"Bestellungen zusätzlich zum Standardtext bezahlt."
#: pretix/plugins/banktransfer/payment.py:135
#, fuzzy
#| msgid "All open refunds"
msgid "IBAN blocklist for refunds"
msgstr "Alle offenen Erstattungen"
msgstr "IBAN-Blockliste für Erstattungen"
#: pretix/plugins/banktransfer/payment.py:138
msgid ""
@@ -18883,6 +18865,11 @@ msgid ""
"country codes such as \"GB\" if you never want to send refunds to IBANs from "
"a specific country."
msgstr ""
"Eine IBAN oder ein IBAN-Prefix pro Zeile. Das System versucht keine "
"automatischen Rückerstattungen an diese IBANs zu senden. Dies ist z.B. "
"nützlich wenn du viele \"weitergeleitete Zahlungen\" von einem "
"Zahlungsdienstleister erhältst. Du kannst auch Ländercodes wie \"GB\" "
"auflisten, wenn du nie Erstattungen an britische IBANs anstoßen willst."
#: pretix/plugins/banktransfer/payment.py:176
msgid "Please fill out your bank account details."
@@ -18929,16 +18916,13 @@ msgstr ""
"Zahlung gestartet werden."
#: pretix/plugins/banktransfer/payment.py:349
#, fuzzy
#| msgid "(optional)"
msgid "BIC (optional)"
msgstr "(optional)"
msgstr "BIC (optional)"
#: pretix/plugins/banktransfer/payment.py:388
#, fuzzy
#| msgid "Your input was invalid, please try again."
msgid "Your input was invalid, please see below for details."
msgstr "Die Eingabe war nicht korrekt, bitte erneut versuchen."
msgstr ""
"Die Eingabe war nicht korrekt, die Fehler findest du im Detail weiter unten."
#: pretix/plugins/banktransfer/refund_export.py:25
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:5
@@ -22571,6 +22555,11 @@ msgid ""
"{number} hours. If the email did not arrive, please your check spam folder "
"and also double check that you used the correct email address."
msgstr ""
"Wenn die von dir eingegebene E-Mail-Adresse gültig ist und ein Ticket für "
"diese Adresse vorliegt, haben wir dir in den letzten {number} Stunden "
"bereits eine E-Mail geschickt. Wenn diese E-Mail nicht ankam, bitte "
"überprüfe deinen Spam-Ordner und überprüfe, dass du die richtige E-Mail-"
"Adresse verwendet hast."
#: pretix/presale/views/user.py:49
msgid "Your orders for {}"
+69 -115
View File
@@ -7,10 +7,10 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-27 17:45+0000\n"
"PO-Revision-Date: 2021-01-13 05:00+0000\n"
"PO-Revision-Date: 2021-01-29 11:23+0000\n"
"Last-Translator: Maarten van den Berg <maartenberg1@gmail.com>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/"
">\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/>"
"\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -954,7 +954,7 @@ msgstr "Inclusief betaalde bedragen"
#: pretix/base/exporters/orderlist.py:64
msgid "Show multiple choice answers grouped in one column"
msgstr ""
msgstr "Toon antwoorden voor meerkeuzevragen gegroepeerd in één kolom"
#: pretix/base/exporters/orderlist.py:148
#: pretix/base/exporters/orderlist.py:309
@@ -2882,7 +2882,7 @@ msgstr "Vraag bij inchecken in plaats van bij het kopen van een ticket"
#: pretix/base/models/items.py:1072
msgid "Not supported by all check-in apps for all question types."
msgstr ""
msgstr "Niet al onze incheckapps ondersteunen dit voor alle vraagsoorten."
#: pretix/base/models/items.py:1076
#: pretix/control/templates/pretixcontrol/items/questions.html:66
@@ -3318,10 +3318,8 @@ msgstr "Extern"
#: pretix/base/models/orders.py:1720
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:191
#, fuzzy
#| msgid "Refund only"
msgid "Refund reason"
msgstr "Betaal alleen"
msgstr "Reden voor de terugbetaling"
#: pretix/base/models/orders.py:1721
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:192
@@ -3329,6 +3327,8 @@ msgstr "Betaal alleen"
msgid ""
"May be shown to the end user or used e.g. as part of a payment reference."
msgstr ""
"Deze tekst kan aan de gebruiker getoond worden, bijvoorbeeld als deel van de "
"betalingsinformatie."
#: pretix/base/models/orders.py:1831
msgid "Payment fee"
@@ -4845,10 +4845,8 @@ msgstr ""
#: pretix/base/services/cancelevent.py:200
#: pretix/base/services/cancelevent.py:258
#, fuzzy
#| msgid "Event created"
msgid "Event canceled"
msgstr "Evenement aangemaakt"
msgstr "Evenement geannuleerd"
#: pretix/base/services/cart.py:52 pretix/base/services/orders.py:73
msgid ""
@@ -6621,7 +6619,7 @@ msgstr ""
#: pretix/base/settings.py:1238
msgid "Step size for reduction amount"
msgstr ""
msgstr "Stapgrootte voor lagere terugbetaling"
#: pretix/base/settings.py:1239
msgid ""
@@ -6629,6 +6627,10 @@ msgid ""
"set this to e.g. 10, they will only be able to choose values in increments "
"of 10."
msgstr ""
"Standaard kunnen klanten een willekeurig bedrag invoeren dat van de "
"terugbetaling wordt afgetrokken. Als u deze waarde bijvoorbeeld op 10 "
"instelt zullen klanten alleen bedragen kunnen kiezen die een meervoud van 10 "
"zijn."
#: pretix/base/settings.py:1249
msgid ""
@@ -8794,16 +8796,12 @@ msgid "Order placed before"
msgstr "Bestelling geplaatst voor"
#: pretix/control/forms/filter.py:468
#, fuzzy
#| msgid "Order payments and refunds"
msgid "Minimal sum of payments and refunds"
msgstr "Betalingen en terugbetalingen van bestelling"
msgstr "Minimale som van betalingen en terugbetalingen"
#: pretix/control/forms/filter.py:473
#, fuzzy
#| msgid "Order payments and refunds"
msgid "Maximal sum of payments and refunds"
msgstr "Betalingen en terugbetalingen van bestelling"
msgstr "Maximale som van betalingen en terugbetalingen"
#: pretix/control/forms/filter.py:515 pretix/control/forms/filter.py:520
#: pretix/control/forms/filter.py:546 pretix/control/forms/filter.py:551
@@ -9516,10 +9514,6 @@ msgid "Automatically refund money if possible"
msgstr "Geld automatisch terugbetalen indien mogelijk"
#: pretix/control/forms/orders.py:619
#, fuzzy
#| msgid ""
#| "Create manual refund if the payment method odes not support automatic "
#| "refunds"
msgid ""
"Create manual refund if the payment method does not support automatic refunds"
msgstr ""
@@ -10201,6 +10195,8 @@ msgid ""
"The email address has been confirmed to be working (the user clicked on a "
"link in the email for the first time)."
msgstr ""
"Het e-mailadres is gecontroleerd (de gebruiker heeft op een link in een naar "
"de gebruiker verzonden mail geklikt)."
#: pretix/control/logdisplay.py:297
#, python-brace-format
@@ -10481,6 +10477,8 @@ msgid ""
"A repeated password reset has been denied, as the last request was less than "
"24 hours ago."
msgstr ""
"Een herhaald wachtwoordherstelverzoek is geweigerd, omdat het vorige verzoek "
"minder dan 24 uur geleden was."
#: pretix/control/logdisplay.py:362
#, python-brace-format
@@ -12282,6 +12280,8 @@ msgid ""
"Your shop is already live, however the following issues would normally "
"prevent your shop to go live:"
msgstr ""
"Uw winkel staat al live, maar de volgende problemen zouden normaal gesproken "
"verhinderen dat uw winkel live kan worden gezet:"
#: pretix/control/templates/pretixcontrol/event/live.html:37
#: pretix/control/templates/pretixcontrol/event/live.html:56
@@ -13710,10 +13710,8 @@ msgid "Only available as an add-on product"
msgstr "Alleen beschikbaar als add-onproduct"
#: pretix/control/templates/pretixcontrol/items/index.html:98
#, fuzzy
#| msgid "Only sell this product as part of a bundle"
msgid "Only available as part of a bundle"
msgstr "Verkoop dit product alleen als deel van een bundel"
msgstr "Alleen beschikbaar als deel van een bundel"
#: pretix/control/templates/pretixcontrol/items/index.html:101
msgid "Only visible with a voucher"
@@ -14457,10 +14455,8 @@ msgstr ""
"kunt u de bestelling handmatig als verlopen markeren."
#: pretix/control/templates/pretixcontrol/order/index.html:104
#, fuzzy
#| msgid "Refund order"
msgid "Refund for overpayment"
msgstr "Bestelling terugbetalen"
msgstr "Terugbetaling voor overbetaling"
#: pretix/control/templates/pretixcontrol/order/index.html:106
#, python-format
@@ -14873,16 +14869,12 @@ msgstr ""
"heeft overgemaakt naar de klant."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:30
#, fuzzy
#| msgid "Original payment method"
msgid "Refund to original payment method"
msgstr "Oorspronkelijke betalingsmethode"
msgstr "Terugbetalen naar oorspronkelijke betalingsmethode"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:36
#, fuzzy
#| msgid "Payment settings"
msgid "Payment details"
msgstr "Betalingsinstellingen"
msgstr "Betalingsdetails"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:37
msgid "Amount not refunded"
@@ -14890,32 +14882,24 @@ msgstr "Bedrag niet terugbetaald"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:38
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:85
#, fuzzy
#| msgid "Refund amount:"
msgid "Refund amount"
msgstr "Terug te betalen bedrag:"
msgstr "Terug te betalen bedrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:66
#, fuzzy
#| msgid "Full name"
msgid "Full amount"
msgstr "Volledige naam"
msgstr "Volledige bedrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:69
msgid "This payment method does not support automatic refunds."
msgstr "Deze betalingsmethode ondersteunt geen automatische terugbetalingen."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:78
#, fuzzy
#| msgid "Use different payment method"
msgid "Refund to a different payment method"
msgstr "Gebruik een andere betaalmethode"
msgstr "Terugbetalen naar een andere betalingsmethode"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:84
#, fuzzy
#| msgid "Rendering option"
msgid "Recipient / options"
msgstr "Weergaveoptie"
msgstr "Ontvanger / opties"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:112
msgid "Transfer to other order"
@@ -16080,24 +16064,17 @@ msgid "Step 1: Download data"
msgstr "Stap 1: Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:17
#, fuzzy
#| msgid "Step 1: Download data"
msgid "(Optional) Step 1: Download data"
msgstr "Stap 1: Download gegevens"
msgstr "(Optioneel) Stap 1: Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:20
#, fuzzy
#| msgid ""
#| "You are about to permanently delete data from the server, even though you "
#| "might be required to keep some of this data on file. You should therefore "
#| "download the following file and store it in a safe place:"
msgid ""
"You are about to permanently delete data from the server, even though you "
"might be required to keep some of this data on file. You can therefore "
"download the following file and store it in a safe place:"
msgstr ""
"U gaat gegevens permanent van de server verwijderen, ook al bent u mogelijk "
"verplicht om sommige van deze gegevens te bewaren. U moet hierom het "
"verplicht om sommige van deze gegevens te bewaren. U kunt hierom het "
"volgende bestand downloaden en op een veilige plaats bewaren:"
#: pretix/control/templates/pretixcontrol/shredder/download.html:29
@@ -16105,10 +16082,8 @@ msgid "Download data"
msgstr "Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:34
#, fuzzy
#| msgid "Step 3: Confirm deletion"
msgid "Step 2: Confirm deletion"
msgstr "Stap 3: Bevestig verwijdering"
msgstr "Stap 2: Bevestig verwijdering"
#: pretix/control/templates/pretixcontrol/shredder/download.html:36
#, python-format
@@ -16128,10 +16103,8 @@ msgid "Event short name"
msgstr "Korte naam evenement"
#: pretix/control/templates/pretixcontrol/shredder/download.html:46
#, fuzzy
#| msgid "Step 2: Confirm download"
msgid "Step 3: Confirm download"
msgstr "Stap 2: Bevestig download"
msgstr "Stap 3: Bevestig download"
#: pretix/control/templates/pretixcontrol/shredder/download.html:48
msgid ""
@@ -16266,54 +16239,37 @@ msgid "Times"
msgstr "Tijden"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:339
#, fuzzy
#| msgctxt "timeline"
#| msgid "Start of ticket sales"
msgid "Start of first slot"
msgstr "Begin van de ticketverkoop"
msgstr "Begin van eerste tijdsslot"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:345
#, fuzzy
#| msgctxt "timeline"
#| msgid "End of ticket sales"
msgid "End of time slots"
msgstr "Einde van de ticketverkoop"
msgstr "Einde van tijdsslots"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:351
#, fuzzy
#| msgid "Length of gift card codes"
msgid "Length of slots"
msgstr "Lengte van cadeauboncodes"
msgstr "Lengte van elk tijdsslot"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:355
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:364
#, fuzzy
#| msgid "in minutes"
msgid "minutes"
msgstr "in minuten"
msgstr "minuten"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:360
msgid "Break between slots"
msgstr ""
msgstr "Pauze tussen tijdsslots"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:370
#, fuzzy
#| msgctxt "payment_state"
#| msgid "created"
msgid "Create"
msgstr "aangemaakt"
msgstr "Aanmaken"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:377
#, fuzzy
#| msgid "Add a new time slot"
msgid "Add a single time slot"
msgstr "Voeg een nieuw tijdsslot toe"
msgstr "Nieuw tijdsslot toevoegen"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:379
#, fuzzy
#| msgid "Add a new time slot"
msgid "Add many time slots"
msgstr "Voeg een nieuw tijdsslot toe"
msgstr "Meerdere tijdsslots toevoegen"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:502
#: pretix/control/templates/pretixcontrol/subevents/detail.html:144
@@ -16879,11 +16835,9 @@ msgid "Prefix (optional)"
msgstr "Voorvoegsel (optioneel)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
#, fuzzy
#| msgid "Number"
msgctxt "number_of_things"
msgid "Number"
msgstr "Getal"
msgstr "Aantal"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes"
@@ -17085,6 +17039,8 @@ msgid ""
"Currently, no vouchers will be sent since your event is not live or is not "
"selling tickets."
msgstr ""
"Momenteel zullen er geen vouchers worden verzonden, omdat uw evenement niet "
"live is of geen tickets verkoopt."
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:41
msgid ""
@@ -18131,12 +18087,8 @@ msgid "The selected exporter was not found."
msgstr "De gekozen exporteerder was niet gevonden."
#: pretix/control/views/orders.py:2117
#, fuzzy
#| msgid ""
#| "There was a problem processing your input. See below for error details."
msgid "There was a problem processing your input:"
msgstr ""
"Er was een probleem met het verwerken van uw invoer. Zie onder voor details."
msgstr "Er is een probleem opgetreden bij het verwerken van uw invoer:"
#: pretix/control/views/orders.py:2213
msgid "All orders have been canceled."
@@ -18892,10 +18844,8 @@ msgstr ""
"bevestigingspagina voor openstaande bestellingen."
#: pretix/plugins/banktransfer/payment.py:135
#, fuzzy
#| msgid "All open refunds"
msgid "IBAN blocklist for refunds"
msgstr "Alle openstaande terugbetalingen"
msgstr "IBAN-blokkadelijst voor terugbetalingen"
#: pretix/plugins/banktransfer/payment.py:138
msgid ""
@@ -18905,6 +18855,12 @@ msgid ""
"country codes such as \"GB\" if you never want to send refunds to IBANs from "
"a specific country."
msgstr ""
"Voer hier één IBAN of IBAN-prefix per regel in. Het systeem zal niet "
"proberen om terugbetalingen te sturen naar deze rekeningnummers. Dit kan "
"handig zijn als u bijvoorbeeld een groot aantal \"doorgestuurde betalingen\" "
"ontvangt van een derde partij zoals een betalingsprovider. U kunt hier ook "
"landcodes zoals \"GB\" invullen als u nooit automatisch terugbetalingen wilt "
"overmaken naar IBANs uit een bepaald land."
#: pretix/plugins/banktransfer/payment.py:176
msgid "Please fill out your bank account details."
@@ -18940,10 +18896,9 @@ msgid "Invalid IBAN/BIC"
msgstr "Ongeldig IBAN/BIC"
#: pretix/plugins/banktransfer/payment.py:313
#, fuzzy, python-brace-format
#| msgid "Bank account type"
#, python-brace-format
msgid "Bank account {iban}"
msgstr "Bankrekeningtype"
msgstr "Bankrekening {iban}"
#: pretix/plugins/banktransfer/payment.py:329
msgid "Can only create a bank transfer refund from an existing payment."
@@ -18952,16 +18907,12 @@ msgstr ""
"betaling gestart worden."
#: pretix/plugins/banktransfer/payment.py:349
#, fuzzy
#| msgid "(optional)"
msgid "BIC (optional)"
msgstr "(optioneel)"
msgstr "BIC (optioneel)"
#: pretix/plugins/banktransfer/payment.py:388
#, fuzzy
#| msgid "Your input was invalid, please try again."
msgid "Your input was invalid, please see below for details."
msgstr "Uw invoer was ongeldig, probeer het opnieuw."
msgstr "Uw invoer was ongeldig, zie hieronder voor details."
#: pretix/plugins/banktransfer/refund_export.py:25
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:5
@@ -20537,10 +20488,9 @@ msgstr "onbekende naam"
#: pretix/plugins/stripe/payment.py:949 pretix/plugins/stripe/payment.py:1001
#: pretix/plugins/stripe/payment.py:1116 pretix/plugins/stripe/payment.py:1268
#: pretix/plugins/stripe/payment.py:1371
#, fuzzy, python-brace-format
#| msgid "Bank account type"
#, python-brace-format
msgid "Bank account at {bank}"
msgstr "Bankrekeningtype"
msgstr "Bankrekening bij {bank}"
#: pretix/plugins/stripe/payment.py:957
msgid "iDEAL via Stripe"
@@ -20583,10 +20533,9 @@ msgid "Spain"
msgstr "Spanje"
#: pretix/plugins/stripe/payment.py:1193
#, fuzzy, python-brace-format
#| msgid "Bank account details"
#, python-brace-format
msgid "Bank account {iban} at {bank}"
msgstr "Bankrekeninginformatie"
msgstr "Bankrekening {iban} bij {bank}"
#: pretix/plugins/stripe/payment.py:1204
msgid "EPS via Stripe"
@@ -22161,6 +22110,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:161
msgid "The following payment methods will be used to refund the money to you:"
msgstr ""
"De volgende betalingsmethoden zullen worden gebruikt om uw terugbetaling uit "
"te voeren:"
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:141
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:172
@@ -22551,10 +22502,8 @@ msgid "You chose an invalid cancellation fee."
msgstr "U heeft een ongeldig bedrag voor de annuleringskosten gekozen."
#: pretix/presale/views/order.py:869
#, fuzzy
#| msgid "Any customer"
msgid "Canceled by customer"
msgstr "Iedere klant"
msgstr "Geannuleerd door klant"
#: pretix/presale/views/order.py:880
msgid "The cancellation has been requested."
@@ -22595,6 +22544,11 @@ msgid ""
"{number} hours. If the email did not arrive, please your check spam folder "
"and also double check that you used the correct email address."
msgstr ""
"Als het e-mailadres dat u invoerde geldig is en is gekoppeld aan een ticket "
"hebben we u in de afgelopen {number} uur al een link naar uw ticket "
"gestuurd. Controleer als u nog geen mail heeft ontvangen of het bericht "
"misschien in uw ongewenste e-mail terecht is gekomen en of u het juiste e-"
"mailadres heeft ingevuld."
#: pretix/presale/views/user.py:49
msgid "Your orders for {}"
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-27 17:45+0000\n"
"PO-Revision-Date: 2021-01-13 05:00+0000\n"
"PO-Revision-Date: 2021-01-29 11:23+0000\n"
"Last-Translator: Maarten van den Berg <maartenberg1@gmail.com>\n"
"Language-Team: Dutch (informal) <https://translate.pretix.eu/projects/pretix/"
"pretix/nl_Informal/>\n"
@@ -955,7 +955,7 @@ msgstr "Inclusief betaalde bedragen"
#: pretix/base/exporters/orderlist.py:64
msgid "Show multiple choice answers grouped in one column"
msgstr ""
msgstr "Toon antwoorden voor meerkeuzevragen gegroepeerd in één kolom"
#: pretix/base/exporters/orderlist.py:148
#: pretix/base/exporters/orderlist.py:309
@@ -2883,7 +2883,7 @@ msgstr "Vraag bij inchecken in plaats van bij het kopen van een kaartje"
#: pretix/base/models/items.py:1072
msgid "Not supported by all check-in apps for all question types."
msgstr ""
msgstr "Niet al onze incheckapps ondersteunen dit voor alle vraagsoorten."
#: pretix/base/models/items.py:1076
#: pretix/control/templates/pretixcontrol/items/questions.html:66
@@ -3319,10 +3319,8 @@ msgstr "Extern"
#: pretix/base/models/orders.py:1720
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:191
#, fuzzy
#| msgid "Refund only"
msgid "Refund reason"
msgstr "Betaal alleen"
msgstr "Reden voor de terugbetaling"
#: pretix/base/models/orders.py:1721
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:192
@@ -3330,6 +3328,8 @@ msgstr "Betaal alleen"
msgid ""
"May be shown to the end user or used e.g. as part of a payment reference."
msgstr ""
"Deze tekst kan aan de gebruiker getoond worden, bijvoorbeeld als deel van de "
"betalingsinformatie."
#: pretix/base/models/orders.py:1831
msgid "Payment fee"
@@ -4844,10 +4844,8 @@ msgstr ""
#: pretix/base/services/cancelevent.py:200
#: pretix/base/services/cancelevent.py:258
#, fuzzy
#| msgid "Event created"
msgid "Event canceled"
msgstr "Evenement aangemaakt"
msgstr "Evenement geannuleerd"
#: pretix/base/services/cart.py:52 pretix/base/services/orders.py:73
msgid ""
@@ -6621,7 +6619,7 @@ msgstr ""
#: pretix/base/settings.py:1238
msgid "Step size for reduction amount"
msgstr ""
msgstr "Stapgrootte voor lagere terugbetaling"
#: pretix/base/settings.py:1239
msgid ""
@@ -6629,6 +6627,10 @@ msgid ""
"set this to e.g. 10, they will only be able to choose values in increments "
"of 10."
msgstr ""
"Standaard kunnen klanten een willekeurig bedrag invoeren dat van de "
"terugbetaling wordt afgetrokken. Als je deze waarde bijvoorbeeld op 10 "
"instelt zullen klanten alleen bedragen kunnen kiezen die een meervoud van 10 "
"zijn."
#: pretix/base/settings.py:1249
msgid ""
@@ -8787,16 +8789,12 @@ msgid "Order placed before"
msgstr "Bestelling geplaatst voor"
#: pretix/control/forms/filter.py:468
#, fuzzy
#| msgid "Order payments and refunds"
msgid "Minimal sum of payments and refunds"
msgstr "Betalingen en terugbetalingen van bestelling"
msgstr "Minimale som van betalingen en terugbetalingen"
#: pretix/control/forms/filter.py:473
#, fuzzy
#| msgid "Order payments and refunds"
msgid "Maximal sum of payments and refunds"
msgstr "Betalingen en terugbetalingen van bestelling"
msgstr "Maximale som van betalingen en terugbetalingen"
#: pretix/control/forms/filter.py:515 pretix/control/forms/filter.py:520
#: pretix/control/forms/filter.py:546 pretix/control/forms/filter.py:551
@@ -9508,10 +9506,6 @@ msgid "Automatically refund money if possible"
msgstr "Geld automatisch terugbetalen indien mogelijk"
#: pretix/control/forms/orders.py:619
#, fuzzy
#| msgid ""
#| "Create manual refund if the payment method odes not support automatic "
#| "refunds"
msgid ""
"Create manual refund if the payment method does not support automatic refunds"
msgstr ""
@@ -10192,6 +10186,8 @@ msgid ""
"The email address has been confirmed to be working (the user clicked on a "
"link in the email for the first time)."
msgstr ""
"Het e-mailadres is gecontroleerd (de gebruiker heeft op een link in een naar "
"de gebruiker verzonden mail geklikt)."
#: pretix/control/logdisplay.py:297
#, python-brace-format
@@ -10472,6 +10468,8 @@ msgid ""
"A repeated password reset has been denied, as the last request was less than "
"24 hours ago."
msgstr ""
"Een herhaald wachtwoordherstelverzoek is geweigerd, omdat het vorige verzoek "
"minder dan 24 uur geleden was."
#: pretix/control/logdisplay.py:362
#, python-brace-format
@@ -12273,6 +12271,8 @@ msgid ""
"Your shop is already live, however the following issues would normally "
"prevent your shop to go live:"
msgstr ""
"Je winkel staat al live, maar de volgende problemen zouden normaal gesproken "
"verhinderen dat je winkel live kan worden gezet:"
#: pretix/control/templates/pretixcontrol/event/live.html:37
#: pretix/control/templates/pretixcontrol/event/live.html:56
@@ -13702,10 +13702,8 @@ msgid "Only available as an add-on product"
msgstr "Alleen beschikbaar als add-onproduct"
#: pretix/control/templates/pretixcontrol/items/index.html:98
#, fuzzy
#| msgid "Only sell this product as part of a bundle"
msgid "Only available as part of a bundle"
msgstr "Verkoop dit product alleen als deel van een bundel"
msgstr "Alleen beschikbaar als deel van een bundel"
#: pretix/control/templates/pretixcontrol/items/index.html:101
msgid "Only visible with a voucher"
@@ -14450,10 +14448,8 @@ msgstr ""
"kan je de bestelling handmatig als verlopen markeren."
#: pretix/control/templates/pretixcontrol/order/index.html:104
#, fuzzy
#| msgid "Refund order"
msgid "Refund for overpayment"
msgstr "Bestelling terugbetalen"
msgstr "Terugbetaling voor overbetaling"
#: pretix/control/templates/pretixcontrol/order/index.html:106
#, python-format
@@ -14866,16 +14862,12 @@ msgstr ""
"daadwerkelijk het geld hebt overgemaakt naar de klant."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:30
#, fuzzy
#| msgid "Original payment method"
msgid "Refund to original payment method"
msgstr "Oorspronkelijke betalingsmethode"
msgstr "Terugbetalen naar oorspronkelijke betalingsmethode"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:36
#, fuzzy
#| msgid "Payment settings"
msgid "Payment details"
msgstr "Betalingsinstellingen"
msgstr "Betalingsdetails"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:37
msgid "Amount not refunded"
@@ -14883,32 +14875,24 @@ msgstr "Bedrag niet terugbetaald"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:38
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:85
#, fuzzy
#| msgid "Refund amount:"
msgid "Refund amount"
msgstr "Terug te betalen bedrag:"
msgstr "Terug te betalen bedrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:66
#, fuzzy
#| msgid "Full name"
msgid "Full amount"
msgstr "Volledige naam"
msgstr "Volledige bedrag"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:69
msgid "This payment method does not support automatic refunds."
msgstr "Deze betalingsmethode ondersteunt geen automatische terugbetalingen."
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:78
#, fuzzy
#| msgid "Link to enable payment method"
msgid "Refund to a different payment method"
msgstr "Link om betalingsmethode in te schakelen"
msgstr "Terugbetalen naar een andere betalingsmethode"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:84
#, fuzzy
#| msgid "Rendering option"
msgid "Recipient / options"
msgstr "Weergaveoptie"
msgstr "Ontvanger / opties"
#: pretix/control/templates/pretixcontrol/order/refund_choose.html:112
msgid "Transfer to other order"
@@ -16073,24 +16057,17 @@ msgid "Step 1: Download data"
msgstr "Stap 1: Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:17
#, fuzzy
#| msgid "Step 1: Download data"
msgid "(Optional) Step 1: Download data"
msgstr "Stap 1: Download gegevens"
msgstr "(Optioneel) Stap 1: Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:20
#, fuzzy
#| msgid ""
#| "You are about to permanently delete data from the server, even though you "
#| "might be required to keep some of this data on file. You should therefore "
#| "download the following file and store it in a safe place:"
msgid ""
"You are about to permanently delete data from the server, even though you "
"might be required to keep some of this data on file. You can therefore "
"download the following file and store it in a safe place:"
msgstr ""
"Je gaat gegevens permanent van de server verwijderen, ook al ben je mogelijk "
"verplicht om sommige van deze gegevens te bewaren. Je moet hierom het "
"verplicht om sommige van deze gegevens te bewaren. Je kan hierom het "
"volgende bestand downloaden en op een veilige plaats bewaren:"
#: pretix/control/templates/pretixcontrol/shredder/download.html:29
@@ -16098,10 +16075,8 @@ msgid "Download data"
msgstr "Download gegevens"
#: pretix/control/templates/pretixcontrol/shredder/download.html:34
#, fuzzy
#| msgid "Step 3: Confirm deletion"
msgid "Step 2: Confirm deletion"
msgstr "Stap 3: Bevestig verwijdering"
msgstr "Stap 2: Bevestig verwijdering"
#: pretix/control/templates/pretixcontrol/shredder/download.html:36
#, python-format
@@ -16121,10 +16096,8 @@ msgid "Event short name"
msgstr "Korte naam evenement"
#: pretix/control/templates/pretixcontrol/shredder/download.html:46
#, fuzzy
#| msgid "Step 2: Confirm download"
msgid "Step 3: Confirm download"
msgstr "Stap 2: Bevestig download"
msgstr "Stap 3: Bevestig download"
#: pretix/control/templates/pretixcontrol/shredder/download.html:48
msgid ""
@@ -16259,54 +16232,37 @@ msgid "Times"
msgstr "Tijden"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:339
#, fuzzy
#| msgctxt "timeline"
#| msgid "Start of ticket sales"
msgid "Start of first slot"
msgstr "Begin van de kaartverkoop"
msgstr "Begin van eerste tijdsslot"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:345
#, fuzzy
#| msgctxt "timeline"
#| msgid "End of ticket sales"
msgid "End of time slots"
msgstr "Einde van de kaartverkoop"
msgstr "Einde van tijdsslots"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:351
#, fuzzy
#| msgid "Length of gift card codes"
msgid "Length of slots"
msgstr "Lengte van cadeauboncodes"
msgstr "Lengte van elk tijdsslot"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:355
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:364
#, fuzzy
#| msgid "in minutes"
msgid "minutes"
msgstr "in minuten"
msgstr "minuten"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:360
msgid "Break between slots"
msgstr ""
msgstr "Pauze tussen tijdsslots"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:370
#, fuzzy
#| msgctxt "payment_state"
#| msgid "created"
msgid "Create"
msgstr "aangemaakt"
msgstr "Aanmaken"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:377
#, fuzzy
#| msgid "Add a new time slot"
msgid "Add a single time slot"
msgstr "Voeg een nieuw tijdsslot toe"
msgstr "Nieuw tijdsslot toevoegen"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:379
#, fuzzy
#| msgid "Add a new time slot"
msgid "Add many time slots"
msgstr "Voeg een nieuw tijdsslot toe"
msgstr "Meerdere nieuwe tijdsslots toevoegen"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:502
#: pretix/control/templates/pretixcontrol/subevents/detail.html:144
@@ -16873,11 +16829,9 @@ msgid "Prefix (optional)"
msgstr "Voorvoegsel (optioneel)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
#, fuzzy
#| msgid "Number"
msgctxt "number_of_things"
msgid "Number"
msgstr "Getal"
msgstr "Aantal"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes"
@@ -17080,6 +17034,8 @@ msgid ""
"Currently, no vouchers will be sent since your event is not live or is not "
"selling tickets."
msgstr ""
"Momenteel zullen er geen vouchers worden verzonden, omdat je evenement niet "
"live is of geen kaartjes verkoopt."
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:41
msgid ""
@@ -18126,12 +18082,8 @@ msgid "The selected exporter was not found."
msgstr "De gekozen exporteerder was niet gevonden."
#: pretix/control/views/orders.py:2117
#, fuzzy
#| msgid ""
#| "There was a problem processing your input. See below for error details."
msgid "There was a problem processing your input:"
msgstr ""
"Er was een probleem met het verwerken van je invoer. Zie onder voor details."
msgstr "Er is een probleem opgetreden bij het verwerken van je invoer:"
#: pretix/control/views/orders.py:2213
msgid "All orders have been canceled."
@@ -18888,10 +18840,8 @@ msgstr ""
"bevestigingspagina voor openstaande bestellingen."
#: pretix/plugins/banktransfer/payment.py:135
#, fuzzy
#| msgid "All open refunds"
msgid "IBAN blocklist for refunds"
msgstr "Alle openstaande terugbetalingen"
msgstr "IBAN-blokkadelijst voor terugbetalingen"
#: pretix/plugins/banktransfer/payment.py:138
msgid ""
@@ -18901,6 +18851,12 @@ msgid ""
"country codes such as \"GB\" if you never want to send refunds to IBANs from "
"a specific country."
msgstr ""
"Voer hier één IBAN of IBAN-prefix per regel in. Het systeem zal niet "
"proberen om terugbetalingen te sturen naar deze rekeningnummers. Dit kan "
"handig zijn als je bijvoorbeeld een groot aantal \"doorgestuurde betalingen\""
" ontvangt van een derde partij zoals een betalingsprovider. Je kan hier ook "
"landcodes zoals \"GB\" of \"NL\" invullen als je nooit automatisch "
"terugbetalingen wilt overmaken naar IBANs uit een bepaald land."
#: pretix/plugins/banktransfer/payment.py:176
msgid "Please fill out your bank account details."
@@ -18936,10 +18892,9 @@ msgid "Invalid IBAN/BIC"
msgstr "Ongeldig IBAN/BIC"
#: pretix/plugins/banktransfer/payment.py:313
#, fuzzy, python-brace-format
#| msgid "Bank account type"
#, python-brace-format
msgid "Bank account {iban}"
msgstr "Bankrekeningtype"
msgstr "Bankrekening {iban}"
#: pretix/plugins/banktransfer/payment.py:329
msgid "Can only create a bank transfer refund from an existing payment."
@@ -18948,16 +18903,12 @@ msgstr ""
"betaling gestart worden."
#: pretix/plugins/banktransfer/payment.py:349
#, fuzzy
#| msgid "(optional)"
msgid "BIC (optional)"
msgstr "(optioneel)"
msgstr "BIC (optioneel)"
#: pretix/plugins/banktransfer/payment.py:388
#, fuzzy
#| msgid "Your input was invalid, please try again."
msgid "Your input was invalid, please see below for details."
msgstr "Je invoer was ongeldig, probeer het opnieuw."
msgstr "Je invoer was ongeldig, zie hieronder voor details."
#: pretix/plugins/banktransfer/refund_export.py:25
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:5
@@ -20533,10 +20484,9 @@ msgstr "onbekende naam"
#: pretix/plugins/stripe/payment.py:949 pretix/plugins/stripe/payment.py:1001
#: pretix/plugins/stripe/payment.py:1116 pretix/plugins/stripe/payment.py:1268
#: pretix/plugins/stripe/payment.py:1371
#, fuzzy, python-brace-format
#| msgid "Bank account type"
#, python-brace-format
msgid "Bank account at {bank}"
msgstr "Bankrekeningtype"
msgstr "Bankrekening bij {bank}"
#: pretix/plugins/stripe/payment.py:957
msgid "iDEAL via Stripe"
@@ -20579,10 +20529,9 @@ msgid "Spain"
msgstr "Spanje"
#: pretix/plugins/stripe/payment.py:1193
#, fuzzy, python-brace-format
#| msgid "Bank account details"
#, python-brace-format
msgid "Bank account {iban} at {bank}"
msgstr "Bankrekeninginformatie"
msgstr "Bankrekening {iban} bij {bank}"
#: pretix/plugins/stripe/payment.py:1204
msgid "EPS via Stripe"
@@ -22159,6 +22108,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:161
msgid "The following payment methods will be used to refund the money to you:"
msgstr ""
"De volgende betalingsmethoden zullen worden gebruikt om je terugbetaling uit "
"te voeren:"
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:141
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:172
@@ -22549,10 +22500,8 @@ msgid "You chose an invalid cancellation fee."
msgstr "Je hebt een ongeldig bedrag voor de annuleringskosten gekozen."
#: pretix/presale/views/order.py:869
#, fuzzy
#| msgid "Any customer"
msgid "Canceled by customer"
msgstr "Iedere klant"
msgstr "Geannuleerd door klant"
#: pretix/presale/views/order.py:880
msgid "The cancellation has been requested."
@@ -22593,6 +22542,11 @@ msgid ""
"{number} hours. If the email did not arrive, please your check spam folder "
"and also double check that you used the correct email address."
msgstr ""
"Als het e-mailadres dat je invoerde geldig is en is gekoppeld aan een "
"kaartje hebben we je in de afgelopen {number} uur al een link naar je "
"kaartje gestuurd. Controleer als je nog geen mail hebt ontvangen of het "
"bericht misschien in je ongewenste e-mail terecht is gekomen en of je het "
"juiste e-mailadres hebt ingevuld."
#: pretix/presale/views/user.py:49
msgid "Your orders for {}"
+1 -1
View File
@@ -581,7 +581,7 @@ class OrderTaxListReport(MultiSheetListExporter):
if date_until:
if isinstance(date_until, str):
date_from = parse(date_until).date()
date_until = parse(date_until).date()
if isinstance(date_until, date):
date_until = make_aware(datetime.combine(
date_until + timedelta(days=1),
+1 -1
View File
@@ -695,7 +695,7 @@ class PaymentStep(CartMixin, TemplateFlowStep):
@cached_property
def provider_forms(self):
providers = []
for provider in self.request.event.get_payment_providers().values():
for provider in sorted(self.request.event.get_payment_providers().values(), key=lambda p: str(p.public_name)):
if not provider.is_enabled or not self._is_allowed(provider, self.request):
continue
fee = provider.calculate_fee(self._total_order_value)
+7 -2
View File
@@ -14,8 +14,8 @@ from pretix.helpers.i18n import (
from ..base.i18n import get_language_without_region
from .signals import (
footer_link, global_html_footer, global_html_head, global_html_page_header,
html_footer, html_head, html_page_header,
footer_link, global_footer_link, global_html_footer, global_html_head,
global_html_page_header, html_footer, html_head, html_page_header,
)
logger = logging.getLogger(__name__)
@@ -65,6 +65,11 @@ def _default_context(request):
_html_head.append(response)
for receiver, response in global_html_footer.send(None, request=request):
_html_foot.append(response)
for receiver, response in global_footer_link.send(None, request=request):
if isinstance(response, list):
_footer += response
else:
_footer.append(response)
if hasattr(request, 'event') and get_scope():
for receiver, response in html_head.send(request.event, request=request):
+8
View File
@@ -105,6 +105,14 @@ are expected to return a dictionary containing the keys ``label`` and ``url``.
As with all plugin signals, the ``sender`` keyword argument will contain the event.
"""
global_footer_link = Signal(
providing_args=["request"]
)
"""
The signal ``pretix.presale.signals.global_footer_link`` allows you to add links to the footer of any page. You
are expected to return a dictionary containing the keys ``label`` and ``url``.
"""
checkout_confirm_messages = EventPluginSignal()
"""
This signal is sent out to retrieve short messages that need to be acknowledged by the user before the
@@ -3,6 +3,7 @@
{% load static %}
{% load thumb %}
{% load eventurl %}
{% load safelink %}
{% block thetitle %}
{% block title %}{% endblock %}{% if url_name != "organizer.index" %} :: {% endif %}{{ organizer.name }}
{% endblock %}
@@ -64,4 +65,11 @@
{% endblock %}
{% endblock %}
{% block footer %}
{% if not request.event and request.organizer.settings.contact_mail %}
<a href="mailto:{{ request.organizer.settings.contact_mail }}">{% trans "Contact event organizer" %}</a> &middot;
{% endif %}
{% if not request.event and request.organizer.settings.imprint_url %}
<a href="{% safelink request.organizer.settings.imprint_url %}" target="_blank" rel="noopener">{% trans "Imprint" %}</a>
&middot;
{% endif %}
{% endblock %}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
//! moment-timezone.js
//! version : 0.5.31
//! version : 0.5.32
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
@@ -29,7 +29,7 @@
// return moment;
// }
var VERSION = "0.5.31",
var VERSION = "0.5.32",
zones = {},
links = {},
countries = {},
File diff suppressed because it is too large Load Diff
@@ -1503,7 +1503,7 @@ var shared_root_computed = {
return form_target
},
useIframe: function () {
return Math.min(screen.width, window.innerWidth) >= 800 && (this.skip_ssl || site_is_secure());
return !this.disable_iframe && Math.min(screen.width, window.innerWidth) >= 800 && (this.skip_ssl || site_is_secure());
},
showPrices: function () {
var has_priced = false;
@@ -1574,6 +1574,7 @@ var create_widget = function (element) {
var subevent = element.attributes.subevent ? element.attributes.subevent.value : null;
var style = element.attributes.style ? element.attributes.style.value : null;
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
var disable_iframe = element.attributes["disable-iframe"] ? true : false;
var disable_vouchers = element.attributes["disable-vouchers"] ? true : false;
var widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data));
var filter = element.attributes.filter ? element.attributes.filter.value : null;
@@ -1611,6 +1612,7 @@ var create_widget = function (element) {
voucher_explanation_text: null,
show_variations_expanded: false,
skip_ssl: skip_ssl,
disable_iframe: disable_iframe,
style: style,
error: null,
weeks: null,
@@ -1652,6 +1654,7 @@ var create_button = function (element) {
var subevent = element.attributes.subevent ? element.attributes.subevent.value : null;
var raw_items = element.attributes.items ? element.attributes.items.value : "";
var skip_ssl = element.attributes["skip-ssl-check"] ? true : false;
var disable_iframe = element.attributes["disable-iframe"] ? true : false;
var button_text = element.innerHTML;
var widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data));
for (var i = 0; i < element.attributes.length; i++) {
@@ -1682,6 +1685,7 @@ var create_button = function (element) {
subevent: subevent,
is_button: true,
skip_ssl: skip_ssl,
disable_iframe: disable_iframe,
voucher_code: voucher,
items: items,
error: null,
@@ -1728,7 +1732,7 @@ window.PretixWidget.buildWidgets = function () {
});
};
window.PretixWidget.open = function (target_url, voucher, subevent, items, widget_data, skip_ssl_check) {
window.PretixWidget.open = function (target_url, voucher, subevent, items, widget_data, skip_ssl_check, disable_iframe) {
if (!target_url.match(/\/$/)) {
target_url += "/";
}
@@ -1749,6 +1753,7 @@ window.PretixWidget.open = function (target_url, voucher, subevent, items, widge
subevent: subevent || null,
is_button: true,
skip_ssl: skip_ssl_check || false,
disable_iframe: disable_iframe || false,
voucher_code: voucher || null,
items: items || [],
error: null,
+11398 -9490
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -11,7 +11,7 @@ django-compressor==2.4.*
django-hierarkey==1.0.*,>=1.0.4
django-filter==2.2.*
django-scopes==1.2.*
reportlab>=3.5.18*
reportlab>=3.5.18
PyPDF2==1.26.*
Pillow==7.*
django-libsass==0.8
@@ -32,7 +32,7 @@ dj-static
csscompressor
django-markup
markdown==3.3.*
bleach>=3.1.4,<3.2.0
bleach==3.3.*
sentry-sdk==0.14.*
babel
django-i18nfield>=1.7.0
+1 -1
View File
@@ -121,7 +121,7 @@ setup(
'csscompressor',
'django-markup',
'markdown==3.3.*',
'bleach>=3.1.4,<3.2.0',
'bleach==3.3.*',
'sentry-sdk==0.14.*',
'babel',
'paypalrestsdk==1.13.*',
File diff suppressed because it is too large Load Diff
+64 -64
View File
@@ -178,11 +178,11 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
assert len(doc.select(".cart-row")) > 0
assert "pending" in doc.select(".label-warning")[0].text.lower()
assert "Peter" in response.rendered_content
assert "Lukas" not in response.rendered_content
assert "Peter" in response.content.decode()
assert "Lukas" not in response.content.decode()
def test_ticket_detail(self):
response = self.client.get(
@@ -190,11 +190,11 @@ class OrdersTest(BaseOrdersTest):
self.ticket_pos.positionid, self.ticket_pos.web_secret)
)
assert response.status_code == 200
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
assert len(doc.select(".cart-row")) > 0
assert "pending" in doc.select(".label-warning")[0].text.lower()
assert "Peter" in response.rendered_content
assert "Lukas" not in response.rendered_content
assert "Peter" in response.content.decode()
assert "Lukas" not in response.content.decode()
def test_orders_modify_invalid(self):
self.order.status = Order.STATUS_CANCELED
@@ -212,7 +212,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select('input[name="%s-attendee_name_parts_0"]' % self.ticket_pos.id)), 1)
# Not all fields filled out, expect success
@@ -234,17 +234,17 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select('input[name="%s-attendee_name_parts_0"]' % self.ticket_pos.id)), 1)
assert "Peter" in response.rendered_content
assert "Lukas" not in response.rendered_content
assert "Peter" in response.content.decode()
assert "Lukas" not in response.content.decode()
# Not all required fields filled out, expect failure
response = self.client.post(
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
'%s-attendee_name_parts_0' % self.ticket_pos.id: '',
}, follow=True)
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
response = self.client.post(
@@ -264,7 +264,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret))
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select('input[name="%s-question_%s"]' % (
self.ticket_pos.id, self.question.id))), 1)
@@ -288,7 +288,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get('/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code,
self.order.secret))
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertEqual(len(doc.select('input[name="%s-question_%s"]' % (
self.ticket_pos.id, self.question.id))), 1)
@@ -297,7 +297,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/modify' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
'%s-question_%s' % (self.ticket_pos.id, self.question.id): '',
}, follow=True)
doc = BeautifulSoup(response.rendered_content, "lxml")
doc = BeautifulSoup(response.content.decode(), "lxml")
self.assertGreaterEqual(len(doc.select('.has-error')), 1)
response = self.client.post(
@@ -361,7 +361,7 @@ class OrdersTest(BaseOrdersTest):
r = self.client.post(
'/%s/%s/order/%s/%s/cancel' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
}, follow=True)
assert 'btn-danger' not in r.rendered_content
assert 'btn-danger' not in r.content.decode()
self.client.post(
'/%s/%s/order/%s/%s/cancel/do' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret), {
}, follow=True)
@@ -438,8 +438,8 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/cancel' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
assert 'manually' not in response.rendered_content
assert "gift card" in response.rendered_content
assert 'manually' not in response.content.decode()
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), {
'giftcard': 'true'
@@ -448,7 +448,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code,
self.order.secret),
target_status_code=200)
assert "gift card" in response.rendered_content
assert "gift card" in response.content.decode()
self.order.refresh_from_db()
assert self.order.status == Order.STATUS_PAID
assert self.order.total == Decimal('3.00')
@@ -469,8 +469,8 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/cancel' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
assert 'manually' not in response.rendered_content
assert "gift card" in response.rendered_content
assert 'manually' not in response.content.decode()
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), {
'giftcard': 'false'
@@ -479,7 +479,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code,
self.order.secret),
target_status_code=200)
assert "gift card" in response.rendered_content
assert "gift card" in response.content.decode()
self.order.refresh_from_db()
assert self.order.status == Order.STATUS_PAID
assert self.order.total == Decimal('3.00')
@@ -499,7 +499,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/cancel' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
assert 'manually' not in response.rendered_content
assert 'manually' not 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), {
}, follow=True)
@@ -577,13 +577,13 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
assert 'cancellation fee of <strong>€3.00</strong>' in response.rendered_content
assert 'cancellation fee of <strong>€3.00</strong>' in response.content.decode()
response = self.client.get(
'/%s/%s/order/%s/%s/cancel' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
assert 'manually' in response.rendered_content
assert '20.00' in response.rendered_content
assert 'manually' in response.content.decode()
assert '20.00' 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), {
}, follow=True)
@@ -610,7 +610,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.post(
'/%s/%s/order/%s/%s/invoice' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{}, follow=True)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_invoice_create_duplicate(self):
self.event.settings.set('invoice_generate', 'user')
@@ -619,7 +619,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.post(
'/%s/%s/order/%s/%s/invoice' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{}, follow=True)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_invoice_create_wrong_secret(self):
self.event.settings.set('invoice_generate', 'user')
@@ -635,7 +635,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.post(
'/%s/%s/order/%s/%s/invoice' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{}, follow=True)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
with scopes_disabled():
assert not self.order.invoices.exists()
@@ -647,7 +647,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.post(
'/%s/%s/order/%s/%s/invoice' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{}, follow=True)
assert 'alert-success' in response.rendered_content
assert 'alert-success' in response.content.decode()
with scopes_disabled():
assert self.order.invoices.exists()
@@ -787,7 +787,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_pay_wrong_payment_state(self):
with scopes_disabled():
@@ -801,19 +801,19 @@ class OrdersTest(BaseOrdersTest):
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
response = self.client.get(
'/%s/%s/order/%s/%s/pay/%d/confirm' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret,
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
response = self.client.get(
'/%s/%s/order/%s/%s/pay/%d/complete' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret,
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_pay_wrong_order_state(self):
self.order.status = Order.STATUS_PAID
@@ -829,19 +829,19 @@ class OrdersTest(BaseOrdersTest):
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
response = self.client.get(
'/%s/%s/order/%s/%s/pay/%d/confirm' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret,
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
response = self.client.get(
'/%s/%s/order/%s/%s/pay/%d/complete' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret,
p.pk),
follow=True
)
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_pay_change_link(self):
self.order.status = Order.STATUS_PAID
@@ -856,7 +856,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
follow=True
)
assert '/pay/change' not in response.rendered_content
assert '/pay/change' not in response.content.decode()
self.order.status = Order.STATUS_PENDING
self.order.save()
p.state = OrderPayment.PAYMENT_STATE_PENDING
@@ -865,14 +865,14 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
follow=True
)
assert '/pay/change' in response.rendered_content
assert '/pay/change' in response.content.decode()
p.provider = 'testdummy'
p.save()
response = self.client.get(
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
follow=True
)
assert '/pay/change' not in response.rendered_content
assert '/pay/change' not in response.content.decode()
def test_change_paymentmethod_partial(self):
self.event.settings.set('payment_banktransfer__enabled', True)
@@ -890,8 +890,8 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Test dummy' in response.rendered_content
assert '+ €1.30' in response.rendered_content
assert 'Test dummy' in response.content.decode()
assert '+ €1.30' in response.content.decode()
self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -933,8 +933,8 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Test dummy' in response.rendered_content
assert '+ €1.30' in response.rendered_content
assert 'Test dummy' in response.content.decode()
assert '+ €1.30' in response.content.decode()
self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -1033,8 +1033,8 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Test dummy' in response.rendered_content
assert '- €1.40' in response.rendered_content
assert 'Test dummy' in response.content.decode()
assert '- €1.40' in response.content.decode()
self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -1068,8 +1068,8 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Test dummy' in response.rendered_content
assert '+ €12.00' in response.rendered_content
assert 'Test dummy' in response.content.decode()
assert '+ €12.00' in response.content.decode()
self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -1101,7 +1101,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Gift card' in response.rendered_content
assert 'Gift card' in response.content.decode()
response = self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -1146,7 +1146,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "You cannot pay with gift cards when buying a gift card." in response.rendered_content
assert "You cannot pay with gift cards when buying a gift card." in response.content.decode()
def test_change_paymentmethod_giftcard_wrong_currency(self):
with scopes_disabled():
@@ -1159,7 +1159,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "This gift card does not support this currency." in response.rendered_content
assert "This gift card does not support this currency." in response.content.decode()
def test_change_paymentmethod_giftcard_in_test_mode(self):
with scopes_disabled():
@@ -1174,7 +1174,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "Only test gift cards can be used in test mode." in response.rendered_content
assert "Only test gift cards can be used in test mode." in response.content.decode()
def test_change_paymentmethod_giftcard_not_in_test_mode(self):
with scopes_disabled():
@@ -1187,7 +1187,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "This gift card can only be used in test mode." in response.rendered_content
assert "This gift card can only be used in test mode." in response.content.decode()
def test_change_paymentmethod_giftcard_empty(self):
with scopes_disabled():
@@ -1199,7 +1199,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "All credit on this gift card has been used." in response.rendered_content
assert "All credit on this gift card has been used." in response.content.decode()
def test_change_paymentmethod_giftcard_wrong_organizer(self):
with scopes_disabled():
@@ -1214,7 +1214,7 @@ class OrdersTest(BaseOrdersTest):
'giftcard': gc.secret
}
)
assert "This gift card is not known." in response.rendered_content
assert "This gift card is not known." in response.content.decode()
def test_change_paymentmethod_giftcard(self):
with scopes_disabled():
@@ -1228,7 +1228,7 @@ class OrdersTest(BaseOrdersTest):
response = self.client.get(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
)
assert 'Gift card' in response.rendered_content
assert 'Gift card' in response.content.decode()
response = self.client.post(
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret),
{
@@ -1275,7 +1275,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/' % (self.orga.slug, self.event.slug, self.order.code, self.order.secret)
)
assert response.status_code == 200
match = re.search(r"\?token=([^'\"&]+)", response.rendered_content)
match = re.search(r"\?token=([^'\"&]+)", response.content.decode())
assert match
response = self.client.get(
@@ -1349,7 +1349,7 @@ class OrdersTest(BaseOrdersTest):
f'op-{self.ticket_pos.pk}-itemvar': f'{self.ticket.pk}',
}, follow=True)
assert response.status_code == 200
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
shirt_pos.variation = self.shirt_blue
shirt_pos.price = Decimal('12.00')
@@ -1387,7 +1387,7 @@ class OrdersTest(BaseOrdersTest):
follow=True
)
shirt_pos.refresh_from_db()
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
assert shirt_pos.variation == self.shirt_blue
assert shirt_pos.price == Decimal('14.00')
@@ -1412,7 +1412,7 @@ class OrdersTest(BaseOrdersTest):
f'op-{self.ticket_pos.pk}-itemvar': f'{self.ticket.pk}',
}, follow=True)
assert response.status_code == 200
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
shirt_pos.variation = self.shirt_blue
shirt_pos.price = Decimal('12.00')
@@ -1450,7 +1450,7 @@ class OrdersTest(BaseOrdersTest):
follow=True
)
shirt_pos.refresh_from_db()
assert 'alert-success' in response.rendered_content
assert 'alert-success' in response.content.decode()
assert shirt_pos.variation == self.shirt_red
assert shirt_pos.price == Decimal('14.00')
@@ -1475,7 +1475,7 @@ class OrdersTest(BaseOrdersTest):
f'op-{self.ticket_pos.pk}-itemvar': f'{self.ticket.pk}',
}, follow=True)
assert response.status_code == 200
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_change_variation_require_same_product(self):
self.event.settings.change_allow_user_variation = True
@@ -1498,7 +1498,7 @@ class OrdersTest(BaseOrdersTest):
f'op-{self.ticket_pos.pk}-itemvar': f'{self.ticket.pk}',
}, follow=True)
assert response.status_code == 200
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
def test_change_variation_require_quota(self):
self.event.settings.change_allow_user_variation = True
@@ -1526,7 +1526,7 @@ class OrdersTest(BaseOrdersTest):
f'op-{self.ticket_pos.pk}-itemvar': f'{self.ticket.pk}',
}, follow=True)
assert response.status_code == 200
assert 'alert-danger' in response.rendered_content
assert 'alert-danger' in response.content.decode()
q.variations.add(self.shirt_blue)
@@ -1574,7 +1574,7 @@ class OrdersTest(BaseOrdersTest):
'/%s/%s/order/%s/%s/pay/change' % (self.orga.slug, self.event.slug, self.order.code,
self.order.secret),
target_status_code=200)
assert 'The order has been changed. You can now proceed by paying the open amount of €2.00.' in response.rendered_content
assert 'The order has been changed. You can now proceed by paying the open amount of €2.00.' in response.content.decode()
shirt_pos.refresh_from_db()
assert shirt_pos.variation == self.shirt_red
assert shirt_pos.price == Decimal('14.00')