Compare commits

...

48 Commits

Author SHA1 Message Date
Richard Schreiber
7c9ddbaed4 [A11y] widget fix filter dropdown auto-submit not allowed 2025-05-14 15:39:09 +02:00
Richard Schreiber
c17a090244 [A11y] Fix color-contrast for info/error-texts in widget (#5105) 2025-05-14 15:06:38 +02:00
Richard Schreiber
d103d8782b [A11y] fix calendar nav dropdown (#5078)
* [A11y] fix calendar nav dropdown

* update organizer calender

* keep cal-nav on one line

* simplify html

* unify calendar layouts

* fix rounding issue with .input-group select+button

* add comment to explain complex css

* fix calendar dropdown due to too broad css-selector

* reduce spacing of top-nav

* fix input-group-btn double line through rounding issue
2025-05-14 10:01:16 +02:00
Luca Sorace "Stranck
4f4903b00e Metrics: Fix Content Type header (#5099)
* Metrics: Fix Content Type header

Now it follows the PrometheusText1.0.0 ContentType header specified from their code: 32d306854b/config/config.go (L516-L529)

* Update src/pretix/base/views/metrics.py

---------

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2025-05-13 18:42:02 +02:00
Richard Schreiber
caf291630c [A11y] add skip-link to main content (#5087)
* [A11y] add skip-link to main content

* fix contrast for skip-link

* fix overlay with back-to-organizer-link

* add fallback if no main-element

* update nav-label
2025-05-13 13:37:21 +02:00
Richard Schreiber
6d0368a1bb Fix page-header-links outline color contrast (#5096) 2025-05-13 13:36:45 +02:00
Richard Schreiber
57d33e1eb1 [A11y] fix issues with labels and tabindex in widget (#5083) 2025-05-13 13:36:11 +02:00
Raphael Michel
e6ec4cb435 Adjust headlines aside from front page (#5098) 2025-05-13 10:51:34 +02:00
Raphael Michel
6043a96575 Fix weird markup on "resend link" page (#5097) 2025-05-13 10:43:26 +02:00
Raphael Michel
5bc1fb8e81 Allow to set multiple email invoice recipients (Z#23190766) (#5090) 2025-05-13 10:31:07 +02:00
Raphael Michel
47c840b9e5 Check-in log: Correctly use name from parent product (Z#23192134) (#5091) 2025-05-13 10:10:18 +02:00
Richard Schreiber
b6007a1af4 [A11y] fix widget buy button being disabled (#5084)
* [A11y] fix widget buy button being disabled

* make dialog an alertdialog for better close-button support
2025-05-13 10:00:35 +02:00
Raphael Michel
1caa71cdbe Improve validation of Norwegian VAT IDs (#5089) 2025-05-12 17:04:58 +02:00
Richard Schreiber
1f2a0278c0 [A11y] replace b with strong for better semantics (#5086) 2025-05-12 16:43:08 +02:00
Raphael Michel
cf51c879c7 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de_Informal/

powered by weblate
2025-05-12 16:43:02 +02:00
Raphael Michel
1030e2dc1f Translations: Update German
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2025-05-12 16:43:02 +02:00
Hijiri Umemoto
8d320b24a5 Translations: Update Japanese
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ja/

powered by weblate
2025-05-12 16:43:02 +02:00
Hijiri Umemoto
8235132de8 Translations: Update Japanese
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Luca Hammer
2614f12faf Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Richard Schreiber
6f92f2324f Fix JavaScript-based required label 2025-05-12 16:35:18 +02:00
Hijiri Umemoto
aaef7579d9 Translations: Update Japanese
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ja/

powered by weblate
2025-05-09 11:20:27 +02:00
Hijiri Umemoto
6b1077f881 Translations: Update Japanese
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화
6154b7fae0 Translations: Update Korean
Currently translated at 99.5% (243 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ko/

powered by weblate
2025-05-09 11:20:27 +02:00
조정화
f43be3079f Translations: Update Korean
Currently translated at 34.1% (2003 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화
3abe82ec77 Translations: Update Korean
Currently translated at 23.2% (1363 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화
7b30902963 Translations: Update Korean
Currently translated at 97.1% (237 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ko/

powered by weblate
2025-05-09 11:20:27 +02:00
조정화
a885c8d2e5 Translations: Update Korean
Currently translated at 22.2% (1303 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Zona Vip
0ae98f072a Translations: Update Spanish
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
KC Tseng
9b1a723001 Translations: Update Chinese (Traditional Han script)
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/zh_Hant/

powered by weblate
2025-05-09 11:20:27 +02:00
KC Tseng
46d7799cd0 Translations: Update Chinese (Traditional Han script)
Currently translated at 96.7% (5678 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael Michel
fcb67ec4b5 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael Michel
c7565e7c8b Translations: Update German
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]
2316cb557a Translations: Update Italian
Currently translated at 72.5% (177 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/it/

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]
4de75f3ba5 Translations: Update Italian
Currently translated at 36.6% (2150 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Pekka Sarkola
cb972cd6ca Translations: Update Finnish
Currently translated at 67.4% (3958 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]
3354ccf78a Translations: Update Italian
Currently translated at 36.4% (2141 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael Michel
f17038101c Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael Michel
8e343898b4 Translations: Update German
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Foxy Hunter
09dc504c87 Translations: Update Dutch
Currently translated at 100.0% (244 of 244 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/

powered by weblate
2025-05-09 11:20:27 +02:00
Foxy Hunter
d780d1d25c Translations: Update Dutch
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael Michel
5522d67f9b API: Fix old meta values being returned when updating event (fixes #5077) (#5080) 2025-05-09 08:59:40 +02:00
Richard Schreiber
7472564c26 [A11y] Fix sneak-peek for cart (#5076) 2025-05-09 08:38:34 +02:00
Richard Schreiber
2b735bec0b [A11y] Improve customer account forms (#5034) 2025-05-09 08:36:09 +02:00
Phin Wolkwitz
3e335bcbfe Presale: Hide subevent lists if subevents exist but none are visible (Z#23186153) (#5054)
* Hide subevent lists (but not calendars) if subevents exist but none are visible, to avoid confusion during checkout
2025-05-07 13:36:50 +02:00
Richard Schreiber
f676a77536 Remove line-break before "required" in label on small screens (#5074) 2025-05-07 12:04:27 +02:00
Richard Schreiber
c487373340 [A11y] validate dates only server-side for better error message support (#5073) 2025-05-07 12:03:46 +02:00
Richard Schreiber
3e05463486 [A11y] Remove unnecessary "required" help-text in questions-step (#5075) 2025-05-06 18:20:26 +02:00
Raphael Michel
31bb0f4a91 Product list: Show icon for seated products (#5015)
* Product list: Show icon for seated products

* Use updated seat icon

* Update src/pretix/static/pretixbase/scss/_theme.scss

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-06 11:14:28 +02:00
75 changed files with 2960 additions and 1993 deletions

View File

@@ -378,6 +378,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in meta_data:
current_object.delete()
instance._prefetched_objects_cache.clear()
# Item Meta properties
if item_meta_properties is not None:
current = list(event.item_meta_properties.all())
@@ -398,6 +400,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in list(item_meta_properties.keys()):
prop.delete()
instance._prefetched_objects_cache.clear()
# Seats
if seat_category_mapping is not None or ('seating_plan' in validated_data and validated_data['seating_plan'] is None):
current_mappings = {

View File

@@ -531,7 +531,7 @@ def send_invoices_to_organizer(sender, **kwargs):
if i.event.settings.invoice_email_organizer:
with language(i.event.settings.locale):
mail(
email=i.event.settings.invoice_email_organizer,
email=[e.strip() for e in i.event.settings.invoice_email_organizer.split(",")],
subject=_('New invoice: {number}').format(number=i.number),
template=LazyI18nString.from_gettext(_(
'Hello,\n\n'

View File

@@ -62,6 +62,9 @@ class VATIDTemporaryError(VATIDError):
def _validate_vat_id_NO(vat_id, country_code):
# Inspired by vat_moss library
if not vat_id.startswith("NO"):
# prefix is not usually used in Norway, but expected by vat_moss library
vat_id = "NO" + vat_id
try:
vat_id = vat_moss.id.normalize(vat_id)
except ValueError:

View File

@@ -71,6 +71,7 @@ from pretix.base.reldate import (
RelativeDateField, RelativeDateTimeField, RelativeDateWrapper,
SerializerRelativeDateField, SerializerRelativeDateTimeField,
)
from pretix.base.validators import multimail_validate
from pretix.control.forms import (
ExtFileField, FontSelect, MultipleLanguagesWidget, SingleLanguageWidget,
)
@@ -1233,14 +1234,18 @@ DEFAULTS = {
'invoice_email_organizer': {
'default': '',
'type': str,
'form_class': forms.EmailField,
'serializer_class': serializers.EmailField,
'form_class': forms.CharField,
'serializer_class': serializers.CharField,
'form_kwargs': dict(
label=_("Email address to receive a copy of each invoice"),
help_text=_("Each newly created invoice will be sent to this email address shortly after creation. You can "
"use this for an automated import of invoices to your accounting system. The invoice will be "
"the only attachment of the email."),
)
validators=[multimail_validate],
),
'serializer_kwargs': dict(
validators=[multimail_validate],
),
},
'show_items_outside_presale_period': {
'default': 'True',

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14"
class="{{ cls }}">
<path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
<path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 636 B

View File

@@ -80,4 +80,4 @@ def serve_metrics(request):
content = "\n".join(output) + "\n"
return HttpResponse(content)
return HttpResponse(content, content_type="text/plain;version=1.0.0;escaping=allow-utf-8")

View File

@@ -85,7 +85,7 @@
<div class="checkbox">
<label>
<input type="checkbox" name="delete" value="yes" />
<b>{% trans "Permanently delete all orders created in test mode" %}</b>
<strong>{% trans "Permanently delete all orders created in test mode" %}</strong>
</label>
</div>
<div class="text-right">

View File

@@ -40,6 +40,7 @@
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="text-right flip">{% trans "Default price" %}</th>
<th class="action-col-2"><span class="sr-only">Edit</span></th>
</tr>
@@ -111,6 +112,14 @@
<span class="fa fa-bars fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span>
{% endif %}
</td>
<td>
{% if i.requires_seat %}
<span data-toggle="tooltip"
title="{% if request.event.has_subevents %}{% trans "Product assigned to seating plan for one or more dates" context "subevent" %}{% else %}{% trans "Product assigned to seating plan" %}{% endif %}">
{% include "icons/seat.svg" with cls="svg-icon text-muted" %}
</span>
{% endif %}
</td>
<td>
{% if i.category.is_addon %}
<span class="fa fa-plus-square fa-fw text-muted" data-toggle="tooltip"

View File

@@ -413,10 +413,7 @@
{% endif %}
{% if line.seat %}
<br />
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{% include "icons/seat.svg" with cls="svg-icon" %}
{{ line.seat }}
{% endif %}
{% if line.voucher %}

View File

@@ -65,7 +65,7 @@ from pretix.api.serializers.item import (
from pretix.base.forms import I18nFormSet
from pretix.base.models import (
CartPosition, Item, ItemCategory, ItemVariation, Order, Question,
QuestionAnswer, QuestionOption, Quota, Voucher,
QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher,
)
from pretix.base.models.event import SubEvent
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
@@ -101,10 +101,16 @@ class ItemList(ListView):
template_name = 'pretixcontrol/items/index.html'
def get_queryset(self):
requires_seat = Exists(
SeatCategoryMapping.objects.filter(
product_id=OuterRef('pk'),
)
)
return Item.objects.filter(
event=self.request.event
).select_related("tax_rule").annotate(
var_count=Count('variations')
var_count=Count('variations'),
requires_seat=requires_seat,
).prefetch_related("category", "limit_sales_channels").order_by(
F('category__position').asc(nulls_first=True),
'category', 'position'

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14">
<path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
<path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 668 B

View File

@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n"
"PO-Revision-Date: 2025-05-06 16:20+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 5.11\n"
"X-Generator: Weblate 5.11.1\n"
"X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n"
#: pretix/_base_settings.py:87
@@ -6103,7 +6103,7 @@ msgstr "Zertifikat"
#: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390
#: pretix/control/views/event.py:395
msgid "Other"
msgstr "Sonstiges"
msgstr "Sonstige"
#: pretix/base/models/organizer.py:79
msgid ""
@@ -15355,7 +15355,7 @@ msgstr ""
#: pretix/control/forms/organizer.py:195
msgid "You need to choose an event."
msgstr "Sie müssen eine Veranstaltung auswählen."
msgstr "Sie müssen eine Veranstaltung wählen."
#: pretix/control/forms/organizer.py:227
msgid "You may set only one organizer domain."
@@ -28084,7 +28084,7 @@ msgstr "Alternative Veranstalterdomain für einzelne Veranstaltungen"
#: pretix/multidomain/models.py:38
msgid "Event domain"
msgstr "Veranstaltungsdomain"
msgstr "Veranstaltungs-Domain"
#: pretix/multidomain/models.py:44
msgid "Domain name"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n"
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
"de/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -742,7 +742,7 @@ msgstr "Bitte tragen Sie eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "verpflichtend"
msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"PO-Revision-Date: 2025-05-09 22:00+0000\n"
"Last-Translator: Luca Hammer <hammer@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n"
"Language: de_Informal\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -6099,7 +6099,7 @@ msgstr "Zertifikat"
#: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390
#: pretix/control/views/event.py:395
msgid "Other"
msgstr "Sonstiges"
msgstr "Sonstige"
#: pretix/base/models/organizer.py:79
msgid ""
@@ -9464,10 +9464,10 @@ msgstr ""
"die Kurzform der Veranstaltung verwendet, gefolgt von einem Bindestrich. "
"Achtung: Wenn mehrere Veranstaltungen des selben Veranstalters den selben "
"Wert in diesem Feld nutzen, teilen sie sich den Nummernkreis, d.h. jede "
"vollständige Rechnungsnummer wird pro Veranstalter nur einmal ergeben. Diese "
"Einstellung betrifft nur zukünftige Rechnungen. Du kannst die Platzhalter %Y "
"(mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das Jahr der "
"Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat."
"vollständige Rechnungsnummer wird pro Veranstalter nur einmal vergeben. "
"Diese Einstellung betrifft nur zukünftige Rechnungen. Du kannst die "
"Platzhalter %Y (mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das "
"Jahr der Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat."
#: pretix/base/settings.py:697 pretix/base/settings.py:719
#, python-brace-format
@@ -15329,7 +15329,7 @@ msgstr ""
#: pretix/control/forms/organizer.py:195
msgid "You need to choose an event."
msgstr "Du musst eine Veranstaltung auswählen."
msgstr "Du musst eine Veranstaltung wählen."
#: pretix/control/forms/organizer.py:227
msgid "You may set only one organizer domain."
@@ -28036,7 +28036,7 @@ msgstr "Alternative Veranstalterdomain für einzelne Veranstaltungen"
#: pretix/multidomain/models.py:38
msgid "Event domain"
msgstr "Veranstaltungsdomain"
msgstr "Veranstaltungs-Domain"
#: pretix/multidomain/models.py:44
msgid "Domain name"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-28 12:21+0000\n"
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix-js/de_Informal/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -741,7 +741,7 @@ msgstr "Bitte trage eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "verpflichtend"
msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-29 18:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"PO-Revision-Date: 2025-05-07 06:00+0000\n"
"Last-Translator: Zona Vip <contacto@zonavip.mx>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\n"
"Language: es\n"
@@ -6011,7 +6011,7 @@ msgstr ""
#: pretix/base/models/orders.py:2286
msgid "Service fee"
msgstr "Gastos de gestión"
msgstr "Cargo por servicio"
#: pretix/base/models/orders.py:2287
msgid "Payment fee"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-02-12 15:27+0000\n"
"Last-Translator: Johanna Ketola <johanna.ketola@om.org>\n"
"PO-Revision-Date: 2025-05-04 16:00+0000\n"
"Last-Translator: Pekka Sarkola <pekka.sarkola@gispo.fi>\n"
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix/"
"fi/>\n"
"Language: fi\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.9.2\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -57,7 +57,7 @@ msgstr "tšekki"
#: pretix/_base_settings.py:96
msgid "Croatian"
msgstr ""
msgstr "Kroatia"
#: pretix/_base_settings.py:97
msgid "Danish"
@@ -2887,7 +2887,7 @@ msgstr "Odottaa lunastusta"
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:223
#: pretix/control/views/waitinglist.py:329
msgid "Voucher redeemed"
msgstr "Kuponi lunastettu"
msgstr "Kuponki lunastettu"
#: pretix/base/exporters/waitinglist.py:80
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:116
@@ -4245,7 +4245,7 @@ msgstr ""
#: pretix/base/models/discount.py:177
msgctxt "subevent"
msgid "Available for dates starting from"
msgstr ""
msgstr "Saatavilla lähtien"
#: pretix/base/models/discount.py:182
#, fuzzy
@@ -9794,7 +9794,7 @@ msgstr ""
#: pretix/base/settings.py:1311
msgid "This shop represents an event"
msgstr ""
msgstr "Tämä kauppaa koskee tapahtumaa"
#: pretix/base/settings.py:1313
msgid ""
@@ -12805,15 +12805,15 @@ msgstr "Tehtävä on suoritettu."
#: pretix/control/forms/__init__.py:205
#, python-brace-format
msgid "Please do not upload files larger than {size}!"
msgstr ""
msgstr "Älä lataa tiedostoja, jotka ovat suurempia kuin {size}!"
#: pretix/control/forms/__init__.py:227
msgid "Filetype not allowed!"
msgstr ""
msgstr "Tiedostomuoto ei ole sallittu!"
#: pretix/control/forms/__init__.py:330
msgid "Community translations"
msgstr ""
msgstr "Yhteisön käännökset"
#: pretix/control/forms/__init__.py:332
#, python-brace-format
@@ -12843,7 +12843,7 @@ msgstr ""
#: pretix/control/forms/checkin.py:176
msgid "Barcode"
msgstr ""
msgstr "Viivakoodi"
#: pretix/control/forms/checkin.py:179
msgid "Check-in time"
@@ -12869,11 +12869,11 @@ msgstr "Kaikki portit"
#: pretix/control/forms/event.py:91
msgid "Use languages"
msgstr ""
msgstr "Käytä kieliä"
#: pretix/control/forms/event.py:93
msgid "Choose all languages that your event should be available in."
msgstr ""
msgstr "Valitse kaikki kielet, joita tapahtumasi käyttää."
#: pretix/control/forms/event.py:96
msgid "This is an event series"
@@ -12886,19 +12886,19 @@ msgstr ""
#: pretix/control/forms/event.py:136 pretix/control/forms/event.py:518
msgid "Event timezone"
msgstr ""
msgstr "Tapahtuman aikavyöhyke"
#: pretix/control/forms/event.py:143
msgid "I don't want to specify taxes now"
msgstr ""
msgstr "En halua määritellä veroja nyt"
#: pretix/control/forms/event.py:144
msgid "You can always configure tax rates later."
msgstr ""
msgstr "Voit aina määritellä verojen määrn myöhemmin."
#: pretix/control/forms/event.py:148
msgid "Sales tax rate"
msgstr ""
msgstr "Arvonlisävero"
#: pretix/control/forms/event.py:149
msgid ""
@@ -12927,6 +12927,8 @@ msgid ""
"Sample Conference Center\n"
"Heidelberg, Germany"
msgstr ""
"Esimerkki konferenssikeskus\n"
"Helsinki, Finland"
#: pretix/control/forms/event.py:232
msgid "Your default locale must be specified."
@@ -12956,7 +12958,7 @@ msgstr "Oletus ({value})"
#: pretix/control/forms/event.py:384 pretix/control/forms/event.py:397
msgid "Domain"
msgstr ""
msgstr "Verkkotunnus"
#: pretix/control/forms/event.py:388
msgid "You can configure this in your organizer settings."
@@ -13009,7 +13011,7 @@ msgstr ""
#: pretix/control/forms/event.py:689
msgid "Do not ask"
msgstr ""
msgstr "Älä kysy"
#: pretix/control/forms/event.py:690
msgid "Ask, but do not require input"
@@ -13393,7 +13395,7 @@ msgstr ""
#: pretix/control/forms/event.py:1723
msgid "Payment via Stripe"
msgstr ""
msgstr "Maksut Stripen kautta"
#: pretix/control/forms/event.py:1724
msgid ""
@@ -13894,7 +13896,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:67
#: pretix/plugins/checkinlists/exporters.py:761
msgid "Device"
msgstr ""
msgstr "Laite"
#: pretix/control/forms/filter.py:2389 pretix/control/forms/filter.py:2424
#: pretix/control/forms/filter.py:2615
@@ -14229,7 +14231,7 @@ msgstr ""
#: pretix/control/forms/item.py:447
msgid "Size"
msgstr ""
msgstr "Koko"
#: pretix/control/forms/item.py:448
msgid "Number of tickets"
@@ -14332,7 +14334,7 @@ msgstr ""
#: pretix/control/forms/item.py:1079
msgid "Add-ons"
msgstr ""
msgstr "Lisäosat"
#: pretix/control/forms/item.py:1103
msgid "You added the same add-on category twice"
@@ -14361,7 +14363,7 @@ msgstr ""
#: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367
#: pretix/control/forms/orders.py:557
msgid "inactive"
msgstr ""
msgstr "Ei käytössä"
#: pretix/control/forms/mailsetup.py:42
msgid "Hostname"
@@ -14588,7 +14590,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:100
msgid "Seat"
msgstr ""
msgstr "Istumapaikka"
#: pretix/control/forms/orders.py:336
#: pretix/control/templates/pretixcontrol/order/change.html:182
@@ -14609,7 +14611,7 @@ msgstr ""
#: pretix/control/forms/orders.py:552 pretix/control/forms/orders.py:570
#: pretix/control/forms/orders.py:598
msgid "(Unchanged)"
msgstr ""
msgstr "(Muuttumaton)"
#: pretix/control/forms/orders.py:469 pretix/control/forms/orders.py:593
msgid "New price (gross)"
@@ -14694,7 +14696,7 @@ msgstr "Liitä laskut"
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:30
msgid "Recipient"
msgstr ""
msgstr "Vastaanottaja"
#: pretix/control/forms/orders.py:768
#, fuzzy, python-brace-format
@@ -15032,7 +15034,7 @@ msgstr "Myyntikanava samalla tunnuksella on jo olemassa."
#: pretix/control/templates/pretixcontrol/items/question_edit.html:139
msgctxt "form"
msgid "Optional"
msgstr ""
msgstr "Valinnainen"
#: pretix/control/forms/renderers.py:148
#: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26
@@ -15045,23 +15047,23 @@ msgstr "muuta"
#: pretix/control/forms/rrule.py:35
msgid "year(s)"
msgstr ""
msgstr "vuosi(a)"
#: pretix/control/forms/rrule.py:36
msgid "month(s)"
msgstr ""
msgstr "kuukausi(a)"
#: pretix/control/forms/rrule.py:37
msgid "week(s)"
msgstr ""
msgstr "viikko(ja)"
#: pretix/control/forms/rrule.py:38
msgid "day(s)"
msgstr ""
msgstr "päiviä"
#: pretix/control/forms/rrule.py:43
msgid "Interval"
msgstr ""
msgstr "Aikaväli"
#: pretix/control/forms/rrule.py:69
msgid "Number of repetitions"
@@ -15074,27 +15076,27 @@ msgstr ""
#: pretix/control/forms/rrule.py:86 pretix/control/forms/rrule.py:133
msgctxt "rrule"
msgid "first"
msgstr ""
msgstr "ensimmäinen"
#: pretix/control/forms/rrule.py:87 pretix/control/forms/rrule.py:134
msgctxt "rrule"
msgid "second"
msgstr ""
msgstr "toinen"
#: pretix/control/forms/rrule.py:88 pretix/control/forms/rrule.py:135
msgctxt "rrule"
msgid "third"
msgstr ""
msgstr "kolmas"
#: pretix/control/forms/rrule.py:89 pretix/control/forms/rrule.py:136
msgctxt "rrule"
msgid "last"
msgstr ""
msgstr "viimeinen"
#: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21
msgid "Day"
msgstr ""
msgstr "Päivä"
#: pretix/control/forms/rrule.py:112 pretix/control/forms/rrule.py:151
msgid "Weekend day"
@@ -15140,7 +15142,7 @@ msgstr ""
#: pretix/control/forms/vouchers.py:262
msgid "Codes"
msgstr ""
msgstr "Koodit"
#: pretix/control/forms/vouchers.py:264
msgid ""
@@ -15191,11 +15193,11 @@ msgstr ""
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:42
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:25
msgid "Recipients"
msgstr ""
msgstr "Vastaanottajaat"
#: pretix/control/forms/vouchers.py:292
msgid "or"
msgstr ""
msgstr "tai"
#: pretix/control/forms/vouchers.py:296
msgid ""
@@ -15444,7 +15446,7 @@ msgstr ""
#: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345
#: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893
msgid "(unknown)"
msgstr ""
msgstr "(tuntematon)"
#: pretix/control/logdisplay.py:365
#, python-brace-format
@@ -16544,7 +16546,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/dashboard.html:3
#: pretix/control/templates/pretixcontrol/dashboard.html:5
msgid "Dashboard"
msgstr ""
msgstr "Kojelauta"
#: pretix/control/navigation.py:49 pretix/control/navigation.py:382
#: pretix/control/navigation.py:487
@@ -16559,7 +16561,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/mail.html:19
#: pretix/control/templates/pretixcontrol/organizers/property_edit.html:15
msgid "General"
msgstr ""
msgstr "Yleinen"
#: pretix/control/navigation.py:57
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:151
@@ -16571,7 +16573,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:43
#: pretix/presale/templates/pretixpresale/event/order.html:86
msgid "Payment"
msgstr ""
msgstr "Maksut"
#: pretix/control/navigation.py:73 pretix/control/views/event.py:1516
#: pretix/control/views/event.py:1518 pretix/control/views/event.py:1550
@@ -16593,17 +16595,17 @@ msgstr ""
#: pretix/control/navigation.py:97
msgid "Invoicing"
msgstr ""
msgstr "Laskutus"
#: pretix/control/navigation.py:105
msgctxt "action"
msgid "Cancellation"
msgstr ""
msgstr "Peruutus"
#: pretix/control/navigation.py:113
#: pretix/control/templates/pretixcontrol/event/widget.html:8
msgid "Widget"
msgstr ""
msgstr "Pienoisohjelma"
#: pretix/control/navigation.py:126 pretix/control/navigation.py:435
#: pretix/control/navigation.py:480
@@ -16613,11 +16615,11 @@ msgstr ""
#: pretix/plugins/returnurl/apps.py:40
#: pretix/plugins/ticketoutputpdf/apps.py:55
msgid "Settings"
msgstr ""
msgstr "Asetukset"
#: pretix/control/navigation.py:164
msgid "Categories"
msgstr ""
msgstr "Kategoriat"
#: pretix/control/navigation.py:180
msgid "Discounts"
@@ -16625,7 +16627,7 @@ msgstr "Alennukset"
#: pretix/control/navigation.py:213
msgid "Overview"
msgstr ""
msgstr "Yleiskuva"
#: pretix/control/navigation.py:221
#: pretix/control/templates/pretixcontrol/order/index.html:828
@@ -16635,11 +16637,11 @@ msgstr ""
#: pretix/plugins/reports/accountingreport.py:684
#: pretix/presale/templates/pretixpresale/event/order.html:137
msgid "Refunds"
msgstr ""
msgstr "Maksupalautukset"
#: pretix/control/navigation.py:247
msgid "Import"
msgstr ""
msgstr "Tuonti"
#: pretix/control/navigation.py:276
msgid "All vouchers"
@@ -16647,12 +16649,12 @@ msgstr ""
#: pretix/control/navigation.py:284
msgid "Tags"
msgstr ""
msgstr "Tagit"
#: pretix/control/navigation.py:296
msgctxt "navigation"
msgid "Check-in"
msgstr ""
msgstr "Ilmoittautumiset"
#: pretix/control/navigation.py:313
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:4
@@ -16672,20 +16674,20 @@ msgstr "Etsi"
#: pretix/plugins/reports/accountingreport.py:677
#: pretix/plugins/reports/accountingreport.py:871
msgid "Payments"
msgstr ""
msgstr "Maksut"
#: pretix/control/navigation.py:376
msgid "User settings"
msgstr ""
msgstr "Käyttäjän asetukset"
#: pretix/control/navigation.py:387
#: pretix/control/templates/pretixcontrol/user/settings.html:16
msgid "Notifications"
msgstr ""
msgstr "Ilmoitukset"
#: pretix/control/navigation.py:392
msgid "2FA"
msgstr ""
msgstr "2FA"
#: pretix/control/navigation.py:397
msgid "Authorized apps"
@@ -16713,7 +16715,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/global_settings_base.html:5
#: pretix/control/templates/pretixcontrol/global_settings_base.html:7
msgid "Global settings"
msgstr ""
msgstr "Yleiset asetukset"
#: pretix/control/navigation.py:440
msgid "Update check"
@@ -16761,7 +16763,7 @@ msgstr "SSO palveluntarjoajat"
#: pretix/control/navigation.py:626 pretix/control/navigation.py:633
msgid "Devices"
msgstr ""
msgstr "Laitteet"
#: pretix/control/permissions.py:72 pretix/control/permissions.py:109
#: pretix/control/permissions.py:140 pretix/control/permissions.py:157
@@ -16798,13 +16800,13 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/invite.html:23
#: pretix/control/templates/pretixcontrol/auth/register.html:18
msgid "Login"
msgstr ""
msgstr "Sisäänkirjautuminen"
#: pretix/control/templates/pretixcontrol/auth/invite.html:27
#: pretix/control/templates/pretixcontrol/auth/login.html:43
#: pretix/control/templates/pretixcontrol/auth/register.html:22
msgid "Register"
msgstr ""
msgstr "Rekisteröinti"
#: pretix/control/templates/pretixcontrol/auth/login.html:27
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:20
@@ -16830,7 +16832,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/login_2fa.html:14
msgid "Token"
msgstr ""
msgstr "Token"
#: pretix/control/templates/pretixcontrol/auth/login_2fa.html:18
#: pretix/control/templates/pretixcontrol/user/reauth.html:22
@@ -16903,7 +16905,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:54
msgid "Error:"
msgstr ""
msgstr "Virhe:"
#: pretix/control/templates/pretixcontrol/auth/recover.html:7
msgid "Set new password"
@@ -16979,7 +16981,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/organizers/customer_password.html:20
#: pretix/presale/templates/pretixpresale/organizers/customer_setpassword.html:20
msgid "Save"
msgstr ""
msgstr "Tallenna"
#: pretix/control/templates/pretixcontrol/auth/register.html:7
msgid "Create a new account"
@@ -17129,7 +17131,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:11
msgid "ID"
msgstr ""
msgstr "ID"
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:15
msgid "ZVT Terminal"
@@ -17350,7 +17352,7 @@ msgstr[1] ""
#: pretix/presale/templates/pretixpresale/event/position_change.html:24
#: pretix/presale/templates/pretixpresale/event/position_modify.html:44
msgid "Cancel"
msgstr ""
msgstr "Peruuta"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:27
#: pretix/control/templates/pretixcontrol/checkin/list_delete.html:24
@@ -17396,7 +17398,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:34
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:29
msgid "Delete"
msgstr ""
msgstr "Poista"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:9
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:41
@@ -17445,7 +17447,7 @@ msgstr ""
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91
#: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:21
msgid "Filter"
msgstr ""
msgstr "Suodatin"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:50
msgid "Your search did not match any check-ins."
@@ -17464,7 +17466,7 @@ msgstr ""
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:14
#: pretix/plugins/checkinlists/exporters.py:766
msgid "Result"
msgstr ""
msgstr "Tulos"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:78
#: pretix/control/templates/pretixcontrol/order/index.html:392
@@ -17534,11 +17536,11 @@ msgstr "Ilmoittautumis-simulaattori"
#: pretix/control/templates/pretixcontrol/orders/overview.html:20
#: pretix/plugins/ticketoutputpdf/ticketoutput.py:64
msgid "PDF"
msgstr ""
msgstr "PDF"
#: pretix/control/templates/pretixcontrol/checkin/index.html:32
msgid "CSV"
msgstr ""
msgstr "CSV"
#: pretix/control/templates/pretixcontrol/checkin/index.html:73
msgid "No attendee record was found."
@@ -17556,7 +17558,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/checkin/index.html:114
#: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:29
msgid "Timestamp"
msgstr ""
msgstr "Aikaleima"
#: pretix/control/templates/pretixcontrol/checkin/index.html:125
#: pretix/control/templates/pretixcontrol/orders/index.html:165
@@ -17622,7 +17624,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:33
#: pretix/control/templates/pretixcontrol/items/question_edit.html:128
msgid "Advanced"
msgstr ""
msgstr "Edistynyt"
#: pretix/control/templates/pretixcontrol/checkin/list_edit.html:50
msgid ""
@@ -17669,7 +17671,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:117
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:85
msgid "Edit"
msgstr ""
msgstr "Muokkaa"
#: pretix/control/templates/pretixcontrol/checkin/list_edit.html:89
msgid "Visualize"
@@ -17740,7 +17742,7 @@ msgstr ""
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:72
#: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:69
msgid "Clone"
msgstr ""
msgstr "Monista"
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:22
msgid ""
@@ -18211,7 +18213,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:271
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:275
msgid "Optional"
msgstr ""
msgstr "Valinnainen"
#: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57
@@ -18537,7 +18539,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:97
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:120
msgid "Preview"
msgstr ""
msgstr "Esikatselu"
#: pretix/control/templates/pretixcontrol/event/mail.html:87
#: pretix/control/templates/pretixcontrol/organizers/mail.html:58
@@ -18615,7 +18617,7 @@ msgstr "Ota jonotuslista käyttöön"
#: pretix/control/templates/pretixcontrol/event/payment.html:66
msgid "Deadlines"
msgstr ""
msgstr "Määräpäivät"
#: pretix/control/templates/pretixcontrol/event/payment.html:74
msgctxt "unit"
@@ -18629,7 +18631,7 @@ msgstr "päivää"
#: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:25
#: pretix/presale/templates/pretixpresale/event/position_giftcard.html:16
msgid "Back"
msgstr ""
msgstr "Takaisin"
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:15
msgid "Payment provider:"
@@ -18637,7 +18639,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:21
msgid "Warning:"
msgstr ""
msgstr "Varoitus:"
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:22
msgid ""
@@ -18755,7 +18757,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings_base.html:10
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:18
msgid "Congratulations!"
msgstr ""
msgstr "Onnittelut!"
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:16
#: pretix/control/templates/pretixcontrol/event/settings_base.html:12
@@ -18806,7 +18808,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
#: pretix/control/views/event.py:378
msgid "Features"
msgstr ""
msgstr "Ominaisuudet"
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:134
msgid ""
@@ -18848,7 +18850,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings.html:21
msgid "Basics"
msgstr ""
msgstr "Perusteet"
#: pretix/control/templates/pretixcontrol/event/settings.html:40
#: pretix/control/templates/pretixcontrol/item/create.html:144
@@ -18864,7 +18866,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings.html:59
#: pretix/control/templates/pretixcontrol/organizers/edit.html:126
msgid "Localization"
msgstr ""
msgstr "Lokalisointi"
#: pretix/control/templates/pretixcontrol/event/settings.html:66
msgid "Customer and attendee data"
@@ -18904,7 +18906,7 @@ msgstr "Muutoksia tehtyihin tilauksiin"
#: pretix/control/templates/pretixcontrol/event/settings.html:130
msgid "Texts"
msgstr ""
msgstr "Tekstit"
#: pretix/control/templates/pretixcontrol/event/settings.html:137
msgid "Confirmation text"
@@ -19826,7 +19828,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/item/include_addons.html:28
#: pretix/control/templates/pretixcontrol/item/include_addons.html:62
msgid "Add-On"
msgstr ""
msgstr "Lisäosa"
#: pretix/control/templates/pretixcontrol/item/include_addons.html:86
msgid "Add a new add-on"
@@ -19871,7 +19873,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/item/index.html:154
msgid "Availability"
msgstr ""
msgstr "Saatavuus"
#: pretix/control/templates/pretixcontrol/item/index.html:184
msgid "Tickets & Badges"
@@ -19889,7 +19891,7 @@ msgstr "Kesto"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:355
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:364
msgid "minutes"
msgstr ""
msgstr "minuuttia"
#: pretix/control/templates/pretixcontrol/item/index.html:217
msgid "hours"
@@ -20013,7 +20015,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/discount.html:43
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:53
msgid "OR"
msgstr ""
msgstr "TAI"
#: pretix/control/templates/pretixcontrol/items/discount.html:53
msgctxt "discount"
@@ -20112,7 +20114,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:3
msgid "Closed"
msgstr ""
msgstr "Suljettu"
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:5
msgid "Sold out (pending orders)"
@@ -20125,7 +20127,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:11
msgid "Unlimited"
msgstr ""
msgstr "Rajoittamaton"
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:14
msgid "Fully reserved"
@@ -20144,7 +20146,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:19
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7
msgid "taxes"
msgstr ""
msgstr "verot"
#: pretix/control/templates/pretixcontrol/items/index.html:10
msgid ""
@@ -20551,7 +20553,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/oauth/authorized.html:18
msgid "Permissions"
msgstr ""
msgstr "Oikeudet"
#: pretix/control/templates/pretixcontrol/oauth/authorized.html:59
msgid "No applications have access to your pretix account."
@@ -20838,7 +20840,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:40
#: pretix/presale/templates/pretixpresale/event/order_modify.html:30
msgid "(optional)"
msgstr ""
msgstr "(valinnainen)"
#: pretix/control/templates/pretixcontrol/order/delete.html:4
#: pretix/control/templates/pretixcontrol/order/delete.html:8
@@ -21115,7 +21117,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:690
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:444
msgid "Taxes"
msgstr ""
msgstr "Verot"
#: pretix/control/templates/pretixcontrol/order/index.html:699
#: pretix/control/templates/pretixcontrol/orders/overview.html:89
@@ -21173,7 +21175,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:839
#: pretix/control/templates/pretixcontrol/orders/refunds.html:60
msgid "Source"
msgstr ""
msgstr "Lähde"
#: pretix/control/templates/pretixcontrol/order/index.html:872
msgid "Cancel transfer"
@@ -21199,7 +21201,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/base.html:140
#: pretix/presale/templates/pretixpresale/event/timemachine.html:30
msgid "Change"
msgstr ""
msgstr "Vaihda"
#: pretix/control/templates/pretixcontrol/order/index.html:954
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:91
@@ -21467,7 +21469,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/sendmail.html:44
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:89
msgid "Send"
msgstr ""
msgstr "Lähetä"
#: pretix/control/templates/pretixcontrol/order/transactions.html:5
#: pretix/control/templates/pretixcontrol/order/transactions.html:8
@@ -21996,7 +21998,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/overview.html:10
msgid "Sales"
msgstr ""
msgstr "Myynti"
#: pretix/control/templates/pretixcontrol/orders/overview.html:11
msgid "Revenue (gross)"
@@ -22026,7 +22028,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/overview.html:80
#: pretix/plugins/reports/exporters.py:382
msgid "Purchased"
msgstr ""
msgstr "Ostettu"
#: pretix/control/templates/pretixcontrol/orders/overview.html:189
msgid ""
@@ -22604,7 +22606,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:67
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:120
msgid "Remove"
msgstr ""
msgstr "Poista"
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:66
msgid "Accept"
@@ -22911,7 +22913,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:21
msgid "Member"
msgstr ""
msgstr "Jäsen"
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:36
msgid "Two-factor authentication enabled"
@@ -22939,7 +22941,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:85
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:134
msgid "Add"
msgstr ""
msgstr "Lisää"
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:92
msgid "API tokens"
@@ -22955,7 +22957,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/teams.html:38
msgid "Members"
msgstr ""
msgstr "Jäsenet"
#: pretix/control/templates/pretixcontrol/organizers/teams.html:54
#, python-format
@@ -23007,7 +23009,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:73
msgid "Failed"
msgstr ""
msgstr "Epäonnistunut"
#: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:83
msgid "Request URL"
@@ -23090,7 +23092,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:31
#: pretix/plugins/banktransfer/refund_export.py:46
msgid "Code"
msgstr ""
msgstr "Koodi"
#: pretix/control/templates/pretixcontrol/pdf/index.html:35
msgid "Paste"
@@ -23158,7 +23160,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:141
#: pretix/control/templates/pretixcontrol/pdf/index.html:173
msgid "Loading…"
msgstr ""
msgstr "Lataa…"
#: pretix/control/templates/pretixcontrol/pdf/index.html:144
msgid "Start editing"
@@ -23166,12 +23168,12 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:159
msgid "Cut"
msgstr ""
msgstr "Leikkaa"
#: pretix/control/templates/pretixcontrol/pdf/index.html:163
#: pretix/control/templates/pretixcontrol/vouchers/detail.html:54
msgid "Copy"
msgstr ""
msgstr "Kopioi"
#: pretix/control/templates/pretixcontrol/pdf/index.html:180
msgid "Layout name"
@@ -23225,15 +23227,15 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:254
msgid "Style"
msgstr ""
msgstr "Tyyli"
#: pretix/control/templates/pretixcontrol/pdf/index.html:256
msgid "Dark"
msgstr ""
msgstr "Tumma"
#: pretix/control/templates/pretixcontrol/pdf/index.html:257
msgid "Light"
msgstr ""
msgstr "Vaalea"
#: pretix/control/templates/pretixcontrol/pdf/index.html:263
msgid "Image content"
@@ -23262,7 +23264,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:292
msgid "Other…"
msgstr ""
msgstr "Muu…"
#: pretix/control/templates/pretixcontrol/pdf/index.html:302
msgid "Show available placeholders"
@@ -23534,7 +23536,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:258
msgctxt "subevent"
msgid "Preview"
msgstr ""
msgstr "Esikatselu"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:265
msgctxt "subevent"
@@ -24040,13 +24042,13 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/user/notifications.html:72
#: pretix/control/templates/pretixcontrol/user/settings.html:20
msgid "On"
msgstr ""
msgstr "Päällä"
#: pretix/control/templates/pretixcontrol/user/notifications.html:70
#: pretix/control/templates/pretixcontrol/user/notifications.html:71
#: pretix/control/templates/pretixcontrol/user/settings.html:24
msgid "Off"
msgstr ""
msgstr "Poissa"
#: pretix/control/templates/pretixcontrol/user/notifications.html:75
msgid "You have no permission to receive this notification"
@@ -24206,7 +24208,7 @@ msgstr "Etuliite (valinnainen)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
msgctxt "number_of_things"
msgid "Number"
msgstr ""
msgstr "Numero"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes"
@@ -25084,7 +25086,7 @@ msgstr "Kaikkia kohteita ei ole valittu."
#: pretix/control/views/item.py:471
msgid "Street"
msgstr ""
msgstr "Katu"
#: pretix/control/views/item.py:573 pretix/control/views/item.py:747
#: pretix/control/views/item.py:769
@@ -25702,7 +25704,7 @@ msgstr ""
#: pretix/control/views/organizer.py:570
msgid "Administrators"
msgstr ""
msgstr "Ylläpitäjät"
#: pretix/control/views/organizer.py:633
msgid "The team has been created. You can now add members to the team."

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-29 01:00+0000\n"
"Last-Translator: Davide Manzella <manzella.davide97@gmail.com>\n"
"PO-Revision-Date: 2025-05-05 09:40+0000\n"
"Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/"
"it/>\n"
"Language: it\n"
@@ -2988,12 +2988,9 @@ msgid "Repeat password"
msgstr "Ripeti la password"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgctxt "subevent"
#| msgid "No date was specified."
msgctxt "name_salutation"
msgid "not specified"
msgstr "Nessuna data è stata specificata."
msgstr "non specificato"
#: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names."
@@ -4272,14 +4269,12 @@ msgstr ""
#: pretix/base/models/discount.py:177
msgctxt "subevent"
msgid "Available for dates starting from"
msgstr ""
msgstr "Disponibile per le date a partire da"
#: pretix/base/models/discount.py:182
#, fuzzy
#| msgid "Available until"
msgctxt "subevent"
msgid "Available for dates starting until"
msgstr "Disponibile fino a"
msgstr "Disponibile per le date fino a"
#: pretix/base/models/discount.py:214
msgid ""
@@ -5592,20 +5587,12 @@ msgid "Unknown country code."
msgstr "Codice del paese sconosciuto."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value."
msgstr "Il conteggio massimo deve essere superiore al conteggio minimo."
msgstr "La data massima non può essere prima del valore minimo."
#: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value."
msgstr ""
"Il numero massimo di utilizzi non può essere inferiore al numero minimo di "
"utilizzi."
msgstr "Il valore massimo non può essere inferiore al valore minimo."
#: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -9084,37 +9071,44 @@ msgstr "Permetti utilizzo di plugin con restrizioni"
#: pretix/base/settings.py:158
msgid "Allow customers to create accounts"
msgstr "Permetti ai clienti di creare account"
msgstr "Permetti ai clienti di creare un account"
#: pretix/base/settings.py:159
msgid ""
"This will allow customers to sign up for an account on your ticket shop. "
"This is a prerequisite for some advanced features like memberships."
msgstr ""
"Ciò consentirà ai clienti di registrare un account sul vostro negozio di "
"biglietti. Questo è un prerequisito per alcune funzioni avanzate come le "
"iscrizioni."
#: pretix/base/settings.py:169
msgid "Allow customers to log in with email address and password"
msgstr ""
msgstr "Permetti ai clienti di loggarsi con un indirizzo email e una password"
#: pretix/base/settings.py:170
msgid ""
"If disabled, you will need to connect one or more single-sign-on providers."
msgstr ""
"Se è disattivato, sarà necessario collegare uno o più provider single-sign-"
"on."
#: pretix/base/settings.py:180
#, fuzzy
msgid "Match orders based on email address"
msgstr "Email partecipante"
msgstr "Abbina gli ordini in base all'indirizzo e-mail"
#: pretix/base/settings.py:181
msgid ""
"This will allow registered customers to access orders made with the same "
"email address, even if the customer was not logged in during the purchase."
msgstr ""
"Ciò consentirà ai clienti registrati di accedere agli ordini effettuati con "
"lo stesso indirizzo e-mail, anche se il cliente non ha effettuato il login "
"durante l'acquisto."
#: pretix/base/settings.py:191
msgid "Activate re-usable media"
msgstr ""
msgstr "Attiva supporti riutilizzabili"
#: pretix/base/settings.py:192
msgid ""
@@ -9122,53 +9116,61 @@ msgid ""
"with physical media such as wristbands or chip cards that may be re-used for "
"different tickets or gift cards later."
msgstr ""
"La funzione di supporto riutilizzabile consente di collegare i biglietti e "
"le carte regalo con supporti fisici come braccialetti o chip card che "
"possono essere riutilizzati in seguito per altri biglietti o carte regalo."
#: pretix/base/settings.py:218
#, fuzzy
msgid "Length of barcodes"
msgstr "Codice biglietto"
msgstr "Lunghezza dei codici a barre"
#: pretix/base/settings.py:247
msgid ""
"Automatically create a new gift card if a previously unknown chip is seen"
msgstr ""
"Crea automaticamente una nuova carta regalo se viene visto un chip "
"precedentemente sconosciuto"
#: pretix/base/settings.py:260 pretix/base/settings.py:291
#, fuzzy
msgid "Gift card currency"
msgstr "Codice Gift Card"
msgstr "Valuta della carta regalo"
#: pretix/base/settings.py:278
msgid "Automatically create a new gift card if a new chip is encoded"
msgstr ""
"Crea automaticamente una nuova carta regalo se viene codificato un nuovo chip"
#: pretix/base/settings.py:300
msgid "Use UID protection feature of NFC chip"
msgstr ""
msgstr "Utilizza la funzione di protezione UID del chip NFC"
#: pretix/base/settings.py:316
msgid "Maximum number of items per order"
msgstr ""
msgstr "Numero massimo di elementi per ordine"
#: pretix/base/settings.py:317
msgid "Add-on products will not be counted."
msgstr ""
msgstr "I prodotti aggiuntivi non verranno conteggiati."
#: pretix/base/settings.py:326
msgid ""
"Show net prices instead of gross prices in the product list (not "
"recommended!)"
msgstr ""
"Mostra il prezzo netto anziché il prezzo lordo nella lista dei prodotti (non "
"raccomandato!)"
#: pretix/base/settings.py:327
msgid ""
"Independent of your choice, the cart will show gross prices as this is the "
"price that needs to be paid."
msgstr ""
"Indipendentemente dalla vostra scelta, il carrello mostrerà i prezzi lordi, "
"poiché questo è il prezzo che deve essere pagato."
#: pretix/base/settings.py:338
msgid "Hide prices on attendee ticket page"
msgstr ""
msgstr "Nascondi i prezzi nella pagina dei biglietti per i partecipanti"
#: pretix/base/settings.py:339
msgid ""
@@ -9177,10 +9179,14 @@ msgid ""
"page of the individual attendees. The ticket buyer will of course see the "
"price."
msgstr ""
"Se una persona acquista più biglietti e si inviano e-mail a tutti i "
"partecipanti, con questa opzione il prezzo del biglietto non verrà mostrato "
"nella pagina dei biglietti dei singoli partecipanti. L'acquirente del "
"biglietto vedrà ovviamente il prezzo."
#: pretix/base/settings.py:357
msgid "Ask for attendee names"
msgstr ""
msgstr "Chiedi il nome dei partecipanti"
#: pretix/base/settings.py:358
msgid "Ask for a name for all personalized tickets."
@@ -23307,10 +23313,8 @@ msgid "Download current background"
msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Canceled by customer"
msgid "Or choose custom paper size"
msgstr "Cancellato dal cliente"
msgstr "Oppure scegli un formato carta personalizzato"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid ""
@@ -26399,28 +26403,18 @@ msgid "until"
msgstr "Data fino a"
#: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format
#| msgctxt "invoice"
#| msgid ""
#| "{from_date}\n"
#| "until {to_date}"
#, python-brace-format
msgid "{date_from}{until}{date_to}"
msgstr ""
"{from_date}\n"
"a {to_date}"
msgstr "{date_from}{until}{date_to}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85
#, fuzzy
#| msgid ""
#| "The file you uploaded has a very large number of pixels, please upload an "
#| "image no larger than 10000 x 10000 pixels."
msgid ""
"The file you uploaded has a very large number of pixels, please upload a "
"picture with smaller dimensions."
msgstr ""
"Il file che hai caricato ha un numero molto elevato di pixel, per favore "
"carica un'immagine che abbia 10000 x 10000 pixel."
"carica un'immagine di dimensione più piccola."
#: pretix/helpers/security.py:166
msgid "Login from new source detected"
@@ -30025,10 +30019,8 @@ msgid "Payer name"
msgstr ""
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt"
msgstr "Commissione di pagamento"
msgstr "Ricevuta di pagamento"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-16 19:00+0000\n"
"PO-Revision-Date: 2025-05-05 09:40+0000\n"
"Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix-"
"js/it/>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/"
"pretix-js/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.3\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -938,12 +938,9 @@ msgid "Open ticket shop"
msgstr "Apri la biglietteria"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "Ricarica checkout"
msgstr "Checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-03-31 15:00+0000\n"
"PO-Revision-Date: 2025-05-12 13:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -2971,21 +2971,17 @@ msgid "Repeat password"
msgstr "パスワードを再入力してください"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation"
msgid "not specified"
msgstr "国が指定されていません"
msgstr "指定されていません"
#: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names."
msgstr ""
"Understood, I will avoid using special characters in names. Thank you for "
"the reminder."
msgstr "名前に特殊文字を使わないでください。"
#: pretix/base/forms/questions.py:281
msgid "Please enter a shorter name."
msgstr "短い名前を入力してください。"
msgstr "もっと短い名前を入力してください。"
#: pretix/base/forms/questions.py:305
msgctxt "phonenumber"
@@ -3001,11 +2997,12 @@ msgstr "電話番号(国際エリアコードなし)"
msgid ""
"You uploaded an image in landscape orientation. Please upload an image in "
"portrait orientation."
msgstr "画像を縦向きでアップロードしてください。"
msgstr "画像が横向きでアップロードされています。縦向きの画像をアップロードしてくださ"
"い。"
#: pretix/base/forms/questions.py:493
msgid "Please upload an image where the width is 3/4 of the height."
msgstr "幅が高さの3/4の画像をアップロードしてください。"
msgstr "縦4x幅3の比率の画像をアップロードしてください。"
#: pretix/base/forms/questions.py:496
msgid ""
@@ -3059,7 +3056,7 @@ msgstr "会社名を提供する必要があります。"
#: pretix/base/forms/questions.py:1187
msgid "You need to provide your name."
msgstr "私はアシスタントです。"
msgstr "あなたの名前を提供する必要があります。"
#: pretix/base/forms/user.py:51 pretix/control/forms/users.py:43
msgid ""
@@ -3631,12 +3628,12 @@ msgstr "有効な販売チャネルを入力してください。"
#: pretix/base/modelimport_orders.py:585
#: pretix/base/modelimport_vouchers.py:291
msgid "Multiple matching seats were found."
msgstr "複数のマッチングする席が見つかりました。"
msgstr "該当する席が複数見つかりました。"
#: pretix/base/modelimport_orders.py:587
#: pretix/base/modelimport_vouchers.py:293
msgid "No matching seat was found."
msgstr "適合する席が見つかりませんでした。"
msgstr "該当する席が見つかりませんでした。"
#: pretix/base/modelimport_orders.py:590
#: pretix/base/modelimport_vouchers.py:296 pretix/base/services/cart.py:212
@@ -3674,7 +3671,7 @@ msgstr "顧客"
#: pretix/base/modelimport_orders.py:711
msgid "No matching customer was found."
msgstr "顧客が見つかりませんでした。"
msgstr "該当する顧客が見つかりませんでした。"
#: pretix/base/modelimport_vouchers.py:50 pretix/base/models/vouchers.py:488
msgid "A voucher with this code already exists."
@@ -3815,7 +3812,7 @@ msgstr "電源を切ると、通知を受け取れません。"
#: pretix/control/templates/pretixcontrol/users/form.html:6
#: pretix/control/views/organizer.py:158 tests/base/test_mail.py:149
msgid "User"
msgstr "ユーザ"
msgstr "ユーザ"
#: pretix/base/models/auth.py:284 pretix/control/navigation.py:411
#: pretix/control/templates/pretixcontrol/users/index.html:5
@@ -4234,20 +4231,14 @@ msgstr ""
"れます。"
#: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent"
msgid "Available for dates starting from"
msgstr "すべての日付は、前に始まります"
msgstr "この日から始まる日付で利用可能"
#: pretix/base/models/discount.py:182
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent"
msgid "Available for dates starting until"
msgstr "すべての日付は、前に始まります"
msgstr "これより以前に開始する日付で利用可能"
#: pretix/base/models/discount.py:214
msgid ""
@@ -5513,18 +5504,12 @@ msgid "Unknown country code."
msgstr "不明な国コード。"
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value."
msgstr "最大数は最小よりも大きくする必要があります。"
msgstr "最大日付は、最小より前でなければなりません。"
#: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value."
msgstr "使用回数の最大値は最小回数より低くすることはできません。"
msgstr "最大値は最小より低くできません。"
#: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -11383,13 +11368,6 @@ msgid "Header image"
msgstr "ヘッダー画像"
#: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo "
@@ -11397,11 +11375,11 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens."
msgstr ""
"ロゴ画像を提供していただければ、デフォルトではイベント名と日付はページヘッ"
"ダーに表示されません。デフォルトでは、1140x120ピクセルまでのサイズでロゴが表"
"示されます。以下の設定でサイズを拡大することもできます。画像に細かいディテー"
"ルを使用しないことをお勧めします。なぜなら、小さな画面ではサイズされるため"
"す。"
"ロゴ画像を提供すると、デフォルトでページヘッダーにイベント名と日付が表示され"
"ません。白い背景を使用する場合、最大1140x120ピクセルのサイズでロゴが表示され"
"ます。それ以外の場合、最大サイズは1120x120ピクセルです。以下の設定でサイズを"
"大きくすることができます。小さな画面ではサイズが変更されるため、写真に小さな"
"ディテールを使用しないことをお勧めします。"
#: pretix/base/settings.py:2906 pretix/base/settings.py:2949
msgid "Use header image in its full size"
@@ -11427,13 +11405,6 @@ msgstr ""
"れます。"
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo "
@@ -19792,7 +19763,7 @@ msgstr "クォータごとの有料チケット"
#: pretix/control/views/dashboards.py:519 pretix/control/views/typeahead.py:89
msgctxt "subevent"
msgid "No dates"
msgstr "データなし"
msgstr "日付なし"
#: pretix/control/templates/pretixcontrol/events/index.html:141
#: pretix/control/templates/pretixcontrol/subevents/index.html:158
@@ -23989,32 +23960,29 @@ msgstr "優先する言語"
#: pretix/control/templates/pretixcontrol/pdf/index.html:200
#: pretix/control/templates/pretixcontrol/pdf/index.html:210
#, fuzzy
#| msgid "Upload custom background"
msgid "Upload PDF as background"
msgstr "カスタム背景をアップロード"
msgstr "背景としてPDFをアップロードする"
#: pretix/control/templates/pretixcontrol/pdf/index.html:202
msgid ""
"You can upload a PDF to use as a custom background. The paper size will "
"match the PDF."
msgstr ""
msgstr "PDF をアップロードして、カスタムの背景として使用できます。用紙のサイズは PDF "
"と一致します。"
#: pretix/control/templates/pretixcontrol/pdf/index.html:217
msgid "Download current background"
msgstr "現在の背景をダウンロード"
#: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Date chosen by customer"
msgid "Or choose custom paper size"
msgstr "お客様が選んだ日付"
msgstr "または、カスタム用紙サイズを選択"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid ""
"To manually change the paper size, you need to create a new, empty "
"background."
msgstr ""
msgstr "用紙サイズを手動で変更するには、新しい空の背景を作成する必要があります。"
#: pretix/control/templates/pretixcontrol/pdf/index.html:234
#: pretix/control/templates/pretixcontrol/pdf/index.html:321
@@ -27322,10 +27290,9 @@ msgid "until"
msgstr "まで"
#: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format
#| msgid "{date_from} {date_to}"
#, python-brace-format
msgid "{date_from}{until}{date_to}"
msgstr "{date_from} {date_to}"
msgstr "{date_from}{until}{date_to}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85
@@ -31012,10 +30979,8 @@ msgid "Payer name"
msgstr "支払い者の名前"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt"
msgstr "支払手数料"
msgstr "領収書"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-31 15:00+0000\n"
"PO-Revision-Date: 2025-05-12 13:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
"js/ja/>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/"
"pretix-js/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -233,7 +233,7 @@ msgstr "未払い"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45
msgid "Canceled"
msgstr "キャンセル"
msgstr "キャンセル済み"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed"
@@ -907,12 +907,9 @@ msgid "Open ticket shop"
msgstr "チケットショップを開く"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "購入を続行する"
msgstr "チェックアウト"
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
@@ -1068,31 +1065,31 @@ msgstr "日"
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday"
msgstr ""
msgstr "月曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday"
msgstr ""
msgstr "火曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday"
msgstr ""
msgstr "水曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday"
msgstr ""
msgstr "木曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday"
msgstr ""
msgstr "金曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday"
msgstr ""
msgstr "土曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday"
msgstr ""
msgstr "日曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January"

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-16 10:00+0000\n"
"PO-Revision-Date: 2025-05-08 10:00+0000\n"
"Last-Translator: 조정화 <junghwa.jo@om.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix-js/"
"ko/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -1084,31 +1084,31 @@ msgstr "일요일"
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday"
msgstr ""
msgstr "월요일"
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday"
msgstr ""
msgstr "화요일"
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday"
msgstr ""
msgstr "수요일"
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday"
msgstr ""
msgstr "목요일"
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday"
msgstr ""
msgstr "금요일"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday"
msgstr ""
msgstr "토요일"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday"
msgstr ""
msgstr "일요일"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January"

View File

@@ -7,16 +7,16 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-03-30 16:00+0000\n"
"Last-Translator: Jan Van Haver <jan.van.haver@gmail.com>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/"
">\n"
"PO-Revision-Date: 2025-05-01 02:00+0000\n"
"Last-Translator: Foxy Hunter <matthias.vancoillie@outlook.com>\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"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -2980,11 +2980,9 @@ msgid "Repeat password"
msgstr "Herhaal wachtwoord"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation"
msgid "not specified"
msgstr "Geen land opgegeven."
msgstr "Niet opgegeven"
#: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names."
@@ -3999,7 +3997,7 @@ msgstr "Bestelling niet goedgekeurd"
#: pretix/base/models/checkin.py:366
msgid "Ticket not valid at this time"
msgstr "Ticket is niet geldig op dit moment"
msgstr "Ticket is op dit moment niet geldig"
#: pretix/base/models/customers.py:55
msgid "Provider name"
@@ -4253,20 +4251,14 @@ msgstr ""
"uitverkochte producten zullen nog steeds een korting krijgen."
#: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent"
msgid "Available for dates starting from"
msgstr "Alle subevenementen beginnend voor"
msgstr "Beschikbaar vanaf de volgende datums"
#: pretix/base/models/discount.py:182
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent"
msgid "Available for dates starting until"
msgstr "Alle subevenementen beginnend voor"
msgstr "Beschikbaar voor startdatums tot"
#: pretix/base/models/discount.py:214
msgid ""
@@ -5576,20 +5568,12 @@ msgid "Unknown country code."
msgstr "Onbekende landcode."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value."
msgstr "Het maximale aantal moet groter zijn dan het minimum aantal."
msgstr "De maximumdatum mag niet vóór de minimumwaarde liggen."
#: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value."
msgstr ""
"Het maximum aantal keer gebruikt mag niet lager zijn dan het minimum aantal "
"keer gebruikt."
msgstr "De maximum waarde mag niet lager zijn dan de minimum waarde."
#: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -6298,8 +6282,6 @@ msgstr ""
"Gemiddeld tarief (andere omzet in een agriculturele en bosbouwkundig bedrijf)"
#: pretix/base/models/tax.py:164
#, fuzzy
#| msgid "Reverse charge"
msgctxt "tax_code"
msgid "Reverse charge"
msgstr "Omgekeerde belastingheffing"
@@ -6347,7 +6329,7 @@ msgstr "Canarische Eilanden algemeen belastingtarief"
#: pretix/base/models/tax.py:190
msgctxt "tax_code"
msgid "Tax for production, services and importation in Ceuta and Melilla"
msgstr ""
msgstr "Belasting op productie, diensten en invoer in Ceuta en Melilla"
#: pretix/base/models/tax.py:191
msgctxt "tax_code"
@@ -6416,14 +6398,14 @@ msgstr "Intracommunautaire aankoop van verzamelobjecten en antiek"
#: pretix/base/models/tax.py:262
msgctxt "tax_code"
msgid "France domestic VAT franchise in base"
msgstr ""
msgstr "Franse btw-vrijstelling (binnenlands, franchise)"
#: pretix/base/models/tax.py:264
msgctxt "tax_code"
msgid ""
"France domestic Credit Notes without VAT, due to supplier forfeit of VAT for "
"discount"
msgstr ""
msgstr "Franse binnenlandse creditnota, geen betw door korting van leverancier"
#: pretix/base/models/tax.py:314
msgid "Your set of rules is not valid. Error message: {}"
@@ -6447,6 +6429,9 @@ msgid ""
"If you help us understand what this tax rules legally is, we can use this "
"information for eInvoices, exporting to accounting system, etc."
msgstr ""
"Wanneer je ons helpt te begrijpen wat deze belastingsregels juridisch "
"inhouden, kunnen we deze informatie inzetten voor e-facturen, het exporteren "
"naar het boekhoudsysteem, enz."
#: pretix/base/models/tax.py:351
msgid "The configured product prices include the tax amount"
@@ -6516,11 +6501,15 @@ msgstr "U moet uw thuisland instellen om de verleggingsfunctie te gebruiken."
msgid ""
"A combination of this tax code with a non-zero tax rate does not make sense."
msgstr ""
"Een combinatie van deze belastingcode met een belastingtarief groter dan nul "
"is niet logisch."
#: pretix/base/models/tax.py:421 pretix/control/forms/event.py:1562
msgid ""
"A combination of this tax code with a zero tax rate does not make sense."
msgstr ""
"Een combinatie van deze belastingscode met een belastingstarief van nul is "
"niet logisch."
#: pretix/base/models/tax.py:426
#, python-brace-format
@@ -11660,13 +11649,6 @@ msgid "Header image"
msgstr "Header-afbeelding"
#: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo "
@@ -11705,13 +11687,6 @@ msgstr ""
"organisator dan zal de titel altijd getoond worden."
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo "
@@ -11721,7 +11696,7 @@ msgid ""
msgstr ""
"Als u een logo opgeeft zullen we standaard niet uw organisatienaam in de "
"paginaheader tonen. We tonen uw logo standaard met een maximumgrootte van "
"1140x120 pixels. U kunt deze grootte aanpassen met de instelling hieronder. "
"1120x120 pixels. U kunt deze grootte aanpassen met de instelling hieronder. "
"We raden aan om geen kleine details op de afbeelding te gebruiken, omdat de "
"afbeelding op kleinere schermen zal worden geschaald."
@@ -13570,6 +13545,8 @@ msgid ""
"A combination of this calculation mode with a non-zero tax rate does not "
"make sense."
msgstr ""
"Een combinatie van deze berekeningsmodus met een belastingstarief groter dan "
"nul is niet logisch."
#: pretix/control/forms/event.py:1550 pretix/control/forms/event.py:1554
msgid "This combination of calculation mode and tax code does not make sense."
@@ -13786,7 +13763,7 @@ msgstr "Goedgekeurd, wacht op betaling"
#: pretix/plugins/reports/exporters.py:380
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:7
msgid "Approval pending"
msgstr "Wachtend op goedkeuring"
msgstr "Goedkeuring in afwachting"
#: pretix/control/forms/filter.py:241
msgid "Follow-up configured"
@@ -15008,6 +14985,8 @@ msgid ""
"This affects both the ticket secret (often used as a QR code) as well as the "
"link used to individually access the ticket."
msgstr ""
"Dit heeft invloed op zowel het ticketgeheim (vaak gebruikt als QR-code) als "
"de link waarmee het ticket individueel kan worden geopend."
#: pretix/control/forms/orders.py:501
msgid "Cancel this position"
@@ -15434,6 +15413,8 @@ msgid ""
"Optional query parameters, that will be added to calls to the authorization "
"endpoint. Enter as: {example}"
msgstr ""
"Optionele queryparameters, die worden toegevoegd aan oproepen naar het "
"autorisatie-eindpunt. Voer in als: {example}"
#: pretix/control/forms/organizer.py:1110
msgid "Invalidate old client secret and generate a new one"
@@ -23679,9 +23660,9 @@ msgid ""
"before you are allowed to use cookies or similar technology for analytics, "
"tracking, payment, or similar purposes."
msgstr ""
"In sommige rechtsgebieden, waaronder de Europese Unie, is toestemming van de "
"gebruiker vereist voordat u cookies of vergelijkbare technologie mag "
"gebruiken voor analyses, tracking, betaling of soortgelijke doeleinden."
"Bepaalde rechtsgebieden, zoals de Europese Unie, vereisen de toestemming van "
"de gebruiker voordat je cookies of soortgelijke technologieën mag gebruiken "
"voor analyses, tracking, betalingen of soortgelijke doeleinden."
#: pretix/control/templates/pretixcontrol/organizers/edit.html:172
msgid ""
@@ -23713,12 +23694,12 @@ msgid ""
"usage, the legal details in your specific jurisdiction, or the agreements "
"you have with third parties such as payment or tracking providers."
msgstr ""
"Niettemin blijft het uw verantwoordelijkheid om ervoor te zorgen dat uw "
"ticketshop aan alle toepasselijke wetten voldoet. Wij proberen u te helpen "
"met deze instellingen, maar kunnen geen aansprakelijkheid aanvaarden omdat "
"wij onder andere niet de exacte configuratie van uw ticketshop, de "
"juridische details van het toepasselijke rechtsgebied en de overeenkomsten "
"tussen u en de gebruikte derde aanbieders kennen."
"Het is uiteindelijk uw verantwoordelijkheid om ervoor te zorgen dat u "
"voldoet aan alle relevante wetgeving. Wij bieden deze instellingen ter "
"ondersteuning, maar kunnen geen aansprakelijkheid dragen, aangezien wij de "
"exacte configuratie van uw gebruik van pretix, de juridische details in uw "
"rechtsgebied, of de afspraken met derden zoals betalings- of "
"trackingaanbieders niet kennen."
#: pretix/control/templates/pretixcontrol/organizers/edit.html:210
msgid "Barcode media"
@@ -24553,32 +24534,32 @@ msgstr "Voorkeurstaal"
#: pretix/control/templates/pretixcontrol/pdf/index.html:200
#: pretix/control/templates/pretixcontrol/pdf/index.html:210
#, fuzzy
#| msgid "Upload custom background"
msgid "Upload PDF as background"
msgstr "Upload aangepaste achtergrond"
msgstr "Upload PDF als achtergrond"
#: pretix/control/templates/pretixcontrol/pdf/index.html:202
msgid ""
"You can upload a PDF to use as a custom background. The paper size will "
"match the PDF."
msgstr ""
"Je kunt een PDF uploaden om als aangepaste achtergrond te gebruiken. De "
"papier-grootte zal overeenkomen met dat van de PDF."
#: pretix/control/templates/pretixcontrol/pdf/index.html:217
msgid "Download current background"
msgstr "Download huidige achtergrond"
#: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Date chosen by customer"
msgid "Or choose custom paper size"
msgstr "Datum gekozen door klant"
msgstr "Of kies een aangepaste papier-grootte"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid ""
"To manually change the paper size, you need to create a new, empty "
"background."
msgstr ""
"Om manueel de papier-grootte te kunnen aanpassen, moet je eerst een nieuwe, "
"lege, achtergrond maken."
#: pretix/control/templates/pretixcontrol/pdf/index.html:234
#: pretix/control/templates/pretixcontrol/pdf/index.html:321
@@ -27962,10 +27943,9 @@ msgid "until"
msgstr "tot"
#: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format
#| msgid "{date_from} {date_to}"
#, python-brace-format
msgid "{date_from}{until}{date_to}"
msgstr "{date_from} {date_to}"
msgstr "{date_from}{until}{date_to}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85
@@ -31726,10 +31706,8 @@ msgid "Payer name"
msgstr "Naam betaler"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt"
msgstr "Betalingskosten"
msgstr "Betalingsbewijs"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -7,8 +7,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-30 16:00+0000\n"
"Last-Translator: Jan Van Haver <jan.van.haver@gmail.com>\n"
"PO-Revision-Date: 2025-05-01 02:00+0000\n"
"Last-Translator: Foxy Hunter <matthias.vancoillie@outlook.com>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
"nl/>\n"
"Language: nl\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -34,28 +34,28 @@ msgstr "PayPal"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
msgid "Venmo"
msgstr ""
msgstr "Venmo"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
#: pretix/static/pretixpresale/js/walletdetection.js:38
msgid "Apple Pay"
msgstr ""
msgstr "Apple Pay"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
msgid "Itaú"
msgstr ""
msgstr "Itaú"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
msgid "PayPal Credit"
msgstr ""
msgstr "PayPal-krediet"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39
msgid "Credit Card"
msgstr ""
msgstr "Kredietkaart"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
msgid "PayPal Pay Later"
msgstr ""
msgstr "PayPal Pay Later"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL"
@@ -75,7 +75,7 @@ msgstr "giropay"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
msgid "SOFORT"
msgstr ""
msgstr "SOFORT"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
msgid "eps"
@@ -83,51 +83,51 @@ msgstr "eps"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
msgid "MyBank"
msgstr ""
msgstr "MyBank"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
msgid "Przelewy24"
msgstr ""
msgstr "Przelewy24"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
msgid "Verkkopankki"
msgstr ""
msgstr "Verkkopankki"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
msgid "PayU"
msgstr ""
msgstr "PayU"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51
msgid "BLIK"
msgstr ""
msgstr "BLIK"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52
msgid "Trustly"
msgstr ""
msgstr "Trustly"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:53
msgid "Zimpler"
msgstr ""
msgstr "Zimpler"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:54
msgid "Maxima"
msgstr ""
msgstr "Maxima"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:55
msgid "OXXO"
msgstr ""
msgstr "OXXO"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:56
msgid "Boleto"
msgstr ""
msgstr "Boleto"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:57
msgid "WeChat Pay"
msgstr ""
msgstr "WeChat Pay"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
msgid "Mercado Pago"
msgstr ""
msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
@@ -145,7 +145,7 @@ msgstr "Betaling bevestigen …"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:254
msgid "Payment method unavailable"
msgstr ""
msgstr "Betaalmethode niet beschikbaar"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -236,11 +236,11 @@ msgstr "Geannuleerd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed"
msgstr ""
msgstr "Bevestigd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending"
msgstr ""
msgstr "Goedkeuring in afwachting"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed"
@@ -296,14 +296,12 @@ msgid "Ticket code revoked/changed"
msgstr "Ticketcode ingetrokken/veranderd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:63
#, fuzzy
msgid "Ticket blocked"
msgstr "Ticket niet betaald"
msgstr "Ticket geblokkeerd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:64
#, fuzzy
msgid "Ticket not valid at this time"
msgstr "Ticket niet betaald"
msgstr "Ticket is op dit moment niet geldig"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:65
msgid "Order canceled"
@@ -440,7 +438,7 @@ msgstr "is na"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:40
msgid "="
msgstr ""
msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product"
@@ -460,11 +458,11 @@ msgstr "Huidige datum en tijd"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:115
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
msgstr "Huidige dag van de week (1 = Maandag, 7 = Zondag)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:119
msgid "Current entry status"
msgstr ""
msgstr "Huidige toegangstatus"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:123
msgid "Number of previous entries"
@@ -475,36 +473,32 @@ msgid "Number of previous entries since midnight"
msgstr "Aantal eerdere binnenkomsten sinds middernacht"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:131
#, fuzzy
msgid "Number of previous entries since"
msgstr "Aantal eerdere binnenkomsten"
msgstr "Aantal eerdere binnenkomsten sinds"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
#, fuzzy
msgid "Number of previous entries before"
msgstr "Aantal eerdere binnenkomsten"
msgstr "Aantal eerdere binnenkomsten voor"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:139
msgid "Number of days with a previous entry"
msgstr "Aantal dagen met een eerdere binnenkomst"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
#, fuzzy
msgid "Number of days with a previous entry since"
msgstr "Aantal dagen met een eerdere binnenkomst"
msgstr "Aantal dagen met een eerdere binnenkomst sinds"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
#, fuzzy
msgid "Number of days with a previous entry before"
msgstr "Aantal dagen met een eerdere binnenkomst"
msgstr "Aantal dagen met een eerdere binnenkomst voor"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
msgstr "Minuten sinds laatste toegang (-1 bij eerste toegang)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:155
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
msgstr "Minuten sinds de eerste toegang (-1 bij eerste toegang)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:182
msgid "All of the conditions below (AND)"
@@ -548,17 +542,17 @@ msgstr "minuten"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
msgid "Duplicate"
msgstr ""
msgstr "duplicaat"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
msgid "present"
msgstr ""
msgstr "aanwezig"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status"
msgid "absent"
msgstr ""
msgstr "afwezig"
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
@@ -573,9 +567,8 @@ msgid "Group of objects"
msgstr "Groep van objecten"
#: pretix/static/pretixcontrol/js/ui/editor.js:908
#, fuzzy
msgid "Text object (deprecated)"
msgstr "Tekstobject"
msgstr "Tekstobject (verouderd)"
#: pretix/static/pretixcontrol/js/ui/editor.js:910
msgid "Text box"
@@ -662,11 +655,11 @@ msgstr "Alleen geselecteerde"
#: pretix/static/pretixcontrol/js/ui/main.js:820
msgid "Enter page number between 1 and %(max)s."
msgstr ""
msgstr "voer een pagina nummer tussen 1 en %(max)s in."
#: pretix/static/pretixcontrol/js/ui/main.js:823
msgid "Invalid page number."
msgstr ""
msgstr "Ongeldig pagina nummer."
#: pretix/static/pretixcontrol/js/ui/main.js:981
msgid "Use a different name internally"
@@ -752,22 +745,22 @@ msgstr "Uw lokale tijd:"
#: pretix/static/pretixpresale/js/walletdetection.js:39
msgid "Google Pay"
msgstr ""
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
msgstr "Aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
msgstr "Verlaag aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:18
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
msgstr "Verhoog aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
@@ -778,19 +771,18 @@ msgstr "Prijs"
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
msgstr "Originele prijs: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
msgstr "Nieuwe prijs: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy
msgctxt "widget"
msgid "Select"
msgstr "Alleen geselecteerde"
msgstr "Selecteer"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
@@ -838,7 +830,7 @@ msgstr "vanaf %(currency)s %(price)s"
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
msgstr "Afbeelding van %s"
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
@@ -873,21 +865,19 @@ msgstr "Alleen verkrijgbaar met een voucher"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#, fuzzy
msgctxt "widget"
msgid "Not yet available"
msgstr "momenteel beschikbaar: %s"
msgstr "Nog niet beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
msgstr "Niet langer beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#, fuzzy
msgctxt "widget"
msgid "Currently not available"
msgstr "momenteel beschikbaar: %s"
msgstr "Momenteel niet beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#, javascript-format
@@ -920,12 +910,9 @@ msgid "Open ticket shop"
msgstr "Open de ticketwinkel"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "Doorgaan met afrekenen"
msgstr "Afrekenen"
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
@@ -989,16 +976,14 @@ msgid "Continue"
msgstr "Ga verder"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
msgctxt "widget"
msgid "Show variants"
msgstr "Zie variaties"
msgstr "Toon varianten"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
msgctxt "widget"
msgid "Hide variants"
msgstr "Zie variaties"
msgstr "Verberg varianten"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
@@ -1047,6 +1032,9 @@ msgid ""
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
"Sommige of alle tiketcategorieën zijn op heden uitverkocht. Als je wilt, kun "
"je jezelf toevoegen aan de wachtlijst. We zullen je informeren wanneer er "
"weer plaatsen beschikbaar zijn."
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
@@ -1083,31 +1071,31 @@ msgstr "Zo"
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday"
msgstr ""
msgstr "Maandag"
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday"
msgstr ""
msgstr "Dinsdag"
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday"
msgstr ""
msgstr "Woensdag"
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday"
msgstr ""
msgstr "Donderdag"
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday"
msgstr ""
msgstr "Vrijdag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday"
msgstr ""
msgstr "Zaterdag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday"
msgstr ""
msgstr "Zondag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-02-21 19:00+0000\n"
"Last-Translator: anonymous <noreply@weblate.org>\n"
"PO-Revision-Date: 2025-05-06 16:20+0000\n"
"Last-Translator: KC Tseng <tkc0204@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix/zh_Hant/>\n"
"Language: zh_Hant\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.10\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -57,7 +57,7 @@ msgstr "捷克語"
#: pretix/_base_settings.py:96
msgid "Croatian"
msgstr ""
msgstr "克羅埃西亞語"
#: pretix/_base_settings.py:97
msgid "Danish"
@@ -2910,11 +2910,9 @@ msgid "Repeat password"
msgstr "重複"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation"
msgid "not specified"
msgstr "未指定國家/地區。"
msgstr "未指定"
#: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names."
@@ -3980,10 +3978,8 @@ msgid "Grant type"
msgstr "授權類型"
#: pretix/base/models/customers.py:420
#, fuzzy
#| msgid "Required question"
msgid "Require PKCE extension"
msgstr "必填題"
msgstr "需要交換驗證碼用的驗證密鑰(PKCE)擴充功能"
#: pretix/base/models/customers.py:432
msgid "Allowed access scopes"
@@ -4139,12 +4135,9 @@ msgstr ""
"產品僅限於例如解鎖隱藏產品或獲得售罄配額仍可享折扣。"
#: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent"
msgid "Available for dates starting from"
msgstr "之前開始的所有日期"
msgstr "適用日期始於"
#: pretix/base/models/discount.py:182
#, fuzzy
@@ -5333,18 +5326,12 @@ msgid "Unknown country code."
msgstr "未知國家代碼."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value."
msgstr "最大計數需要大於最小計數。"
msgstr "最大日期不得早於最小。"
#: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value."
msgstr "最大使用次數,不得低於最小使用次數。"
msgstr "最大不得低於最小。"
#: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -6738,11 +6725,9 @@ msgid "The payment for this invoice has already been received."
msgstr "此發票的付款已收到。"
#: pretix/base/payment.py:970
#, fuzzy
#| msgid "This payment can not be canceled at the moment."
msgid ""
"This payment is already being processed and can not be canceled any more."
msgstr "此付款目前無法取消。"
msgstr "此付款已在處理中,無法取消。"
#: pretix/base/payment.py:984
msgid "Automatic refunds are not supported by this payment provider."
@@ -7087,7 +7072,7 @@ msgstr "活動從工作日開始"
#: pretix/base/pdf.py:266 pretix/base/pdf.py:295
#: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1240
msgid "Friday"
msgstr "星期五"
msgstr "五"
#: pretix/base/pdf.py:270
msgid "Event end date and time"
@@ -7762,27 +7747,27 @@ msgstr "工作日"
#: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1236
msgid "Monday"
msgstr "星期一"
msgstr "一"
#: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1237
msgid "Tuesday"
msgstr "星期二"
msgstr "二"
#: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1238
msgid "Wednesday"
msgstr "星期三"
msgstr "三"
#: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1239
msgid "Thursday"
msgstr "星期四"
msgstr "四"
#: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1241
msgid "Saturday"
msgstr "星期六"
msgstr "六"
#: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1242
msgid "Sunday"
msgstr "星期天"
msgstr "週日"
#: pretix/base/services/checkin.py:368
#, python-brace-format
@@ -9315,6 +9300,9 @@ msgid ""
"page. Note that pretix still is a system built around events and the date "
"may still show up in other places."
msgstr ""
"如果您僅出售無特定日期的物品(例如:禮品卡或可隨時使用的門票),請取消勾選此"
"方塊。系統將停止在某些地方活動開始頁面顯示活動日期。請注意pretix "
"仍然是一個圍繞建立活動的系統,日期可能仍會出現在其他地方。"
#: pretix/base/settings.py:1326
msgid "Show event end date"
@@ -10920,13 +10908,6 @@ msgid "Header image"
msgstr "標題圖像"
#: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo "
@@ -10934,9 +10915,10 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens."
msgstr ""
"如果你提供徽章標誌圖片,默認情況下,我們不會在頁中顯示您的活動名稱和日期。"
"默認情況下我們顯示的徽標大小最大為1140x120圖元。您可以使用以下設置增加大"
"小。我們建議不要在圖片上使用小細節,因為它將在較小的螢幕上調整大小。"
"如果你提供標誌圖片,預設情況下,我們不會在頁中顯示您的活動名稱和日期。如果"
"您使用白色背景的標誌我們顯示標誌尺寸最大為1140x120像素其餘情況的最大尺寸"
"為您1120x120像素。您可以使用下列設定擴大尺寸。我們建議不要在圖片上使用小細節"
",因為它的尺寸將在較小的螢幕被調整。"
#: pretix/base/settings.py:2906 pretix/base/settings.py:2949
msgid "Use header image in its full size"
@@ -10960,13 +10942,6 @@ msgstr ""
"的標題圖像,則將忽略此選項,並始終顯示活動標題。"
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid ""
"If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo "
@@ -10974,10 +10949,11 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens."
msgstr ""
"如果你提供徽章標誌圖片,預設情況下,我們不會在頁面抬頭中顯示你的活動名稱和"
"日期。預設值情況下我們顯示的徽章標誌圖片大小最大為1140x120圖元。你可以使用"
"以下設置增加大小。我們建議不要在圖片上使用小細節,因為圖片將在較小的螢幕上調"
"整大小。"
"如果你提供標誌圖片,預設情況下,我們不會在頁中顯示你的活動名稱和日期。如果"
"你使用白色背景我們顯示的標誌尺寸最大為1140x120像素。否則最大尺寸為 "
"1120x120 "
"像素。你可以使用下列設定增加大小。我們建議不要在圖片上使用小細節,因為圖片將"
"在較小的螢幕上調整尺寸。"
#: pretix/base/settings.py:2959
msgid "Use header image also for events without an individually uploaded logo"
@@ -11352,18 +11328,14 @@ msgid "MA"
msgstr "MA"
#: pretix/base/settings.py:3722 pretix/base/settings.py:3724
#, fuzzy
#| msgid "Provider name"
msgctxt "address"
msgid "Province"
msgstr "提供者名稱"
msgstr ""
#: pretix/base/settings.py:3723
#, fuzzy
#| msgid "Price effect"
msgctxt "address"
msgid "Prefecture"
msgstr "價格效應"
msgstr "縣/州/區"
#: pretix/base/settings.py:3812 pretix/control/forms/event.py:228
msgid ""
@@ -13372,7 +13344,7 @@ msgstr "小冊子磁磚屬性"
#: pretix/control/forms/global_settings.py:103
msgid "ApplePay MerchantID Domain Association"
msgstr ""
msgstr "ApplePay 網域憑證驗證"
#: pretix/control/forms/global_settings.py:104
#, python-brace-format
@@ -13798,7 +13770,8 @@ msgid ""
"The password contains characters not supported by our email system. Please "
"only use characters A-Z, a-z, 0-9, and common special characters "
"({characters})."
msgstr ""
msgstr "密碼包含我們電子郵件系統不支援的字元。僅接受字元 A-Z、a-z、0-9 "
"和常見的特殊字元 ({characters})。"
#: pretix/control/forms/mailsetup.py:70
msgid "Use STARTTLS"
@@ -14132,7 +14105,7 @@ msgstr "收件人"
#, fuzzy, python-brace-format
#| msgid "Attach ticket files"
msgid "Attach {file}"
msgstr "附加票證檔"
msgstr "附件{files}"
#: pretix/control/forms/orders.py:796
msgid ""
@@ -14448,7 +14421,7 @@ msgstr "電話欄位"
#: pretix/control/forms/organizer.py:1048
msgctxt "sso_oidc"
msgid "Query parameters"
msgstr ""
msgstr "查詢參數"
#: pretix/control/forms/organizer.py:1049
#, python-brace-format
@@ -14456,7 +14429,7 @@ msgctxt "sso_oidc"
msgid ""
"Optional query parameters, that will be added to calls to the authorization "
"endpoint. Enter as: {example}"
msgstr ""
msgstr "可選查詢參數,將被加入到對授權端的呼叫。輸入為:{example}"
#: pretix/control/forms/organizer.py:1110
msgid "Invalidate old client secret and generate a new one"
@@ -16770,20 +16743,14 @@ msgid "Delete check-ins"
msgstr "刪除簽到"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:15
#, fuzzy, python-format
#| msgid ""
#| "Are you sure you want to permanently delete the check-ins of <strong>one "
#| "ticket</strong>."
#| msgid_plural ""
#| "Are you sure you want to permanently delete the check-ins of "
#| "<strong>%(count)s tickets</strong>?"
#, python-format
msgid ""
"Are you sure you want to permanently delete the check-ins of <strong>one "
"ticket</strong>?"
msgid_plural ""
"Are you sure you want to permanently delete the check-ins of "
"<strong>%(count)s tickets</strong>?"
msgstr[0] "你確定要永久刪除<strong>%(count)s 張票</strong>的簽到清單嗎?"
msgstr[0] "你確定要永久刪除<strong>%(count)s 張票</strong>的報到紀錄嗎?"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:24
#: pretix/control/templates/pretixcontrol/checkin/list_delete.html:18
@@ -17443,6 +17410,18 @@ msgid ""
"Best regards, \n"
"Your %(instance)s team\n"
msgstr ""
"你好,\n"
"\n"
"偵測到有人從不尋常或新位置登入您的 %(instance)s 帳戶。登入是在 %(country)s "
"使用 %(os)s 系統的 %(agent)s 執行。\n"
"\n"
"如果這是您,您可以放心忽略這封電子郵件。\n"
"\n"
"如果這不是您本人,我們建議您在帳戶設定中變更密碼:\n"
"\n"
"%(url)s\n"
"\n"
"%(instance)s 團隊 敬上\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format
@@ -18209,10 +18188,8 @@ msgid "Disabled"
msgstr "禁用"
#: pretix/control/templates/pretixcontrol/event/payment.html:57
#, fuzzy
#| msgid "Enable waiting list"
msgid "Enable additional payment plugins"
msgstr "啟動候補名單"
msgstr "啟用其他支付外掛"
#: pretix/control/templates/pretixcontrol/event/payment.html:66
msgid "Deadlines"
@@ -18308,10 +18285,8 @@ msgid "Your changes have been saved."
msgstr "你的更改已儲存。"
#: pretix/control/templates/pretixcontrol/event/plugins.html:34
#, fuzzy
#| msgid "Check results"
msgid "Search results"
msgstr "檢查結果"
msgstr "搜尋結果"
#: pretix/control/templates/pretixcontrol/event/plugins.html:56
msgid "Top recommendation"
@@ -18331,16 +18306,12 @@ msgstr "無法使用"
#: pretix/control/templates/pretixcontrol/event/plugins.html:93
#: pretix/control/templates/pretixcontrol/event/plugins.html:105
#, fuzzy
#| msgid "Login settings"
msgid "Open plugin settings"
msgstr "登錄設定"
msgstr "開啟外掛設定"
#: pretix/control/templates/pretixcontrol/event/plugins.html:94
#, fuzzy
#| msgid "Go to shop"
msgid "Go to"
msgstr "到商店"
msgstr "前往"
#: pretix/control/templates/pretixcontrol/event/plugins.html:116
#: pretix/control/templates/pretixcontrol/oauth/app_delete.html:15
@@ -19143,18 +19114,21 @@ msgid ""
"If you have a pretix Enterprise license, this report must be submitted to "
"pretix support when your license renews. It may also be requested by pretix "
"support to aid debugging of problems."
msgstr ""
msgstr "如果您擁有 "
"Pretix企業版許可證必須在許可證續約時將此報告提交給pretix支援團隊。 pretix "
"支援人員可能會要求以協助調試問題。"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:8
msgid ""
"It serves two purposes: Collecting useful information that might help with "
"debugging problems in your pretix installation, and verifying that your "
"usage of pretix is in compliance with the Enterprise license you purchased."
msgstr ""
msgstr "它有兩個目的:收集可能有助於調試 pretix 安裝中問題的有用資訊,"
"以及驗證您使用pretix 時是否符合您購買的企業許可證。"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:14
msgid "First month of license term:"
msgstr ""
msgstr "許可期限的第一個月:"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:16
msgid "January"
@@ -19477,10 +19451,10 @@ msgstr "是否確實要刪除商品<strong>%(item)s</strong>"
#: pretix/control/templates/pretixcontrol/item/delete.html:22
#: pretix/control/templates/pretixcontrol/items/quota_delete.html:24
#, fuzzy, python-format
#, python-format
msgid "That will cause %(count)s voucher to be unusable."
msgid_plural "That will cause %(count)s voucher to be unusable."
msgstr[0] "這將導致%(count)s優惠券不可用.這將導致 %(count)s的優惠券不可用."
msgstr[0] "這將導致%(count)s優惠券無法使用。"
#: pretix/control/templates/pretixcontrol/item/delete.html:29
#: pretix/control/templates/pretixcontrol/items/quota_delete.html:31
@@ -19861,20 +19835,13 @@ msgid "taxes"
msgstr "稅"
#: pretix/control/templates/pretixcontrol/items/index.html:10
#, fuzzy
#| msgid ""
#| "Below, you find a list of all available products. You can click on a "
#| "product name to inspect and change product details. You can also use the "
#| "buttons on the right to change the order of products within a give "
#| "category."
msgid ""
"Below, you find a list of all available products. You can click on a product "
"name to inspect and change product details. You can also use the buttons on "
"the right to change the order of products or move products to a different "
"category."
msgstr ""
"下面,你可以找到所有可用產品的清單。你可以按下產品名稱來檢查和更改產品詳細資"
"訊。你還可以使用右側的按鈕更改給定類別中產品的順序。"
msgstr "下面,你可以找到所有可用產品的清單。你可以按下產品名稱來檢查和更改產品詳細資"
"訊。你也可使用右側按鈕變更產品順序或將其移至其他類別。"
#: pretix/control/templates/pretixcontrol/items/index.html:19
msgid "You haven't created any products yet."

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-01-31 01:00+0000\n"
"Last-Translator: Chislon <chislon@gmail.com>\n"
"PO-Revision-Date: 2025-05-06 16:20+0000\n"
"Last-Translator: KC Tseng <tkc0204@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix-js/zh_Hant/>\n"
"Language: zh_Hant\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.9.2\n"
"X-Generator: Weblate 5.11.1\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -669,10 +669,8 @@ msgid "Calculating default price…"
msgstr "計算預設價格…"
#: pretix/static/pretixcontrol/js/ui/plugins.js:69
#, fuzzy
#| msgid "Search results"
msgid "No results"
msgstr "搜尋結果"
msgstr "結果"
#: pretix/static/pretixcontrol/js/ui/question.js:42
msgid "Others"
@@ -898,12 +896,9 @@ msgid "Open ticket shop"
msgstr "開放售票"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "繼續結帳"
msgstr "結帳"
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
@@ -1058,31 +1053,31 @@ msgstr "星期天"
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday"
msgstr ""
msgstr "週一"
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday"
msgstr ""
msgstr "週二"
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday"
msgstr ""
msgstr "週三"
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday"
msgstr ""
msgstr "週四"
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday"
msgstr ""
msgstr "週五"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday"
msgstr ""
msgstr "週六"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday"
msgstr ""
msgstr "週日"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January"

View File

@@ -801,7 +801,13 @@ class CheckinLogList(ListExporter):
ia = ci.position.order.invoice_address
except InvoiceAddress.DoesNotExist:
ia = InvoiceAddress()
name = (
ci.position.attendee_name or
(ci.position.addon_to.attendee_name if ci.position.addon_to else '') or
ia.name
)
else:
name = ""
yield [
date_format(ci.datetime.astimezone(self.timezone), 'SHORT_DATE_FORMAT'),
date_format(ci.datetime.astimezone(self.timezone), 'TIME_FORMAT'),
@@ -811,7 +817,7 @@ class CheckinLogList(ListExporter):
ci.position.positionid if ci.position else '',
ci.raw_barcode or ci.position.secret,
str(ci.position.item) if ci.position else (str(ci.raw_item) if ci.raw_item else ''),
(ci.position.attendee_name or ia.name) if ci.position else '',
name,
str(ci.device) if ci.device else '',
_('Yes') if ci.force_sent is True else (_('No') if ci.force_sent is False else '?'),
_('Yes') if ci.forced else _('No'),

View File

@@ -44,6 +44,7 @@ from pretix.base.forms.questions import (
from pretix.base.i18n import get_language_without_region
from pretix.base.models import Customer
from pretix.helpers.http import get_client_ip
from pretix.multidomain.urlreverse import build_absolute_uri
class TokenGenerator(PasswordResetTokenGenerator):
@@ -68,16 +69,24 @@ class AuthenticationForm(forms.Form):
'invalid_login': _(
"We have not found an account with this email address and password."
),
'invalid_login_email': _('Please verify that you entered the correct email addess.'),
'invalid_login_password': _('Please enter the correct password.'),
'inactive': _("This account is disabled."),
'unverified': _("You have not yet activated your account and set a password. Please click the link in the "
"email we sent you. Click \"Reset password\" to receive a new email in case you cannot find "
"it again."),
"email we sent you. In case you cannot find it, click \"Forgot your password?\" to receive "
"a new email."),
}
def __init__(self, request=None, *args, **kwargs):
self.request = request
self.customer_cache = None
super().__init__(*args, **kwargs)
self.fields['password'].help_text = "<a href='{}'>{}</a>".format(
build_absolute_uri(False, 'presale:organizer.customer.resetpw', kwargs={
'organizer': request.organizer.slug,
}),
_('Forgot your password?')
)
def clean(self):
email = self.cleaned_data.get('email')
@@ -94,6 +103,8 @@ class AuthenticationForm(forms.Form):
if u.check_password(password):
self.customer_cache = u
if self.customer_cache is None:
self.add_error("email", self.error_messages['invalid_login_email'])
self.add_error("password", self.error_messages['invalid_login_password'])
raise forms.ValidationError(
self.error_messages['invalid_login'],
code='invalid_login',
@@ -110,15 +121,9 @@ class AuthenticationForm(forms.Form):
def confirm_login_allowed(self, user):
if not user.is_active:
raise forms.ValidationError(
self.error_messages['inactive'],
code='inactive',
)
if not user.is_verified:
raise forms.ValidationError(
self.error_messages['unverified'],
code='unverified',
)
self.add_error("email", self.error_messages['inactive'])
elif not user.is_verified:
self.add_error("password", self.error_messages['unverified'])
def get_customer(self):
return self.customer_cache

View File

@@ -44,6 +44,9 @@
</head>
<body class="nojs" data-locale="{{ request.LANGUAGE_CODE }}" data-now="{% now "U.u" %}" data-datetimeformat="{{ js_datetime_format }}" data-timeformat="{{ js_time_format }}" data-dateformat="{{ js_date_format }}" data-datetimelocale="{{ js_locale }}" data-currency="{{ request.event.currency }}">
{{ html_page_header|safe }}
<nav id="skip-to-main" role="navigation" aria-label="{% trans "Skip link" context "skip-to-main-nav" %}" class="sr-only on-focus-visible">
<p><a href="#content">{% trans "Skip to main content" %}</a></p>
</nav>
<header>
{% if ie_deprecation_warning %}
<div class="old-browser-warning">

View File

@@ -13,7 +13,7 @@
{% endblock %}
{% block content %}
<aside aria-label="{% trans "Your cart" %}">
<details class="panel panel-default cart{% if "open_cart" not in request.GET %} sneak-peek{% endif %}" {% if "open_cart" in request.GET %}open{% endif %}>
<details class="panel panel-default cart sneak-peek-container" open>
<summary class="panel-heading">
<h2 class="panel-title">
<span>
@@ -33,11 +33,15 @@
</summary>
{% if "open_cart" not in request.GET %}
<p class="sneak-peek-trigger">
<button type="button" class="btn btn-default">{% trans "Show full cart" %}</button>
<button type="button" class="btn btn-default" aria-controls="cart-foldable-container">{% trans "Show full cart" %}</button>
</p>
{% endif %}
<div>
{% if "open_cart" not in request.GET %}
<div class="panel-body sneak-peek-content" id="cart-foldable-container">
{% else %}
<div class="panel-body">
{% endif %}
{% include "pretixpresale/event/fragment_cart.html" with cart=cart event=request.event %}
</div>
</div>

View File

@@ -48,15 +48,6 @@
</p>
{% if request.organizer.settings.customer_accounts_native %}
{% bootstrap_form login_form layout="checkout" %}
<div class="row">
<div class="col-md-offset-3 col-md-9">
<a
href="{% abseventurl request.organizer "presale:organizer.customer.resetpw" %}"
target="_blank">
{% trans "Reset password" %}
</a>
</div>
</div>
{% endif %}
<div class="row">
<div class="col-md-6 col-md-offset-3">

View File

@@ -23,10 +23,7 @@
{% trans "Seat" %}
</label>
<div class="col-md-9 form-control-text">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{% include "icons/seat.svg" with cls="svg-icon" %}
{{ form.position.seat }}
</div>
</div>

View File

@@ -6,11 +6,6 @@
{% load escapejson %}
{% block inner %}
<p>{% trans "Before we continue, we need you to answer some questions." %}</p>
<p class="required-legend" aria-hidden="true">
{% blocktrans trimmed %}
You need to fill all fields that are marked with <span>*</span> to continue.
{% endblocktrans %}
</p>
{% if profiles_data %}
{{ profiles_data|json_script:"profiles_json" }}
{% endif %}
@@ -100,10 +95,7 @@
{% trans "Seat" %}
</label>
<div class="col-md-9 form-control-text">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{% include "icons/seat.svg" with cls="svg-icon" %}
{{ pos.seat }}
</div>
</div>

View File

@@ -44,11 +44,8 @@
<div class="cart-icon-details">
<dt class="sr-only">{% trans "Seat:" %}</dt>
<dd>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{{ line.seat }}
{% include "icons/seat.svg" with cls="svg-icon" %}
{{ line.seat }}
</dd>
</div>
{% endif %}

View File

@@ -7,7 +7,7 @@
{% load rich_text %}
{% for tup in items_by_category %}{% with category=tup.0 items=tup.1 form_prefix=tup.2 %}
{% if category %}
<section aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}>
<section class="item-category" aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}>
<h{{ headline_level|default:3 }} class="h3" id="{{ form_prefix }}category-{{ category.id }}">{{ category.name }}
{% if category.subevent_name %}
<small class="text-muted"><i class="fa fa-calendar" aria-hidden="true"></i> {{ category.subevent_name }}</small>
@@ -24,7 +24,7 @@
<div id="{{ form_prefix }}category-info-{{ category.id }}">{{ category.description|localize|rich_text }}</div>
{% endif %}
{% else %}
<section aria-labelledby="{{ form_prefix }}category-none">
<section class="item-category" aria-labelledby="{{ form_prefix }}category-none">
<h{{ headline_level|default:"3" }} id="{{ form_prefix }}category-none" class="h3 sr-only">{% trans "Uncategorized items" %}</h{{ headline_level|default:3 }}>
{% endif %}
{% for item in items %}

View File

@@ -1,44 +1,55 @@
{% load i18n %}
{% load eventurl %}
{% load icon %}
{% load urlreplace %}
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="col-sm-4 col-xs-2 text-left flip">
<li class="text-left flip">
{% if subevent_list.has_before %}
<a href="?{% url_replace request "date" subevent_list.before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.before|date:"F Y" %}Show previous month, {{ month }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{% icon "arrow-left" %}
<span class="hidden-xs">{{ subevent_list.before|date:"F Y" }}</span>
</a>
{% endif %}
</li>
<li class="col-sm-4 col-xs-8 text-center">
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<select name="date" class="form-control" aria-label="{% trans "Select month to show" %}">
{% for y in subevent_list.years %}
<optgroup label="{{ y }}">
{% for m in subevent_list.months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
<fieldset>
<legend class="sr-only">{% trans "Select a month to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Month" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" id="calendar-input-date">
{% for y in subevent_list.years %}
<optgroup label="{{ y }}">
{% for m in subevent_list.months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="col-sm-4 col-xs-2 text-right flip">
<li class="text-right flip">
{% if subevent_list.has_after %}
<a href="?{% url_replace request "date" subevent_list.after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.after|date:"F Y" %}Show next month, {{ month }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:"F Y" }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>

View File

@@ -1,63 +1,78 @@
{% load i18n %}
{% load eventurl %}
{% load icon %}
{% load urlreplace %}
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="col-sm-4 col-xs-2 text-left flip">
<li class="text-left flip">
{% if subevent_list.has_before %}
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{% icon "arrow-left" %}
<span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
</a>
{% endif %}
</li>
<li class="col-sm-4 col-xs-8 text-center">
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
{% for weeks_per_year in subevent_list.weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:subevent_list.week_format }}
({{ w.0|date:subevent_list.short_month_day_format }} {{ w.1|date:subevent_list.short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
</select>
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
<fieldset>
<legend class="sr-only">{% trans "Select a week to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Week" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
{% for weeks_per_year in subevent_list.weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:subevent_list.week_format }}
({{ w.0|date:subevent_list.short_month_day_format }} {{ w.1|date:subevent_list.short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="col-sm-4 col-xs-2 text-right flip">
<li class="text-right flip">
{% if subevent_list.has_after %}
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=event.settings.event_list_availability days=subevent_list.days show_names=subevent_list.show_names %}
<div class="visible-xs text-center" aria-hidden="true">
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{{ subevent_list.before|date:subevent_list.week_format }}
</a>
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
{{ subevent_list.after|date:subevent_list.week_format }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
<div class="row visible-xs">
<div class="col-xs-6 text-left flip">
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
</a>
</div>
<div class="col-xs-6 text-right flip">
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
</div>
</div>

View File

@@ -71,14 +71,15 @@
{% endif %}
{% if subevent_list_foldable %}
<details class="panel panel-{% if show_cart %}primary{% else %}default{% endif %}">
<summary class="panel-heading">
{% else %}
<div class="panel panel-default">
<div class="panel-heading">
{% endif %}
<h3 class="panel-title"><b>
{% if subevent_list.list_type != "list" or subevent_list.visible_events %}
{% if subevent_list_foldable %}
<details class="panel panel-{% if show_cart %}primary{% else %}default{% endif %}">
<summary class="panel-heading">
{% else %}
<div class="panel panel-default">
<div class="panel-heading">
{% endif %}
<h3 class="panel-title"><strong>
{% if subevent_list_foldable %}
{% if show_cart %}
{% trans "Add tickets for a different date" %}
@@ -87,36 +88,37 @@
{% endif %}
{% else %}
{% trans "Choose date to book a ticket" %}
{% endif %}</b>
</h3>
{% if subevent_list_foldable %}
</summary>
<div>
{% else %}
</div>
{% endif %}
{% endif %}</strong>
</h3>
{% if subevent_list_foldable %}
</summary>
<div>
{% else %}
</div>
{% endif %}
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div>
{% endif %}
<div class="panel-body">
{% cache_large 15 subevent_list subevent_list_cache_key %}
{% if subevent_list.list_type == "calendar" %}
{% include "pretixpresale/event/fragment_subevent_calendar.html" %}
{% elif subevent_list.list_type == "week" %}
{% include "pretixpresale/event/fragment_subevent_calendar_week.html" %}
{% else %}
{% include "pretixpresale/event/fragment_subevent_list.html" %}
{% endif %}
{% endcache_large %}
</div>
{% if subevent_list_foldable %}
<div class="panel-body">
{% cache_large 15 subevent_list subevent_list_cache_key %}
{% if subevent_list.list_type == "calendar" %}
{% include "pretixpresale/event/fragment_subevent_calendar.html" %}
{% elif subevent_list.list_type == "week" %}
{% include "pretixpresale/event/fragment_subevent_calendar_week.html" %}
{% else %}
{% include "pretixpresale/event/fragment_subevent_list.html" %}
{% endif %}
{% endcache_large %}
</div>
</details>
{% else %}
</div>
{% endif %}
{% if subevent_list_foldable %}
</div>
</details>
{% else %}
</div>
{% endif %}
{% endif %}
{% if subevent %}
<h2 class="subevent-head">{{ subevent.name }}</h2>

View File

@@ -10,15 +10,13 @@
<h2>
{% trans "Resend order links" %}
</h2>
<div class="row">
<div class="panel-body">
<p>
{% blocktrans trimmed %}
If you lost the link to your order or orders, please enter the email address you
used for your order. We will send you an email with links to all orders you placed
using this email address.
{% endblocktrans %}
</div>
</div>
</p>
<div class="row">
<form class="form" method="post">
{% csrf_token %}

View File

@@ -7,7 +7,7 @@
<thead>
<tr>
{% for d in weeks|iter_weekdays %}
<th><span aria-hidden="true">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th>
<th><span aria-hidden="true" class="text-muted">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th>
{% endfor %}
</tr>
</thead>

View File

@@ -16,6 +16,7 @@
{% for f in filter_form.fields %}
{% bootstrap_field filter_form|getitem:f %}
{% endfor %}
<div class="visible-xs">&nbsp;</div>
<button type="submit" class="btn btn-primary">
<span class="fa fa-filter" aria-hidden="true"></span>
{% trans "Filter" %}

View File

@@ -1,61 +1,91 @@
{% extends "pretixpresale/organizers/base.html" %}
{% load i18n %}
{% load icon %}
{% load rich_text %}
{% load eventurl %}
{% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %}
{% if organizer_homepage_text %}
<div>
<div class="blank-after">
{{ organizer_homepage_text | rich_text }}
</div>
{% endif %}
<h3>{{ date|date:"F Y" }}</h3>
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<div class="row">
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %}
</div>
<div class="col-md-2 col-sm-4 col-xs-8 text-center" role="group" aria-label="{% trans "Select month to show" %}">
<select name="date" class="form-control" aria-label="{% trans "Month" %}">
{% for y in years %}
<optgroup label="{{ y }}">
{% for m in months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
</div>
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:"F Y" }}</span>
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
<span class="fa fa-arrow-right" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ after|date:"F Y" }}</span>
</a>
{% endif %}
</div>
<div class="blank-after text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %}
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
<strong>
{% blocktrans trimmed with month=date|date:"F Y" %}
Events in {{ month }}
{% endblocktrans %}
</strong>
</h2>
</div>
</form>
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div>
{% endif %}
<div class="panel-body">
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="text-left flip">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
{% icon "arrow-left" %}
<span class="hidden-xs">{{ before|date:"F Y" }}</span>
</a>
{% endif %}
</li>
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a month to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Month" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" id="calendar-input-date">
{% for y in years %}
<optgroup label="{{ y }}">
{% for m in months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
<span class="hidden-xs">{{ after|date:"F Y" }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
</div>
</div>
{% if multiple_timezones %}
<div class="alert alert-info">
{% blocktrans trimmed %}

View File

@@ -1,68 +1,102 @@
{% extends "pretixpresale/organizers/base.html" %}
{% load i18n %}
{% load icon %}
{% load rich_text %}
{% load eventurl %}
{% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %}
{% if organizer_homepage_text %}
<div>
<div class="blank-after">
{{ organizer_homepage_text | rich_text }}
</div>
{% endif %}
<h3>{{ date|date:"DATE_FORMAT" }}</h3>
<form class="form-inline" method="get" id="monthselform"
action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<div class="row">
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %}
<div class="blank-after text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %}
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
<strong>
{% blocktrans trimmed with day=date|date:"DATE_FORMAT" %}
Events on {{ day }}
{% endblocktrans %}
</strong>
</h2>
</div>
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div>
<div class="col-md-2 col-sm-4 col-xs-8 text-center">
<input class="datepickerfield form-control" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date">
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
</div>
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip">
{% endif %}
<div class="panel-body">
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="text-left flip">
{% if has_before %}
<a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}">
{% icon "arrow-left" %}
<span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
</a>
{% endif %}
</li>
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a date to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Date" %}</label>
</div>
<div class="input-group">
<input class="datepickerfield form-control" id="calendar-input-date" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date">
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show date" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}">
<span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="row visible-xs">
{% if has_before %}
<div class="col-xs-6 text-left flip">
<a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}">
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
<span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
</a>
</div>
{% endif %}
{% if has_after %}
<div class="col-xs-6 text-right flip{% if not has_before %} col-xs-offset-6{% endif %}">
<a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}">
<span class="hidden-sm hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
class="btn btn-default">
<span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
</div>
{% endif %}
</div>
</div>
</form>
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="col-sm-4 visible-xs text-center">
{% if has_before %}
<a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{{ before|date:"SHORT_DATE_FORMAT" }}
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default">
{{ after|date:"SHORT_DATE_FORMAT" }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
{% endif %}
</div>
{% if multiple_timezones %}

View File

@@ -1,82 +1,117 @@
{% extends "pretixpresale/organizers/base.html" %}
{% load i18n %}
{% load icon %}
{% load rich_text %}
{% load eventurl %}
{% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %}
{% if organizer_homepage_text %}
<div>
<div class="blank-after">
{{ organizer_homepage_text | rich_text }}
</div>
{% endif %}
<h3>{{ date|date:"F Y" }}</h3>
<form class="form-inline" method="get" id="monthselform"
action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<div class="row">
<div class="col-md-4 col-sm-6 col-xs-12 text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %}
<div class="blank-after text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %}
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
<strong>
{% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date|date:short_month_day_format %}
Events in {{ week }} ({{ week_day_from }} {{ week_day_to }})
{% endblocktrans %}
</strong>
</h2>
</div>
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div>
<div class="col-md-4 col-sm-4 col-xs-8 text-center">
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
{% for weeks_per_year in weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:week_format }}
({{ w.0|date:short_month_day_format }} {{ w.1|date:short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
</div>
<div class="col-md-4 col-sm-2 col-xs-4 text-right flip">
{% endif %}
<div class="panel-body">
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="text-left flip">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}">
{% icon "arrow-left" %}
<span class="hidden-xs">{{ before|date:week_format }}</span>
</a>
{% endif %}
</li>
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a week to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Week" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" id="calendar-input-date">
{% for weeks_per_year in weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:week_format }}
({{ w.0|date:short_month_day_format }} {{ w.1|date:short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}">
<span class="hidden-xs">{{ after|date:week_format }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="row visible-sm visible-xs">
{% if has_before %}
<div class="col-xs-6 text-left flip">
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}">
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:week_format }}</span>
{{ before|date:week_format }}
</a>
</div>
{% endif %}
{% if has_after %}
<div class="col-xs-6 text-right flip">
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}">
<span class="hidden-sm hidden-xs">{{ after|date:week_format }}</span>
class="btn btn-default">
{{ after|date:week_format }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
</div>
{% endif %}
</div>
</div>
</form>
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="col-sm-12 visible-sm visible-xs text-center">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{{ before|date:week_format }}
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default">
{{ after|date:week_format }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
{% endif %}
</div>
{% if multiple_timezones %}
<div class="alert alert-info">
{% blocktrans trimmed %}

View File

@@ -7,7 +7,7 @@
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
{% icon "address-card-o" %} <b>{% trans "Delete address" %}</b>
{% icon "address-card-o" %} <strong>{% trans "Delete address" %}</strong>
</h3>
</div>
<div class="panel-body account-addresses">

View File

@@ -8,7 +8,7 @@
<div class="panel-heading">
<h3 class="panel-title">
{% icon "address-card-o" %}
<b>{% trans "Addresses" %}</b> ({{ page_obj.paginator.count }})
<strong>{% trans "Addresses" %}</strong> ({{ page_obj.paginator.count }})
</h3>
</div>
<div class="panel-body">

View File

@@ -6,19 +6,26 @@
{% block title %}{% trans "Account information" %}{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% blocktrans trimmed %}
Update your account information
{% endblocktrans %}
</h2>
<form action="" method="post">
<div class="col-xs-12">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% trans "Save" %}
</button>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
{% trans "Update your account information" %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div>
</form>
</div>

View File

@@ -7,48 +7,70 @@
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% if request.organizer.settings.customer_accounts_native %}
<form action="" method="post" class="form-horizontal blank-after">
{% csrf_token %}
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
{% blocktrans trimmed with org=request.organizer.name %}
Sign in to your account at {{ org }}
{% endblocktrans %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
<div class="row">
<div class="col-md-8 col-sm-6 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
<small>
{% icon "address-book-o" %}
{% trans "Create account" %}
</small>
</a>
</div>
<div class="col-md-4 col-sm-6">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% icon "sign-in" %}
{% trans "Log in" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center"><br>
<a
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "address-book-o" %}
{% trans "Create account" %}
</a>
</div>
</div>
</div>
</div>
</form>
{% else %}
<h2 class="blank-after">
{% blocktrans trimmed with org=request.organizer.name %}
Sign in to your account at {{ org }}
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %}
{% if request.organizer.settings.customer_accounts_native %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% icon "sign-in" %}
{% trans "Log in" %}
</button>
</div>
{% endif %}
</h2>
{% endif %}
{% if providers %}
<ul class="list-inline text-center blank-after">
{% for provider in providers %}
{% if provider.is_active %}
<li>
<a href="{% eventurl request.organizer "presale:organizer.customer.login" provider=provider.pk %}?{{ request.META.QUERY_STRING }}"
class="btn btn-primary btn-lg btn-block">
{{ provider.button_label }}
class="btn {% if request.organizer.settings.customer_accounts_native %}btn-default{% else %}btn-primary btn-lg btn-block{% endif %}">
{% icon "sign-in" %} {{ provider.button_label }}
</a>
{% endif %}
</li>
{% endfor %}
{% if request.organizer.settings.customer_accounts_native %}
<div class="row">
<div class="col-md-6">
<a class="btn btn-link btn-block"
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "address-book-o" %}
{% trans "Create account" %}
</a>
</div>
<div class="col-md-6">
<a class="btn btn-link btn-block"
href="{% eventurl request.organizer "presale:organizer.customer.resetpw" %}">
{% trans "Reset password" %}
</a>
</div>
</div>
{% endif %}
</form>
</ul>
{% endif %}
</div>
</div>
<p>&nbsp;</p>

View File

@@ -13,7 +13,7 @@
{% else %}
{% icon "id-badge" %}
{% endif %}
<b>{% trans "Your membership" %}</b>
<strong>{% trans "Your membership" %}</strong>
{% if membership.testmode %}
<span class="h6">
{% textbubble "warning" %}

View File

@@ -9,7 +9,7 @@
<div class="panel-heading">
<h3 class="panel-title">
{% icon "id-badge" %}
<b>{% trans "Memberships" %}</b> ({{ page_obj.paginator.count }})
<strong>{% trans "Memberships" %}</strong> ({{ page_obj.paginator.count }})
</h3>
</div>
<div class="panel-body">

View File

@@ -10,7 +10,7 @@
<div class="panel-heading">
<h3 class="panel-title">
{% icon "shopping-cart" %}
<b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }})
<strong>{% trans "Orders" %}</strong> ({{ page_obj.paginator.count }})
</h3>
</div>
<div class="panel-body">

View File

@@ -7,18 +7,25 @@
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% blocktrans trimmed %}
Set a new password for your account
{% endblocktrans %}
</h2>
<form action="" method="post">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% trans "Save" %}
</button>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
{% trans "Set a new password for your account" %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div>
</form>
</div>

View File

@@ -7,7 +7,7 @@
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
{% icon "user" %} <b>{% trans "Delete profile" %}</b>
{% icon "user" %} <strong>{% trans "Delete profile" %}</strong>
</h3>
</div>
<div class="panel-body">

View File

@@ -8,7 +8,7 @@
<div class="panel-heading">
<h3 class="panel-title">
{% icon "users" %}
<b>{% trans "Attendee profiles" %}</b> ({{ page_obj.paginator.count }})
<strong>{% trans "Attendee profiles" %}</strong> ({{ page_obj.paginator.count }})
</h3>
</div>
<div class="panel-body">

View File

@@ -1,28 +1,54 @@
{% extends "pretixpresale/organizers/base.html" %}
{% load i18n %}
{% load icon %}
{% load eventurl %}
{% load urlreplace %}
{% load bootstrap3 %}
{% block title %}{% trans "Registration" %}{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% blocktrans trimmed with org=request.organizer.name %}
Create a new account at {{ org }}
{% endblocktrans %}
</h2>
<form action="" method="post">
<div class="col-xs-12">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% trans "Create account" %}
</button>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
{% blocktrans trimmed with org=request.organizer.name %}
Create a new account at {{ org }}
{% endblocktrans %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row blank-after">
<div class="col-md-8 col-sm-6 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
<small>
{% icon "sign-in" %}
{% trans "Log in to an existing account" %}
</small>
</a>
</div>
<div class="col-md-4 col-sm-6">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% icon "address-book-o" %}
{% trans "Create account" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center">
<a
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
{% icon "sign-in" %}
{% trans "Log in to an existing account" %}
</a>
</div>
</div>
<a class="btn btn-link btn-block" href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
{% trans "Log in to an existing account" %}
</a>
</form>
</div>
</div>

View File

@@ -1,5 +1,6 @@
{% extends "pretixpresale/organizers/base.html" %}
{% load i18n %}
{% load icon %}
{% load eventurl %}
{% load urlreplace %}
{% load bootstrap3 %}
@@ -7,18 +8,44 @@
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% blocktrans trimmed %}
Password reset
{% endblocktrans %}
</h2>
<form action="" method="post">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% trans "Request a new password" %}
</button>
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
{% trans "Request a new password" %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
<div class="row">
<div class="col-sm-4 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
<small>
{% icon "sign-in" %}
{% trans "Log in" %}
</small>
</a>
</div>
<div class="col-sm-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Request a new password" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center">
<a
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "sign-in" %}
{% trans "Log in" %}
</a>
</div>
</div>
</div>
</div>
</form>
</div>

View File

@@ -7,18 +7,25 @@
{% block content %}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2>
{% blocktrans trimmed %}
Set a new password for your account
{% endblocktrans %}
</h2>
<form action="" method="post">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% trans "Save" %}
</button>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
{% trans "Set a new password for your account" %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row blank-after">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div>
</form>
</div>

View File

@@ -19,28 +19,24 @@
<meta property="og:url" content="{% abseventurl organizer "presale:organizer.index" %}"/>
{% endblock %}
{% block content %}
<div>
{% if organizer_homepage_text %}
{% if organizer_homepage_text %}
<div class="blank-after">
{{ organizer_homepage_text | rich_text }}
{% endif %}
</div>
<div id="monthselform">
<div class="row">
<div class="col-md-12">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
</div>
</div>
{% endif %}
<div class="blank-after text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
<b>
<strong>
{% if "old" in request.GET %}
{% trans "Past events" %}
{% else %}
{% trans "Upcoming events" %}
{% endif %}
</b>
</strong>
</h2>
</div>
{% if filter_form.fields %}

View File

@@ -122,7 +122,7 @@ class LoginView(RedirectBackMixin, FormView):
def get_context_data(self, **kwargs):
return super().get_context_data(
**kwargs,
providers=self.request.organizer.sso_providers.all()
providers=self.request.organizer.sso_providers.filter(is_active=True)
)
def get_form_kwargs(self):

View File

@@ -815,6 +815,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
se for se in context['subevent_list']
if not se.presale_has_ended and (se.best_availability_state is None or se.best_availability_state >= Quota.AVAILABILITY_RESERVED)
]
context['visible_events'] = len(context['subevent_list']) > 0
return context

View File

@@ -51,6 +51,13 @@ $(function () {
const required = 'required' in options && options.required && isRequired && visible;
dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
dependent.prop("required", required);
const label = dependent.closest(".form-group").find("label");
const labelRequired = label.find(".label-required");
if (!required) {
labelRequired.remove();
} else if (!labelRequired.length) {
label.append('<i class="label-required">' + gettext('required') + '</i>')
}
}
for (var k in dependents) dependents[k].prop("disabled", false);
}).always(function() {
@@ -64,6 +71,7 @@ $(function () {
dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
dependent.prop("required", required);
dependent.closest(".form-group").find("label .label-required").remove();
}
});
};

View File

@@ -2,39 +2,56 @@
setup_collapsible_details = function (el) {
el.find('details.sneak-peek:not([open])').each(function() {
this.open = true;
var $elements = $("> :not(summary)", this).show().filter(':not(.sneak-peek-trigger)');
var container = this;
if (Array.prototype.reduce.call($elements, function (h, e) {
return h + $(e).outerHeight();
}, 0) < 200) {
$(".sneak-peek-trigger", this).remove();
$(container).removeClass('sneak-peek');
container.style.removeProperty('height');
el.find('.sneak-peek-trigger').each(function() {
var trigger = this;
var button = this.querySelector('button');
var content = document.getElementById(button.getAttribute('aria-controls'));
if (content.scrollHeight < 200) {
trigger.remove();
content.classList.remove('sneak-peek-content');
return;
}
content.setAttribute('aria-hidden', 'true');
button.setAttribute('aria-expanded', 'false');
button.addEventListener('click', function (e) {
button.setAttribute('aria-expanded', 'true');
content.setAttribute('aria-hidden', 'false');
$elements.attr('aria-hidden', 'true');
var trigger = $('summary, .sneak-peek-trigger button', container);
function onclick(e) {
e.preventDefault();
container.addEventListener('transitionend', function() {
$(container).removeClass('sneak-peek');
container.style.removeProperty('height');
content.addEventListener('transitionend', function() {
content.classList.remove('sneak-peek-content');
content.style.removeProperty('height');
// we need to keep the trigger/button in the DOM to not irritate screenreaders toggling visibility
trigger.classList.add('sr-only');
}, {once: true});
container.style.height = container.scrollHeight + 'px';
$('.sneak-peek-trigger', container).fadeOut(function() {
$(this).remove();
});
$elements.removeAttr('aria-hidden');
content.style.height = content.scrollHeight + 'px';
trigger.off('click', onclick);
button.addEventListener('click', function (e) {
// this will be called by screenreader users if they kept focus on the button after expanding
// we need to keep the trigger/button in the DOM to not irritate screenreaders toggling visibility
var expanded = button.getAttribute('aria-expanded') == 'true';
button.setAttribute('aria-expanded', !expanded);
content.setAttribute('aria-hidden', expanded);
});
button.addEventListener('blur', function (e) {
// if content is visible and the user leaves the button, we can safely remove the trigger/button
if (button.getAttribute('aria-expanded') == 'true') {
trigger.remove();
}
});
}, { once: true });
var container = this.closest('details.sneak-peek-container');
if (container) {
function removeSneekPeakWhenClosed(e) {
if (e.newState == "closed") {
container.removeEventListener("toggle", removeSneekPeakWhenClosed);
trigger.remove();
content.removeAttribute('aria-hidden');
content.classList.remove('sneak-peek-content');
}
}
container.addEventListener("toggle", removeSneekPeakWhenClosed);
}
trigger.on('click', onclick);
});
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
@@ -43,10 +60,6 @@ setup_collapsible_details = function (el) {
return true;
}
var $details = $(this).closest("details");
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
var isOpen = $details.prop("open");
var $detailsNotSummary = $details.children(':not(summary)');
if ($detailsNotSummary.is(':animated')) {
@@ -70,11 +83,6 @@ setup_collapsible_details = function (el) {
if (32 == event.keyCode || (13 == event.keyCode && !isOpera)) {
// Space or Enter is pressed — trigger the `click` event on the `summary` element
// Opera already seems to trigger the `click` event when Enter is pressed
var $details = $(this).closest("details");
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
event.preventDefault();
$(this).click();
}

View File

@@ -227,6 +227,10 @@ svg.svg-icon {
top: 2px;
}
.text-muted path {
fill: $text-muted;
}
.link-muted a, a.link-muted {
color: $text-muted;
}

View File

@@ -60,6 +60,7 @@ var form_handlers = function (el) {
locale: $("body").attr("data-datetimelocale"),
useCurrent: false,
showClear: !$(this).prop("required"),
keepInvalid: true,
icons: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
@@ -262,6 +263,10 @@ function setup_basics(el) {
el.find(".js-only").removeClass("js-only");
el.find(".js-hidden").hide();
// make sure to always have a #content for skip-link to work
if (!document.querySelector("#content")) {
(document.querySelector('main') || document.querySelector('.page-header + *')).id = "content"
}
el.find("div.collapsed").removeClass("collapsed").addClass("collapse");
el.find(".has-error, .alert-danger").each(function () {
@@ -471,17 +476,10 @@ $(function () {
$("[data-save-scrollpos]").on("click submit", function () {
sessionStorage.setItem('scrollpos', window.scrollY);
});
$("#monthselform").on("submit", function () {
sessionStorage.setItem('scrollpos', window.scrollY);
});
}
$("#monthselform select").change(function () {
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
this.form.submit();
});
$("#monthselform input").on("dp.change", function () {
if ($(this).data("DateTimePicker")) { // prevent submit after dp init
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
this.form.submit();
}
});
var update_cart_form = function () {
var is_enabled = $(".product-row input[type=checkbox]:checked, .variations input[type=checkbox]:checked, .product-row input[type=radio]:checked, .variations input[type=radio]:checked").length;
if (!is_enabled) {
@@ -550,7 +548,7 @@ $(function () {
}
dependent.closest('.form-group').toggleClass('required', enabled);
if (enabled) {
dependentLabel.append('<i class="sr-only label-required">, ' + gettext('required') + '</i>');
dependentLabel.append('<i class="label-required">' + gettext('required') + '</i>');
}
else {
dependentLabel.find(".label-required").remove();

View File

@@ -208,7 +208,7 @@ Vue.component('availbox', {
template: ('<div class="pretix-widget-availability-box">'
+ '<div class="pretix-widget-availability-unavailable"'
+ ' v-if="item.current_unavailability_reason === \'require_voucher\'">'
+ '<small><a @click.prevent.stop="focus_voucher_field" role="button">{{unavailability_reason_message}}</a></small>'
+ '<small><a @click.prevent.stop="focus_voucher_field" role="button" tabindex="0">{{unavailability_reason_message}}</a></small>'
+ '</div>'
+ '<div class="pretix-widget-availability-unavailable"'
+ ' v-else-if="unavailability_reason_message">'
@@ -239,12 +239,12 @@ Vue.component('availbox', {
+ '>'
+ '</label>'
+ '<div :class="count_group_classes" v-else role="group" v-bind:aria-label="item.name">'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" aria-label="' + strings.quantity_dec + '"><span>-</span></button>'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" v-bind:aria-label="dec_label"><span>-</span></button>'
+ '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"'
+ ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"'
+ ' aria-label="' + strings.quantity + '" ref="quantity"'
+ ' v-bind:aria-labelledby="aria_labelledby" ref="quantity"'
+ ' >'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" aria-label="' + strings.quantity_inc + '"><span>+</span></button>'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" v-bind:aria-label="inc_label"><span>+</span></button>'
+ '</div>'
+ '</div>'
+ '</div>'),
@@ -262,6 +262,15 @@ Vue.component('availbox', {
this.$root.$emit('amounts_changed')
},
computed: {
aria_labelledby: function () {
return this.$root.html_id + '-item-label-' + this.item.id;
},
dec_label: function () {
return '- ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_dec;
},
inc_label: function () {
return '+ ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_inc;
},
count_group_classes: function () {
return {
'pretix-widget-item-count-group': !this.$root.use_native_spinners
@@ -350,12 +359,12 @@ Vue.component('pricebox', {
+ '<del class="pretix-widget-pricebox-original-price" v-bind:aria-label="original_price_aria_label" v-html="original_line"></del> '
+ '<ins class="pretix-widget-pricebox-new-price" v-bind:aria-label="new_price_aria_label" v-html="priceline"></ins></span>'
+ '<div v-if="free_price">'
+ '<span class="pretix-widget-pricebox-currency">{{ $root.currency }}</span> '
+ '<span class="pretix-widget-pricebox-currency" :id="price_box_id">{{ $root.currency }}</span> '
+ '<input type="number" class="pretix-widget-pricebox-price-input" placeholder="0" '
+ ' :min="display_price_nonlocalized" :value="suggested_price_nonlocalized" :name="field_name"'
+ ' step="any" v-bind:aria-label="free_price_label">'
+ ' step="any" v-bind:aria-labelledby="aria_labelledby" v-bind:aria-describedby="price_desc_id">'
+ '</div>'
+ '<small class="pretix-widget-pricebox-tax" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">'
+ '<small class="pretix-widget-pricebox-tax" :id="price_desc_id" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">'
+ '{{ taxline }}'
+ '</small>'
+ '</div>'),
@@ -366,6 +375,7 @@ Vue.component('pricebox', {
suggested_price: Object,
original_price: String,
mandatory_priced_addons: Boolean,
item_id: Number,
},
methods: {
stripHTML: function (s) {
@@ -375,6 +385,18 @@ Vue.component('pricebox', {
},
},
computed: {
aria_labelledby: function () {
return [
this.$root.html_id + '-item-label-' + this.item_id,
this.price_box_id
].join(" ");
},
price_box_id: function () {
return this.$root.html_id + '-item-pricebox-' + this.item_id;
},
price_desc_id: function () {
return this.$root.html_id + '-item-pricedesc-' + this.item_id;
},
display_price: function () {
if (this.$root.display_net_prices) {
return floatformat(parseFloat(this.price.net), 2);
@@ -419,9 +441,6 @@ Vue.component('pricebox', {
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + this.display_price;
}
},
free_price_label () {
return [strings.price, this.$root.currency].join(", ")
},
taxline: function () {
if (this.$root.display_net_prices) {
if (this.price.includes_mixed_tax_rate) {
@@ -465,7 +484,7 @@ Vue.component('variation', {
+ '<div :id="variation_price_id" class="pretix-widget-item-price-col">'
+ '<pricebox :price="variation.price" :free_price="item.free_price" :original_price="orig_price" '
+ ' :mandatory_priced_addons="item.mandatory_priced_addons" :suggested_price="variation.suggested_price"'
+ ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices">'
+ ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices" :item_id="item.id">'
+ '</pricebox>'
+ '<span v-if="!$root.showPrices">&nbsp;</span>'
+ '</div>'
@@ -515,7 +534,7 @@ Vue.component('item', {
+ '<a :href="item.picture_fullsize" v-if="item.picture" class="pretix-widget-item-picture-link" @click.prevent.stop="lightbox"><img :src="item.picture" class="pretix-widget-item-picture" :alt="picture_alt_text"></a>'
+ '<div class="pretix-widget-item-title-and-description">'
+ '<a v-if="item.has_variations && show_toggle" :id="item_label_id" class="pretix-widget-item-title" :href="\'#\' + item.id + \'-variants\'"'
+ ' @click.prevent.stop="expand" tabindex="-1"'
+ ' @click.prevent.stop="expand"'
+ '>'
+ '{{ item.name }}'
+ '</a>'
@@ -848,10 +867,10 @@ var shared_iframe_fragment = (
);
var shared_alert_fragment = (
'<div :class="alertClasses" role="dialog" aria-modal="true" aria-live="polite">'
'<div :class="alertClasses" role="alertdialog" v-bind:aria-labelledby="$root.parent.html_id + \'-error-message\'">'
+ '<transition name="bounce" @after-enter="focusButton">'
+ '<div class="pretix-widget-alert-box" v-if="$root.error_message">'
+ '<p>{{ $root.error_message }}</p>'
+ '<p :id="$root.parent.html_id + \'-error-message\'">{{ $root.error_message }}</p>'
+ '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>'
+ '<button v-else @click.prevent.stop="errorClose">' + strings.close + '</button></p>'
+ '</div>'
@@ -996,7 +1015,7 @@ Vue.component('pretix-widget-event-form', {
// Form start
+ '<div class="pretix-widget-event-description" v-if="display_event_info && $root.frontpage_text" v-html="$root.frontpage_text"></div>'
+ '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget">'
+ '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget" @submit="$parent.buy">'
+ '<input type="hidden" name="_voucher_code" :value="$root.voucher_code" v-if="$root.voucher_code">'
+ '<input type="hidden" name="subevent" :value="$root.subevent" />'
+ '<input type="hidden" name="widget_data" :value="$root.widget_data_json" />'
@@ -1040,7 +1059,7 @@ Vue.component('pretix-widget-event-form', {
// Buy button
+ '<div class="pretix-widget-action" v-if="$root.display_add_to_cart">'
+ '<button @click="$parent.buy" type="submit" :disabled="buy_disabled">{{ this.buy_label }}</button>'
+ '<button type="submit">{{ this.buy_label }}</button>'
+ '</div>'
+ '</form>'
@@ -1049,10 +1068,10 @@ Vue.component('pretix-widget-event-form', {
+ '<form method="get" :action="$root.voucherFormTarget" target="_blank" '
+ ' v-if="$root.vouchers_exist && !$root.disable_vouchers && !$root.voucher_code">'
+ '<div class="pretix-widget-voucher">'
+ '<h3 class="pretix-widget-voucher-headline">'+ strings['redeem_voucher'] +'</h3>'
+ '<h3 class="pretix-widget-voucher-headline" :id="aria_labelledby">'+ strings['redeem_voucher'] +'</h3>'
+ '<div v-if="$root.voucher_explanation_text" class="pretix-widget-voucher-text" v-html="$root.voucher_explanation_text"></div>'
+ '<div class="pretix-widget-voucher-input-wrap">'
+ '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'">'
+ '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'" v-bind:aria-labelledby="aria_labelledby">'
+ '</div>'
+ '<input type="hidden" v-for="p in hiddenParams" :name="p[0]" :value="p[1]" />'
+ '<div class="pretix-widget-voucher-button-wrap">'
@@ -1064,21 +1083,16 @@ Vue.component('pretix-widget-event-form', {
+ '</div>'
),
data: function () {
return {
buy_disabled: true
}
},
mounted: function() {
this.$root.$on('amounts_changed', this.calculate_buy_disabled)
this.$root.$on('focus_voucher_field', this.focus_voucher_field)
this.calculate_buy_disabled()
},
beforeDestroy: function() {
this.$root.$off('amounts_changed', this.calculate_buy_disabled)
this.$root.$off('focus_voucher_field', this.focus_voucher_field)
},
computed: {
aria_labelledby: function() {
return this.$root.html_id + '-voucher-headline';
},
display_event_info: function () {
return this.$root.display_event_info || (this.$root.display_event_info === null && (this.$root.events || this.$root.weeks || this.$root.days));
},
@@ -1151,43 +1165,33 @@ Vue.component('pretix-widget-event-form', {
$el.focus();
});
},
calculate_buy_disabled: function() {
var i, j, k;
for (i = 0; i < this.$root.categories.length; i++) {
var cat = this.$root.categories[i];
for (j = 0; j < cat.items.length; j++) {
var item = cat.items[j];
if (item.has_variations) {
for (k = 0; k < item.variations.length; k++) {
var v = item.variations[k];
if (v.amount_selected) {
this.buy_disabled = false;
return;
}
}
} else if (item.amount_selected) {
this.buy_disabled = false;
return;
}
}
}
this.buy_disabled = true;
}
}
});
Vue.component('pretix-widget-event-list-filter-field', {
template: ('<div class="pretix-widget-event-list-filter-field">'
+ '<label :for="id">{{ field.label }}</label>'
+ '<select :id="id" :name="field.key" @change="onChange($event)" :value="currentValue">'
+ '<select ref="select" :id="id" :name="field.key" @focus="onFocus" @keydown="onKeydown" @click="onChange" :value="currentValue">'
+ '<option v-for="choice in field.choices" :value="choice[0]">{{ choice[1] }}</option>'
+ '</select>'
+ '</div>'),
props: {
field: Object
},
data: function() {
return {
valueOnFocus: ""
}
},
methods: {
onFocus: function (event) {
this.valueOnFocus = this.$refs.select.value;
},
onChange: function(event) {
if (this.valueOnFocus == this.$refs.select.value) {
// no change
return;
}
var filterParams = new URLSearchParams(this.$root.filter);
if (event.target.value) {
filterParams.set(this.field.key, event.target.value);
@@ -1198,6 +1202,14 @@ Vue.component('pretix-widget-event-list-filter-field', {
this.$root.loading++;
this.$root.reload();
},
onKeydown: function (e) {
const keyDown = e.key !== undefined ? e.key : e.keyCode;
if ( (keyDown === 'Enter' || keyDown === 13) || (['Spacebar', ' '].indexOf(keyDown) >= 0 || keyDown === 32)) {
// (prevent default so the page doesn't scroll when pressing space)
e.preventDefault();
this.onChange(e);
}
},
},
computed: {
id: function () {

View File

@@ -3,7 +3,9 @@
width: 14.29%;
}
h3 {
font-size: 16px;
font-size: 0.875rem;
color: $text-muted;
border-bottom: 2px solid $table-border-color;
}
p {
margin-bottom: 3px;
@@ -11,6 +13,7 @@
.events {
list-style: none;
padding: 0;
margin-bottom: 0;
}
a.event {
--status-bg-color: var(--pretix-brand-primary-tint-90);
@@ -97,9 +100,13 @@
margin-bottom: 15px;
}
h3 {
margin-top: 0;
padding-top: 10px;
padding-bottom: 8px;
margin-bottom: 8px;
font-weight: bold;
cursor: pointer;
background-color: #fff;
}
h3 .fa::before {
content: $fa-var-caret-right;
@@ -112,6 +119,10 @@
}
}
.table-calendar .day:nth-child(even) {
background-color: $table-bg-accent;
}
.event-list-filter-form {
.event-list-filter-form-row {
display: flex;
@@ -244,7 +255,7 @@
}
.day-calendar a.event {
margin: 1px;
margin: 0;
}
.day-calendar a.event .event-time {
display: inline;
@@ -373,9 +384,20 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
grid-template-rows: repeat(var(--concurrency, 1), auto);
}
.day-timeline {
--total-concurrency: var(--concurrency);
}
.day-timeline > li {
grid-column: calc(1 + var(--offset-hour, 0)*60/var(--raster-size, 5) + var(--offset-minute, 0)/var(--raster-size, 5)) / span calc(var(--duration-hour, 0)*60/var(--raster-size, 5) + var(--duration-minute, 0)/var(--raster-size, 5));
grid-row: var(--concurrency, 1) / span 1;
padding: 3px 8px 0;
/* add 11px of padding-bottom to the events with --concurrency being the same as --total-concurrency, otherwise 0px */
padding-bottom: #{'round(down, calc(11px * var(--concurrency)/var(--total-concurrency)), 11px)'};
}
.day-timeline > li[data-concurrency="1"] {
padding-top: 8px;
}
.day-timeline > li:focus-within {
z-index: 2; /* move to front so focus-outline overlays other elements */
@@ -385,12 +407,14 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
grid-row: 1 / span var(--concurrency, 1) !important;
}
.ticks li {
padding: 8px 3px 5px;
padding: 11px 8px 8px;
line-height: 1;
border-top-left-radius: $border-radius-base;
border-top-right-radius: $border-radius-base;
border-bottom: 2px solid $table-border-color;
font-weight: bold;
}
.ticks li:nth-of-type(odd), .tick {
.tick {
background-color: $table-bg-accent;
}
.day-timeline:nth-last-of-type(1) li {
@@ -422,7 +446,16 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
.weekday {
flex: 1;
margin: 0 5px;
padding: 0 8px 8px;
}
.weekday:nth-child(even) {
background-color: $table-bg-accent;
}
.weekday h3 {
margin-left: -8px;
margin-right: -8px;
padding-left: 8px;
padding-right: 8px;
}
.weekday:first-child {
margin-left: 0;

View File

@@ -240,14 +240,26 @@ div.front-page {
}
}
.calendar-nav, .calendar-nav li {
.calendar-nav, .calendar-nav > li {
list-style: none;
margin: 0;
padding: 0
}
.calendar-nav li {
padding: 10px 0;
.calendar-nav > li {
padding: 0 0 10px;
}
.calendar-nav {
display: flex;
align-items: end;
}
.calendar-nav > li {
width: 60%;
}
.calendar-nav > li:first-child,
.calendar-nav > li:last-child {
width: 20%;
}
.subevent-toggle {
display: none;

View File

@@ -23,6 +23,10 @@ a.btn, button.btn {
}
}
.input-group:has(.input-group-btn:last-child) *:not(last-child) {
border-right: 0;
}
.panel-title .radio {
margin-left: 20px;
}
@@ -141,19 +145,17 @@ output {
}
}
.required-legend span {
color: $brand-primary;
font-weight: bold;
}
.label-required {
color: $text-muted;
display: block;
display: inline;
font-weight: normal;
font-style: normal;
font-size: 85%;
}
.checkbox .label-required {
display: inline;
.has-error .label-required {
color: inherit;
}
.label-required {
&:before {
content: " (";
}
@@ -161,6 +163,17 @@ output {
content: ")";
}
}
@media (min-width: $screen-md-min) {
.form-group:not(:has(.checkbox)) {
.label-required {
display: block;
}
.label-required:before,
.label-required:after {
content: "";
}
}
}
.form-control-text {
padding-top: 7px;

View File

@@ -1,10 +1,18 @@
h1, .h1,
h2, .h2,
h3, .h3 {
margin-top: 2.25 * $line-height-computed;
margin-top: 0.75 * $line-height-computed;
margin-bottom: 0.75 * $line-height-computed;
}
.front-page, .item-category {
h1, .h1,
h2, .h2,
h3, .h3 {
margin-top: 2.25 * $line-height-computed;
}
}
.page-header {
position: relative;
padding-bottom: 9px;
@@ -35,8 +43,9 @@ h3, .h3 {
.page-header-links > div.header-part {
padding-top: 15px;
a:link, a:visited {
a {
color: var(--pretix-link-contrast-color);
outline-color: inherit;
}
a:active, a:hover, a:focus {
color: var(--pretix-link-hover-contrast-color);

View File

@@ -14,7 +14,7 @@ $font-size-h4: ($font-size-base * 1.25) !default;
$font-size-h5: $font-size-base !default;
$font-size-h6: ($font-size-base * .85) !default;
$line-height-base: 1.428571429 !default;
$line-height-base: 1.43 !default;
$line-height-computed: ($font-size-base * $line-height-base) !default;
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
$line-height-small: 1.5 !default;
@@ -69,6 +69,30 @@ html {
}
}
.on-focus-visible:focus, .on-focus-visible:focus-within {
height: auto;
width: auto;
overflow: auto;
clip: auto;
}
#skip-to-main {
/* padding is needed to make focus-outline visible */
padding: 8px;
background-color: inherit;
p {
margin: 0;
}
a {
padding: .125em .5em;
display: inline-block;
color: var(--pretix-link-contrast-color);
outline-color: inherit;
}
a:active, a:hover, a:focus {
color: var(--pretix-link-hover-contrast-color);
}
}
/* fixe for bootstrap using px-values for fontsize */
.panel-title {
font-size: ($font-size-base * 1.125);
@@ -521,12 +545,17 @@ details summary {
transform: rotate(-90deg);
}
details.sneak-peek {
.sneak-peek-container {
position: relative;
height: 11em;
}
.sneak-peek-content {
height: 8em;
overflow: hidden;
transition: height .5s;
}
.nojs .sneak-peek-content {
height: auto;
}
.sneak-peek-trigger {
display: grid;
justify-content: center;
@@ -540,6 +569,14 @@ details.sneak-peek {
bottom: 0;
left: 0;
z-index: 10;
opacity: 1;
transition: opacity .5s;
}
.nojs .sneak-peek-trigger {
display: none;
}
.sneak-peek-trigger:has(button[aria-expanded="true"]) {
opacity: 0;
}
form.download-btn-form {

View File

@@ -165,7 +165,7 @@
margin: 10px 0;
background-color: white;
border: 2px solid $brand-info;
color: $brand-info;
color: $state-info-text;
border-radius: $alert-border-radius;
}
@@ -175,7 +175,7 @@
margin: 10px 0;
background-color: white;
border: 2px solid $brand-danger;
color: $brand-danger;
color: $state-danger-text;
border-radius: $alert-border-radius;
}

View File

@@ -734,6 +734,9 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
format='json'
)
assert resp.status_code == 200
assert resp.data["meta_data"] == {
meta_prop.name: "Workshop"
}
with scopes_disabled():
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
property__name=meta_prop.name, value="Workshop"

View File

@@ -195,4 +195,27 @@ def test_NO_id_valid():
assert validate_vat_id('NO974760673 MVA', 'NO') == 'NO974760673MVA'
@responses.activate
def test_NO_id_valid_without_prefix():
responses.add(
responses.GET,
'https://data.brreg.no/enhetsregisteret/api/enheter/974760673',
body='{"organisasjonsnummer":"974760673","navn":"REGISTERENHETEN I BRØNNØYSUND","organisasjonsform":{"kode":'
'"ORGL","beskrivelse":"Organisasjonsledd","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/'
'organisasjonsformer/ORGL"}}},"hjemmeside":"www.brreg.no","postadresse":{"land":"Norge","landkode":"NO","postn'
'ummer":"8910","poststed":"BRØNNØYSUND","adresse":["Postboks 900"],"kommune":"BRØNNØY","kommunenummer":"1813"}'
',"registreringsdatoEnhetsregisteret":"1995-08-09","registrertIMvaregisteret":false,"naeringskode1":{"beskrivels'
'e":"Generell offentlig administrasjon","kode":"84.110"},"antallAnsatte":455,"overordnetEnhet":"912660680","for'
'retningsadresse":{"land":"Norge","landkode":"NO","postnummer":"8900","poststed":"BRØNNØYSUND","adresse":["Havn'
'egata 48"],"kommune":"BRØNNØY","kommunenummer":"1813"},"institusjonellSektorkode":{"kode":"6100","beskrivelse'
'":"Statsforvaltningen"},"registrertIForetaksregisteret":false,"registrertIStiftelsesregisteret":false,"registr'
'ertIFrivillighetsregisteret":false,"konkurs":false,"underAvvikling":false,"underTvangsavviklingEllerTvangsopp'
'losning":false,"maalform":"Bokmål","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter'
'/974760673"},"overordnetEnhet":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter/912660680"}}}',
status=200
)
assert validate_vat_id('974 760 673 MVA', 'NO') == 'NO974760673MVA'
# No tests for CH currently since it's harder to mock Zeep

View File

@@ -239,7 +239,7 @@ def test_org_login_not_verified(env, client, mocker):
'password': 'foo',
})
assert r.status_code == 200
assert b'alert-danger' in r.content
assert b'form-group has-error' in r.content
customer_signed_in.send.assert_not_called()
@@ -258,7 +258,7 @@ def test_org_login_not_active(env, client, mocker):
'password': 'foo',
})
assert r.status_code == 200
assert b'alert-danger' in r.content
assert b'form-group has-error' in r.content
customer_signed_in.send.assert_not_called()