mirror of
https://github.com/pretix/pretix.git
synced 2026-08-11 10:57:00 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b580cadc48 |
@@ -80,12 +80,17 @@ lines list of objects The actual invo
|
|||||||
for all invoice lines
|
for all invoice lines
|
||||||
created before this field was introduced as well as for
|
created before this field was introduced as well as for
|
||||||
all lines not created by a fee (e.g. a product).
|
all lines not created by a fee (e.g. a product).
|
||||||
├ period_start datetime Start date of the service or delivery period of the invoice line.
|
├ event_date_from datetime Start date of the (sub)event this line was created for as it
|
||||||
Can be ``null`` if not known.
|
was set during invoice creation. Can be ``null`` for all invoice
|
||||||
├ period_end datetime End date of the service or delivery period of the invoice line.
|
lines created before this was introduced as well as for lines in
|
||||||
Can be ``null`` if not known.
|
an event series not created by a product (e.g. shipping or
|
||||||
├ event_date_from datetime Deprecated alias of ``period_start``.
|
cancellation fees).
|
||||||
├ event_date_to datetime Deprecated alias of ``period_end``.
|
├ event_date_to datetime End date of the (sub)event this line was created for as it
|
||||||
|
was set during invoice creation. Can be ``null`` for all invoice
|
||||||
|
lines created before this was introduced as well as for lines in
|
||||||
|
an event series not created by a product (e.g. shipping or
|
||||||
|
cancellation fees) as well as whenever the respective (sub)event
|
||||||
|
has no end date set.
|
||||||
├ event_location string Location of the (sub)event this line was created for as it
|
├ event_location string Location of the (sub)event this line was created for as it
|
||||||
was set during invoice creation. Can be ``null`` for all invoice
|
was set during invoice creation. Can be ``null`` for all invoice
|
||||||
lines created before this was introduced as well as for lines in
|
lines created before this was introduced as well as for lines in
|
||||||
@@ -158,10 +163,10 @@ transmission_email_address string Optional. An em
|
|||||||
Business customers only.
|
Business customers only.
|
||||||
===================================== ========================== =======================================================
|
===================================== ========================== =======================================================
|
||||||
|
|
||||||
Peppol
|
PEPPOL
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
The identifier ``"peppol"`` represents the transmission of XML invoices through the `Peppol`_ network.
|
The identifier ``"peppol"`` represents the transmission of XML invoices through the `PEPPOL`_ network.
|
||||||
This is only available for business addresses.
|
This is only available for business addresses.
|
||||||
This is not supported by pretix out of the box and requires the use of a suitable plugin.
|
This is not supported by pretix out of the box and requires the use of a suitable plugin.
|
||||||
The ``transmission_info`` object may contain the following properties:
|
The ``transmission_info`` object may contain the following properties:
|
||||||
@@ -171,7 +176,7 @@ The ``transmission_info`` object may contain the following properties:
|
|||||||
===================================== ========================== =======================================================
|
===================================== ========================== =======================================================
|
||||||
Field Type Description
|
Field Type Description
|
||||||
===================================== ========================== =======================================================
|
===================================== ========================== =======================================================
|
||||||
transmission_peppol_participant_id string Required. The Peppol participant ID of the recipient.
|
transmission_peppol_participant_id string Required. The PEPPOL participant ID of the recipient.
|
||||||
===================================== ========================== =======================================================
|
===================================== ========================== =======================================================
|
||||||
|
|
||||||
Italian Exchange System
|
Italian Exchange System
|
||||||
@@ -269,8 +274,6 @@ List of all invoices
|
|||||||
"fee_internal_type": null,
|
"fee_internal_type": null,
|
||||||
"event_date_from": "2017-12-27T10:00:00Z",
|
"event_date_from": "2017-12-27T10:00:00Z",
|
||||||
"event_date_to": null,
|
"event_date_to": null,
|
||||||
"period_start": "2017-12-27T10:00:00Z",
|
|
||||||
"period_end": "2017-12-27T10:00:00Z",
|
|
||||||
"event_location": "Heidelberg",
|
"event_location": "Heidelberg",
|
||||||
"attendee_name": null,
|
"attendee_name": null,
|
||||||
"gross_value": "23.00",
|
"gross_value": "23.00",
|
||||||
@@ -417,8 +420,6 @@ Fetching individual invoices
|
|||||||
"fee_internal_type": null,
|
"fee_internal_type": null,
|
||||||
"event_date_from": "2017-12-27T10:00:00Z",
|
"event_date_from": "2017-12-27T10:00:00Z",
|
||||||
"event_date_to": null,
|
"event_date_to": null,
|
||||||
"period_start": "2017-12-27T10:00:00Z",
|
|
||||||
"period_end": "2017-12-27T10:00:00Z",
|
|
||||||
"event_location": "Heidelberg",
|
"event_location": "Heidelberg",
|
||||||
"attendee_name": null,
|
"attendee_name": null,
|
||||||
"gross_value": "23.00",
|
"gross_value": "23.00",
|
||||||
@@ -604,5 +605,5 @@ but in other cases transmission may need to be triggered manually.
|
|||||||
:statuscode 409: The invoice is currently in transmission
|
:statuscode 409: The invoice is currently in transmission
|
||||||
|
|
||||||
|
|
||||||
.. _Peppol: https://en.wikipedia.org/wiki/PEPPOL
|
.. _PEPPOL: https://en.wikipedia.org/wiki/PEPPOL
|
||||||
.. _Sistema di Interscambio: https://it.wikipedia.org/wiki/Fattura_elettronica_in_Italia
|
.. _Sistema di Interscambio: https://it.wikipedia.org/wiki/Fattura_elettronica_in_Italia
|
||||||
@@ -418,7 +418,6 @@ List of all orders
|
|||||||
"seat": null,
|
"seat": null,
|
||||||
"checkins": [
|
"checkins": [
|
||||||
{
|
{
|
||||||
"id": 1337,
|
|
||||||
"list": 44,
|
"list": 44,
|
||||||
"type": "entry",
|
"type": "entry",
|
||||||
"gate": null,
|
"gate": null,
|
||||||
@@ -663,7 +662,6 @@ Fetching individual orders
|
|||||||
"seat": null,
|
"seat": null,
|
||||||
"checkins": [
|
"checkins": [
|
||||||
{
|
{
|
||||||
"id": 1337,
|
|
||||||
"list": 44,
|
"list": 44,
|
||||||
"type": "entry",
|
"type": "entry",
|
||||||
"gate": null,
|
"gate": null,
|
||||||
@@ -1634,7 +1632,6 @@ List of all order positions
|
|||||||
"blocked": null,
|
"blocked": null,
|
||||||
"checkins": [
|
"checkins": [
|
||||||
{
|
{
|
||||||
"id": 1337,
|
|
||||||
"list": 44,
|
"list": 44,
|
||||||
"type": "entry",
|
"type": "entry",
|
||||||
"gate": null,
|
"gate": null,
|
||||||
@@ -1763,7 +1760,6 @@ Fetching individual positions
|
|||||||
"seat": null,
|
"seat": null,
|
||||||
"checkins": [
|
"checkins": [
|
||||||
{
|
{
|
||||||
"id": 1337,
|
|
||||||
"list": 44,
|
"list": 44,
|
||||||
"type": "entry",
|
"type": "entry",
|
||||||
"gate": null,
|
"gate": null,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ There are multiple signals that will be sent out in the ordering cycle:
|
|||||||
|
|
||||||
.. automodule:: pretix.base.signals
|
.. automodule:: pretix.base.signals
|
||||||
:no-index:
|
:no-index:
|
||||||
:members: validate_cart, validate_cart_addons, validate_order, order_valid_if_pending, order_fee_calculation, order_paid, order_placed, order_canceled, order_reactivated, order_expired, order_expiry_changed, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split, order_gracefully_delete, build_invoice_data, invoice_line_text
|
:members: validate_cart, validate_cart_addons, validate_order, order_valid_if_pending, order_fee_calculation, order_paid, order_placed, order_canceled, order_reactivated, order_expired, order_expiry_changed, order_modified, order_changed, order_approved, order_denied, order_fee_type_name, allow_ticket_download, order_split, order_gracefully_delete, invoice_line_text
|
||||||
|
|
||||||
Check-ins
|
Check-ins
|
||||||
"""""""""
|
"""""""""
|
||||||
@@ -37,7 +37,7 @@ Frontend
|
|||||||
--------
|
--------
|
||||||
|
|
||||||
.. automodule:: pretix.presale.signals
|
.. automodule:: pretix.presale.signals
|
||||||
:members: html_head, html_footer, footer_link, global_footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header, seatingframe_html_head, filter_subevents
|
:members: html_head, html_footer, footer_link, global_footer_link, front_page_top, front_page_bottom, front_page_bottom_widget, fee_calculation_for_cart, contact_form_fields, question_form_fields, contact_form_fields_overrides, question_form_fields_overrides, checkout_confirm_messages, checkout_confirm_page_content, checkout_all_optional, html_page_header, render_seating_plan, checkout_flow_steps, position_info, position_info_top, item_description, global_html_head, global_html_footer, global_html_page_header, seatingframe_html_head
|
||||||
|
|
||||||
|
|
||||||
.. automodule:: pretix.presale.signals
|
.. automodule:: pretix.presale.signals
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ sphinxcontrib-images
|
|||||||
sphinxcontrib-jquery
|
sphinxcontrib-jquery
|
||||||
sphinxcontrib-spelling==8.*
|
sphinxcontrib-spelling==8.*
|
||||||
sphinxemoji
|
sphinxemoji
|
||||||
pyenchant==3.3.*
|
pyenchant==3.2.*
|
||||||
|
|||||||
@@ -7,4 +7,4 @@ sphinxcontrib-images
|
|||||||
sphinxcontrib-jquery
|
sphinxcontrib-jquery
|
||||||
sphinxcontrib-spelling==8.*
|
sphinxcontrib-spelling==8.*
|
||||||
sphinxemoji
|
sphinxemoji
|
||||||
pyenchant==3.3.*
|
pyenchant==3.2.*
|
||||||
|
|||||||
+12
-12
@@ -28,23 +28,23 @@ classifiers = [
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"arabic-reshaper==3.0.0", # Support for Arabic in reportlab
|
"arabic-reshaper==3.0.0", # Support for Arabic in reportlab
|
||||||
"babel",
|
"babel",
|
||||||
"BeautifulSoup4==4.14.*",
|
"BeautifulSoup4==4.13.*",
|
||||||
"bleach==6.2.*",
|
"bleach==6.2.*",
|
||||||
"celery==5.5.*",
|
"celery==5.5.*",
|
||||||
"chardet==5.2.*",
|
"chardet==5.2.*",
|
||||||
"cryptography>=44.0.0",
|
"cryptography>=44.0.0",
|
||||||
"css-inline==0.17.*",
|
"css-inline==0.17.*",
|
||||||
"defusedcsv>=1.1.0",
|
"defusedcsv>=1.1.0",
|
||||||
"Django[argon2]==4.2.*,>=4.2.24",
|
"Django[argon2]==4.2.*,>=4.2.15",
|
||||||
"django-bootstrap3==25.2",
|
"django-bootstrap3==25.2",
|
||||||
"django-compressor==4.5.1",
|
"django-compressor==4.5.1",
|
||||||
"django-countries==7.6.*",
|
"django-countries==7.6.*",
|
||||||
"django-filter==25.1",
|
"django-filter==25.1",
|
||||||
"django-formset-js-improved==0.5.0.4",
|
"django-formset-js-improved==0.5.0.3",
|
||||||
"django-formtools==2.5.1",
|
"django-formtools==2.5.1",
|
||||||
"django-hierarkey==2.0.*,>=2.0.1",
|
"django-hierarkey==2.0.*",
|
||||||
"django-hijack==3.7.*",
|
"django-hijack==3.7.*",
|
||||||
"django-i18nfield==1.11.*",
|
"django-i18nfield==1.10.*",
|
||||||
"django-libsass==0.9",
|
"django-libsass==0.9",
|
||||||
"django-localflavor==5.0",
|
"django-localflavor==5.0",
|
||||||
"django-markup",
|
"django-markup",
|
||||||
@@ -64,7 +64,7 @@ dependencies = [
|
|||||||
"kombu==5.5.*",
|
"kombu==5.5.*",
|
||||||
"libsass==0.23.*",
|
"libsass==0.23.*",
|
||||||
"lxml",
|
"lxml",
|
||||||
"markdown==3.9", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
|
"markdown==3.8.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
|
||||||
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
|
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
|
||||||
"mt-940==4.30.*",
|
"mt-940==4.30.*",
|
||||||
"oauthlib==3.3.*",
|
"oauthlib==3.3.*",
|
||||||
@@ -79,7 +79,7 @@ dependencies = [
|
|||||||
"protobuf==6.32.*",
|
"protobuf==6.32.*",
|
||||||
"psycopg2-binary",
|
"psycopg2-binary",
|
||||||
"pycountry",
|
"pycountry",
|
||||||
"pycparser==2.23",
|
"pycparser==2.22",
|
||||||
"pycryptodome==3.23.*",
|
"pycryptodome==3.23.*",
|
||||||
"pypdf==6.0.*",
|
"pypdf==6.0.*",
|
||||||
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
||||||
@@ -90,8 +90,8 @@ dependencies = [
|
|||||||
"qrcode==8.2",
|
"qrcode==8.2",
|
||||||
"redis==6.4.*",
|
"redis==6.4.*",
|
||||||
"reportlab==4.4.*",
|
"reportlab==4.4.*",
|
||||||
"requests==2.32.*",
|
"requests==2.31.*",
|
||||||
"sentry-sdk==2.38.*",
|
"sentry-sdk==2.35.*",
|
||||||
"sepaxml==2.6.*",
|
"sepaxml==2.6.*",
|
||||||
"stripe==7.9.*",
|
"stripe==7.9.*",
|
||||||
"text-unidecode==1.*",
|
"text-unidecode==1.*",
|
||||||
@@ -100,7 +100,7 @@ dependencies = [
|
|||||||
"ua-parser==1.0.*",
|
"ua-parser==1.0.*",
|
||||||
"vat_moss_forked==2020.3.20.0.11.0",
|
"vat_moss_forked==2020.3.20.0.11.0",
|
||||||
"vobject==0.9.*",
|
"vobject==0.9.*",
|
||||||
"webauthn==2.7.*",
|
"webauthn==2.6.*",
|
||||||
"zeep==4.3.*"
|
"zeep==4.3.*"
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -113,14 +113,14 @@ dev = [
|
|||||||
"fakeredis==2.31.*",
|
"fakeredis==2.31.*",
|
||||||
"flake8==7.3.*",
|
"flake8==7.3.*",
|
||||||
"freezegun",
|
"freezegun",
|
||||||
"isort==6.1.*",
|
"isort==6.0.*",
|
||||||
"pep8-naming==0.15.*",
|
"pep8-naming==0.15.*",
|
||||||
"potypo",
|
"potypo",
|
||||||
"pytest-asyncio>=0.24",
|
"pytest-asyncio>=0.24",
|
||||||
"pytest-cache",
|
"pytest-cache",
|
||||||
"pytest-cov",
|
"pytest-cov",
|
||||||
"pytest-django==4.*",
|
"pytest-django==4.*",
|
||||||
"pytest-mock==3.15.*",
|
"pytest-mock==3.14.*",
|
||||||
"pytest-sugar",
|
"pytest-sugar",
|
||||||
"pytest-xdist==3.8.*",
|
"pytest-xdist==3.8.*",
|
||||||
"pytest==8.4.*",
|
"pytest==8.4.*",
|
||||||
|
|||||||
+2
-2
@@ -25,8 +25,8 @@ coverage:
|
|||||||
coverage run -m py.test
|
coverage run -m py.test
|
||||||
|
|
||||||
npminstall:
|
npminstall:
|
||||||
# keep this in sync with pretix/_build.py!
|
# keep this in sync with setup.py!
|
||||||
mkdir -p pretix/static.dist/node_prefix/
|
mkdir -p pretix/static.dist/node_prefix/
|
||||||
cp -r pretix/static/npm_dir/* pretix/static.dist/node_prefix/
|
cp -r pretix/static/npm_dir/* pretix/static.dist/node_prefix/
|
||||||
npm ci --prefix=pretix/static.dist/node_prefix
|
npm install --prefix=pretix/static.dist/node_prefix
|
||||||
|
|
||||||
|
|||||||
@@ -19,4 +19,4 @@
|
|||||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||||
# <https://www.gnu.org/licenses/>.
|
# <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
__version__ = "2025.9.0.dev0"
|
__version__ = "2025.8.0.dev0"
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ def npm_install():
|
|||||||
node_prefix = os.path.join(here, 'static.dist', 'node_prefix')
|
node_prefix = os.path.join(here, 'static.dist', 'node_prefix')
|
||||||
os.makedirs(node_prefix, exist_ok=True)
|
os.makedirs(node_prefix, exist_ok=True)
|
||||||
shutil.copytree(os.path.join(here, 'static', 'npm_dir'), node_prefix, dirs_exist_ok=True)
|
shutil.copytree(os.path.join(here, 'static', 'npm_dir'), node_prefix, dirs_exist_ok=True)
|
||||||
subprocess.check_call('npm ci', shell=True, cwd=node_prefix)
|
subprocess.check_call('npm install', shell=True, cwd=node_prefix)
|
||||||
npm_installed = True
|
npm_installed = True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Exists, OuterRef, Q
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@@ -112,24 +111,6 @@ class OAuthRefreshToken(AbstractRefreshToken):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class WebHookQuerySet(models.QuerySet):
|
|
||||||
def for_notification(self, action_type, organizer, event):
|
|
||||||
event_listener = WebHookEventListener.objects.filter(
|
|
||||||
webhook=OuterRef('pk'),
|
|
||||||
action_type=action_type
|
|
||||||
)
|
|
||||||
webhooks = WebHook.objects.annotate(has_el=Exists(event_listener)).filter(
|
|
||||||
organizer=organizer,
|
|
||||||
has_el=True,
|
|
||||||
enabled=True
|
|
||||||
)
|
|
||||||
if event:
|
|
||||||
webhooks = webhooks.filter(
|
|
||||||
Q(all_events=True) | Q(limit_events__pk=event.pk if not isinstance(event, int) else event)
|
|
||||||
)
|
|
||||||
return webhooks
|
|
||||||
|
|
||||||
|
|
||||||
class WebHook(models.Model):
|
class WebHook(models.Model):
|
||||||
organizer = models.ForeignKey('pretixbase.Organizer', on_delete=models.CASCADE, related_name='webhooks')
|
organizer = models.ForeignKey('pretixbase.Organizer', on_delete=models.CASCADE, related_name='webhooks')
|
||||||
enabled = models.BooleanField(default=True, verbose_name=_("Enable webhook"))
|
enabled = models.BooleanField(default=True, verbose_name=_("Enable webhook"))
|
||||||
@@ -138,8 +119,6 @@ class WebHook(models.Model):
|
|||||||
limit_events = models.ManyToManyField('pretixbase.Event', verbose_name=_("Limit to events"), blank=True)
|
limit_events = models.ManyToManyField('pretixbase.Event', verbose_name=_("Limit to events"), blank=True)
|
||||||
comment = models.CharField(verbose_name=_("Comment"), max_length=255, null=True, blank=True)
|
comment = models.CharField(verbose_name=_("Comment"), max_length=255, null=True, blank=True)
|
||||||
|
|
||||||
objects = models.Manager.from_queryset(WebHookQuerySet)()
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('id',)
|
ordering = ('id',)
|
||||||
|
|
||||||
|
|||||||
@@ -805,7 +805,6 @@ class EventSettingsSerializer(SettingsSerializer):
|
|||||||
'invoice_reissue_after_modify',
|
'invoice_reissue_after_modify',
|
||||||
'invoice_include_free',
|
'invoice_include_free',
|
||||||
'invoice_generate',
|
'invoice_generate',
|
||||||
'invoice_period',
|
|
||||||
'invoice_numbers_consecutive',
|
'invoice_numbers_consecutive',
|
||||||
'invoice_numbers_prefix',
|
'invoice_numbers_prefix',
|
||||||
'invoice_numbers_prefix_cancellations',
|
'invoice_numbers_prefix_cancellations',
|
||||||
|
|||||||
@@ -1757,14 +1757,12 @@ class LinePositionField(serializers.IntegerField):
|
|||||||
|
|
||||||
class InlineInvoiceLineSerializer(I18nAwareModelSerializer):
|
class InlineInvoiceLineSerializer(I18nAwareModelSerializer):
|
||||||
position = LinePositionField(read_only=True)
|
position = LinePositionField(read_only=True)
|
||||||
event_date_from = serializers.DateTimeField(read_only=True, source="period_start")
|
|
||||||
event_date_to = serializers.DateTimeField(read_only=True, source="period_end")
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InvoiceLine
|
model = InvoiceLine
|
||||||
fields = ('position', 'description', 'item', 'variation', 'subevent', 'attendee_name', 'event_date_from',
|
fields = ('position', 'description', 'item', 'variation', 'subevent', 'attendee_name', 'event_date_from',
|
||||||
'event_date_to', 'period_start', 'period_end', 'gross_value', 'tax_value', 'tax_rate', 'tax_code',
|
'event_date_to', 'gross_value', 'tax_value', 'tax_rate', 'tax_code', 'tax_name', 'fee_type',
|
||||||
'tax_name', 'fee_type', 'fee_internal_type', 'event_location')
|
'fee_internal_type', 'event_location')
|
||||||
|
|
||||||
|
|
||||||
class InvoiceSerializer(I18nAwareModelSerializer):
|
class InvoiceSerializer(I18nAwareModelSerializer):
|
||||||
|
|||||||
@@ -484,7 +484,6 @@ class OrganizerSettingsSerializer(SettingsSerializer):
|
|||||||
'reusable_media_type_nfc_mf0aes',
|
'reusable_media_type_nfc_mf0aes',
|
||||||
'reusable_media_type_nfc_mf0aes_autocreate_giftcard',
|
'reusable_media_type_nfc_mf0aes_autocreate_giftcard',
|
||||||
'reusable_media_type_nfc_mf0aes_autocreate_giftcard_currency',
|
'reusable_media_type_nfc_mf0aes_autocreate_giftcard_currency',
|
||||||
'reusable_media_type_nfc_mf0aes_random_uid',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -743,7 +743,7 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet):
|
|||||||
user=request.user if request.user.is_authenticated else None,
|
user=request.user if request.user.is_authenticated else None,
|
||||||
auth=request.auth,
|
auth=request.auth,
|
||||||
)
|
)
|
||||||
order_placed.send(self.request.event, order=order, bulk=False)
|
order_placed.send(self.request.event, order=order)
|
||||||
if order.status == Order.STATUS_PAID:
|
if order.status == Order.STATUS_PAID:
|
||||||
order_paid.send(self.request.event, order=order)
|
order_paid.send(self.request.event, order=order)
|
||||||
order.log_action(
|
order.log_action(
|
||||||
|
|||||||
@@ -546,8 +546,7 @@ class DeviceViewSet(mixins.CreateModelMixin,
|
|||||||
|
|
||||||
|
|
||||||
class OrganizerSettingsView(views.APIView):
|
class OrganizerSettingsView(views.APIView):
|
||||||
permission = None
|
permission = 'can_change_organizer_settings'
|
||||||
write_permission = 'can_change_organizer_settings'
|
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
s = OrganizerSettingsSerializer(instance=request.organizer.settings, organizer=request.organizer, context={
|
s = OrganizerSettingsSerializer(instance=request.organizer.settings, organizer=request.organizer, context={
|
||||||
|
|||||||
@@ -27,13 +27,16 @@ from datetime import timedelta
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
from django.db import DatabaseError, connection, transaction
|
from django.db import DatabaseError, connection, transaction
|
||||||
|
from django.db.models import Exists, OuterRef, Q
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext_lazy as _, pgettext_lazy
|
from django.utils.translation import gettext_lazy as _, pgettext_lazy
|
||||||
from django_scopes import scope, scopes_disabled
|
from django_scopes import scope, scopes_disabled
|
||||||
from requests import RequestException
|
from requests import RequestException
|
||||||
|
|
||||||
from pretix.api.models import WebHook, WebHookCall, WebHookCallRetry
|
from pretix.api.models import (
|
||||||
|
WebHook, WebHookCall, WebHookCallRetry, WebHookEventListener,
|
||||||
|
)
|
||||||
from pretix.api.signals import register_webhook_events
|
from pretix.api.signals import register_webhook_events
|
||||||
from pretix.base.models import LogEntry
|
from pretix.base.models import LogEntry
|
||||||
from pretix.base.services.tasks import ProfiledTask, TransactionAwareTask
|
from pretix.base.services.tasks import ProfiledTask, TransactionAwareTask
|
||||||
@@ -451,9 +454,20 @@ def notify_webhooks(logentry_ids: list):
|
|||||||
_org = logentry.organizer
|
_org = logentry.organizer
|
||||||
_at = logentry.action_type
|
_at = logentry.action_type
|
||||||
|
|
||||||
webhooks = WebHook.objects.for_notification(
|
# All webhooks that registered for this notification
|
||||||
notification_type.action_type, logentry.organizer, logentry.event_id
|
event_listener = WebHookEventListener.objects.filter(
|
||||||
|
webhook=OuterRef('pk'),
|
||||||
|
action_type=notification_type.action_type
|
||||||
)
|
)
|
||||||
|
webhooks = WebHook.objects.annotate(has_el=Exists(event_listener)).filter(
|
||||||
|
organizer=logentry.organizer,
|
||||||
|
has_el=True,
|
||||||
|
enabled=True
|
||||||
|
)
|
||||||
|
if logentry.event_id:
|
||||||
|
webhooks = webhooks.filter(
|
||||||
|
Q(all_events=True) | Q(limit_events__pk=logentry.event_id)
|
||||||
|
)
|
||||||
|
|
||||||
for wh in webhooks:
|
for wh in webhooks:
|
||||||
send_webhook.apply_async(args=(logentry.id, notification_type.action_type, wh.pk))
|
send_webhook.apply_async(args=(logentry.id, notification_type.action_type, wh.pk))
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ class OutboundSyncProvider:
|
|||||||
return str(cls.identifier)
|
return str(cls.identifier)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def enqueue_order(cls, order, triggered_by, not_before=None, immediate=False):
|
def enqueue_order(cls, order, triggered_by, not_before=None):
|
||||||
"""
|
"""
|
||||||
Adds an order to the sync queue. May only be called on derived classes which define an ``identifier`` attribute.
|
Adds an order to the sync queue. May only be called on derived classes which define an ``identifier`` attribute.
|
||||||
|
|
||||||
@@ -119,14 +119,10 @@ class OutboundSyncProvider:
|
|||||||
:param order: the Order that should be synced
|
:param order: the Order that should be synced
|
||||||
:param triggered_by: the reason why the order should be synced, e.g. name of the signal
|
:param triggered_by: the reason why the order should be synced, e.g. name of the signal
|
||||||
(currently only used internally for logging)
|
(currently only used internally for logging)
|
||||||
:param immediate: whether a new sync task should run immediately for this order, instead
|
|
||||||
of waiting for the next periodic_task interval
|
|
||||||
:return: Return a tuple (queue_item, created), where created is a boolean
|
|
||||||
specifying whether a new queue item was created.
|
|
||||||
"""
|
"""
|
||||||
if not hasattr(cls, 'identifier'):
|
if not hasattr(cls, 'identifier'):
|
||||||
raise TypeError('Call this method on a derived class that defines an "identifier" attribute.')
|
raise TypeError('Call this method on a derived class that defines an "identifier" attribute.')
|
||||||
queue_item, created = OrderSyncQueue.objects.update_or_create(
|
OrderSyncQueue.objects.update_or_create(
|
||||||
order=order,
|
order=order,
|
||||||
sync_provider=cls.identifier,
|
sync_provider=cls.identifier,
|
||||||
in_flight=False,
|
in_flight=False,
|
||||||
@@ -137,10 +133,6 @@ class OutboundSyncProvider:
|
|||||||
"need_manual_retry": None,
|
"need_manual_retry": None,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if immediate:
|
|
||||||
from pretix.base.services.datasync import sync_single
|
|
||||||
sync_single.apply_async(args=(queue_item.pk,))
|
|
||||||
return queue_item, created
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_external_link_info(cls, event, external_link_href, external_link_display_name):
|
def get_external_link_info(cls, event, external_link_href, external_link_display_name):
|
||||||
@@ -260,15 +252,9 @@ class OutboundSyncProvider:
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
with language(self.event.settings.locale):
|
with language(self.event.settings.locale):
|
||||||
raise SyncConfigError([_(
|
raise SyncConfigError([_(
|
||||||
'Field "{field_name}" does not exist. Please check your {provider_name} settings.'
|
'Field "{field_name}" is not valid for {available_inputs}. Please check your {provider_name} settings.'
|
||||||
).format(field_name=key, provider_name=self.display_name)])
|
).format(key=key, available_inputs="/".join(inputs.keys()), provider_name=self.display_name)])
|
||||||
try:
|
input = inputs[field.required_input]
|
||||||
input = inputs[field.required_input]
|
|
||||||
except KeyError:
|
|
||||||
with language(self.event.settings.locale):
|
|
||||||
raise SyncConfigError([_(
|
|
||||||
'Field "{field_name}" requires {required_input}, but only got {available_inputs}. Please check your {provider_name} settings.'
|
|
||||||
).format(field_name=key, required_input=field.required_input, available_inputs=", ".join(inputs.keys()), provider_name=self.display_name)])
|
|
||||||
val = field.getter(input)
|
val = field.getter(input)
|
||||||
if isinstance(val, list):
|
if isinstance(val, list):
|
||||||
if field.enum_opts and mapping_entry.get("value_map"):
|
if field.enum_opts and mapping_entry.get("value_map"):
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.validators import RegexValidator
|
from django.core.validators import RegexValidator
|
||||||
from django.utils.translation import pgettext, pgettext_lazy
|
from django.utils.translation import pgettext_lazy
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
from localflavor.it.forms import ITSocialSecurityNumberField
|
from localflavor.it.forms import ITSocialSecurityNumberField
|
||||||
|
|
||||||
@@ -73,12 +73,3 @@ class ItalianSdITransmissionType(TransmissionType):
|
|||||||
if is_business:
|
if is_business:
|
||||||
return base | {"company", "vat_id", "transmission_it_sdi_pec", "transmission_it_sdi_recipient_code"}
|
return base | {"company", "vat_id", "transmission_it_sdi_pec", "transmission_it_sdi_recipient_code"}
|
||||||
return base | {"transmission_it_sdi_codice_fiscale"}
|
return base | {"transmission_it_sdi_codice_fiscale"}
|
||||||
|
|
||||||
def pdf_info_text(self) -> str:
|
|
||||||
# Watermark is not necessary as this is a usual precaution in Italy
|
|
||||||
return pgettext(
|
|
||||||
"italian_invoice",
|
|
||||||
"This PDF document is a visual copy of the invoice and does not constitute an invoice for VAT "
|
|
||||||
"purposes. The invoice is issued in XML format, transmitted in accordance with the procedures and terms "
|
|
||||||
"set forth in No. 89757/2018 of April 30, 2018, issued by the Director of the Revenue Agency."
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -19,9 +19,7 @@
|
|||||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||||
# <https://www.gnu.org/licenses/>.
|
# <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
import datetime
|
|
||||||
import logging
|
import logging
|
||||||
import math
|
|
||||||
import re
|
import re
|
||||||
import unicodedata
|
import unicodedata
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
@@ -225,9 +223,6 @@ class BaseReportlabInvoiceRenderer(BaseInvoiceRenderer):
|
|||||||
stylesheet.add(ParagraphStyle(name='FineprintHeading', fontName=self.font_bold, fontSize=8, leading=12))
|
stylesheet.add(ParagraphStyle(name='FineprintHeading', fontName=self.font_bold, fontSize=8, leading=12))
|
||||||
stylesheet.add(ParagraphStyle(name='Fineprint', fontName=self.font_regular, fontSize=8, leading=10))
|
stylesheet.add(ParagraphStyle(name='Fineprint', fontName=self.font_regular, fontSize=8, leading=10))
|
||||||
stylesheet.add(ParagraphStyle(name='FineprintRight', fontName=self.font_regular, fontSize=8, leading=10, alignment=TA_RIGHT))
|
stylesheet.add(ParagraphStyle(name='FineprintRight', fontName=self.font_regular, fontSize=8, leading=10, alignment=TA_RIGHT))
|
||||||
stylesheet.add(ParagraphStyle(name='WarningBlock', fontName=self.font_bold, fontSize=10, leading=12,
|
|
||||||
alignment=TA_LEFT, borderWidth=1 * mm, borderColor=colors.black,
|
|
||||||
borderPadding=2 * mm, spaceBefore=5 * mm, spaceAfter=5 * mm))
|
|
||||||
return stylesheet
|
return stylesheet
|
||||||
|
|
||||||
def _register_fonts(self):
|
def _register_fonts(self):
|
||||||
@@ -527,20 +522,6 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
textobject.textLine(self._normalize(self._upper(pgettext('invoice', 'Event'))))
|
textobject.textLine(self._normalize(self._upper(pgettext('invoice', 'Event'))))
|
||||||
canvas.drawText(textobject)
|
canvas.drawText(textobject)
|
||||||
|
|
||||||
def _date_range_in_header(self):
|
|
||||||
if self.invoice.event.has_subevents or not self.invoice.event.settings.show_dates_on_frontpage:
|
|
||||||
return None, None
|
|
||||||
tz = self.invoice.event.timezone
|
|
||||||
show_end_date = (
|
|
||||||
self.invoice.event.settings.show_date_to and
|
|
||||||
self.invoice.event.date_to and
|
|
||||||
self.invoice.event.date_to.astimezone(tz).date() != self.invoice.event.date_from.astimezone(tz).date()
|
|
||||||
)
|
|
||||||
if show_end_date:
|
|
||||||
return self.invoice.event.date_from.astimezone(tz).date(), self.invoice.event.date_to.astimezone(tz).date()
|
|
||||||
else:
|
|
||||||
return self.invoice.event.date_from.astimezone(tz).date(), None
|
|
||||||
|
|
||||||
def _draw_event(self, canvas):
|
def _draw_event(self, canvas):
|
||||||
def shorten(txt):
|
def shorten(txt):
|
||||||
txt = str(txt)
|
txt = str(txt)
|
||||||
@@ -554,17 +535,25 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
p_size = p.wrap(self.event_width, self.event_height)
|
p_size = p.wrap(self.event_width, self.event_height)
|
||||||
return txt
|
return txt
|
||||||
|
|
||||||
d_from, d_to = self._date_range_in_header()
|
if not self.invoice.event.has_subevents and self.invoice.event.settings.show_dates_on_frontpage:
|
||||||
if d_from and d_to:
|
tz = self.invoice.event.timezone
|
||||||
p_str = (
|
show_end_date = (
|
||||||
shorten(self.invoice.event.name) + '\n' +
|
self.invoice.event.settings.show_date_to and
|
||||||
pgettext('invoice', '{from_date}\nuntil {to_date}').format(
|
self.invoice.event.date_to and
|
||||||
from_date=date_format(d_from, "DATE_FORMAT"),
|
self.invoice.event.date_to.astimezone(tz).date() != self.invoice.event.date_from.astimezone(tz).date()
|
||||||
to_date=date_format(d_to, "DATE_FORMAT"),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
elif d_from:
|
if show_end_date:
|
||||||
p_str = shorten(self.invoice.event.name) + '\n' + date_format(d_from, "DATE_FORMAT")
|
p_str = (
|
||||||
|
shorten(self.invoice.event.name) + '\n' +
|
||||||
|
pgettext('invoice', '{from_date}\nuntil {to_date}').format(
|
||||||
|
from_date=self.invoice.event.get_date_from_display(show_times=False),
|
||||||
|
to_date=self.invoice.event.get_date_to_display(show_times=False)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
p_str = (
|
||||||
|
shorten(self.invoice.event.name) + '\n' + self.invoice.event.get_date_from_display(show_times=False)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
p_str = shorten(self.invoice.event.name)
|
p_str = shorten(self.invoice.event.name)
|
||||||
|
|
||||||
@@ -587,28 +576,11 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
canvas.drawRightString(self.pagesize[0] - 20 * mm, (297 - 100) * mm, self._normalize(gettext('TEST MODE')))
|
canvas.drawRightString(self.pagesize[0] - 20 * mm, (297 - 100) * mm, self._normalize(gettext('TEST MODE')))
|
||||||
canvas.restoreState()
|
canvas.restoreState()
|
||||||
|
|
||||||
def _draw_watermark(self, canvas):
|
|
||||||
watermark = self.invoice.transmission_type_instance.pdf_watermark()
|
|
||||||
if watermark:
|
|
||||||
canvas.saveState()
|
|
||||||
for font_size in range(200, 20, -10):
|
|
||||||
width = stringWidth(watermark, self.font_bold, font_size)
|
|
||||||
if width < self.pagesize[0]:
|
|
||||||
break
|
|
||||||
|
|
||||||
canvas.translate(self.pagesize[0] / 2, self.pagesize[1] / 2)
|
|
||||||
canvas.rotate(math.atan(self.pagesize[1] / self.pagesize[0]) / math.pi * 180)
|
|
||||||
canvas.setFont(self.font_bold, font_size)
|
|
||||||
canvas.setFillColorRGB(.92, .92, .92)
|
|
||||||
canvas.drawCentredString(0, - font_size / 2, self._normalize(watermark))
|
|
||||||
canvas.restoreState()
|
|
||||||
|
|
||||||
def _on_first_page(self, canvas: Canvas, doc):
|
def _on_first_page(self, canvas: Canvas, doc):
|
||||||
canvas.setCreator('pretix.eu')
|
canvas.setCreator('pretix.eu')
|
||||||
canvas.setTitle(pgettext('invoice', 'Invoice {num}').format(num=self.invoice.number))
|
canvas.setTitle(pgettext('invoice', 'Invoice {num}').format(num=self.invoice.number))
|
||||||
|
|
||||||
canvas.saveState()
|
canvas.saveState()
|
||||||
self._draw_watermark(canvas)
|
|
||||||
self._draw_footer(canvas)
|
self._draw_footer(canvas)
|
||||||
self._draw_testmode(canvas)
|
self._draw_testmode(canvas)
|
||||||
self._draw_invoice_from_label(canvas)
|
self._draw_invoice_from_label(canvas)
|
||||||
@@ -638,14 +610,6 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
|
|
||||||
def _get_intro(self):
|
def _get_intro(self):
|
||||||
story = []
|
story = []
|
||||||
|
|
||||||
type_info_text = self.invoice.transmission_type_instance.pdf_info_text()
|
|
||||||
if type_info_text:
|
|
||||||
story.append(FontFallbackParagraph(
|
|
||||||
type_info_text,
|
|
||||||
self.stylesheet['WarningBlock']
|
|
||||||
))
|
|
||||||
|
|
||||||
if self.invoice.custom_field:
|
if self.invoice.custom_field:
|
||||||
story.append(FontFallbackParagraph(
|
story.append(FontFallbackParagraph(
|
||||||
'{}: {}'.format(
|
'{}: {}'.format(
|
||||||
@@ -692,14 +656,7 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
return story
|
return story
|
||||||
|
|
||||||
def _get_story(self, doc):
|
def _get_story(self, doc):
|
||||||
all_lines = list(self.invoice.lines.all())
|
has_taxes = any(il.tax_value for il in self.invoice.lines.all()) or self.invoice.reverse_charge
|
||||||
has_taxes = any(il.tax_value for il in all_lines) or self.invoice.reverse_charge
|
|
||||||
header_dates = self._date_range_in_header()
|
|
||||||
tz = self.invoice.event.timezone
|
|
||||||
has_multiple_service_dates = len(set(
|
|
||||||
(il.period_start, il.period_end) for il in all_lines
|
|
||||||
)) > 1
|
|
||||||
request_show_service_date = False
|
|
||||||
|
|
||||||
story = [
|
story = [
|
||||||
NextPageTemplate('FirstPage'),
|
NextPageTemplate('FirstPage'),
|
||||||
@@ -743,75 +700,15 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
)]
|
)]
|
||||||
|
|
||||||
def _group_key(line):
|
def _group_key(line):
|
||||||
return (line.description, line.tax_rate, line.tax_name, line.net_value, line.gross_value, line.subevent,
|
return (line.description, line.tax_rate, line.tax_name, line.net_value, line.gross_value, line.subevent_id,
|
||||||
line.period_start, line.period_end)
|
line.event_date_from, line.event_date_to)
|
||||||
|
|
||||||
def day(dt: datetime.datetime) -> datetime.date:
|
|
||||||
if dt is None:
|
|
||||||
return None
|
|
||||||
return dt.astimezone(tz).date()
|
|
||||||
|
|
||||||
total = Decimal('0.00')
|
total = Decimal('0.00')
|
||||||
for (description, tax_rate, tax_name, net_value, gross_value, subevent, period_start, period_end), lines in addon_aware_groupby(
|
for (description, tax_rate, tax_name, net_value, gross_value, *ignored), lines in addon_aware_groupby(
|
||||||
all_lines,
|
self.invoice.lines.all(),
|
||||||
key=_group_key,
|
key=_group_key,
|
||||||
is_addon=lambda l: l.description.startswith(" +"),
|
is_addon=lambda l: l.description.startswith(" +"),
|
||||||
):
|
):
|
||||||
# Try to be clever and figure out when organizers would want to show the period. This heuristic is
|
|
||||||
# not perfect and the only "fully correct" way would be to include the period on every line always,
|
|
||||||
# however this will cause confusion (a) due to useless repetition of the same date all over the invoice
|
|
||||||
# (b) due to not respecting the show_date_to setting of events in cases where we could have respected it.
|
|
||||||
# Still, we want to show the date explicitly if its different to the event or invoice date.
|
|
||||||
period_start_day = day(period_start)
|
|
||||||
period_end_day = day(period_end)
|
|
||||||
if period_start and period_end and period_end_day != period_start_day:
|
|
||||||
# It's a multi-day period, such as the validity of the ticket or an event date period
|
|
||||||
|
|
||||||
if period_start_day == header_dates[0] and period_end_day == header_dates[1]:
|
|
||||||
# This is the exact event period we already printed in the header, no need to repeat it.
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
elif (self.event.has_subevents and subevent and day(subevent.date_from) == period_start_day and
|
|
||||||
day(subevent.date_to) == period_end_day):
|
|
||||||
# For subevents, build_invoice already includes the date in the description in the event-default format.
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
else:
|
|
||||||
period_line = f"{date_format(period_start_day, 'SHORT_DATE_FORMAT')} – {date_format(period_end_day, 'SHORT_DATE_FORMAT')}"
|
|
||||||
|
|
||||||
elif period_start or period_end:
|
|
||||||
# It's a single-day period
|
|
||||||
|
|
||||||
delivery_day = period_end_day or period_start_day
|
|
||||||
if delivery_day in header_dates:
|
|
||||||
# This is the event date we already printed in the header, no need to repeat it.
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
elif self.event.has_subevents and subevent and delivery_day in (day(subevent.date_from), day(subevent.date_to)):
|
|
||||||
# For subevents, build_invoice already includes the date in the description in the event-default format.
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
elif (delivery_day == self.invoice.date) and header_dates[0] is None:
|
|
||||||
# This is a shop that doesn't show the date of the event in the header, and the period is the invoice
|
|
||||||
# date. We assume that this is an 'everything is executed immediately' situation and do not want to
|
|
||||||
# confuse with showing additional dates on the invoice. This is the case that is not guaranteed to be
|
|
||||||
# correct in all cases and might need to change in the future. If customers have legal concerns, a
|
|
||||||
# quick fix is including a sentence like "Delivery date is the invoice date unless otherwise indicated:"
|
|
||||||
# in a custom text on the invoice.
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
else:
|
|
||||||
period_line = date_format(delivery_day, 'SHORT_DATE_FORMAT')
|
|
||||||
else:
|
|
||||||
# No period known
|
|
||||||
period_line = ""
|
|
||||||
|
|
||||||
if not has_multiple_service_dates and period_line:
|
|
||||||
# Group together at the end of the invoice
|
|
||||||
request_show_service_date = period_line
|
|
||||||
elif period_line:
|
|
||||||
description += "\n" + period_line
|
|
||||||
|
|
||||||
lines = list(lines)
|
lines = list(lines)
|
||||||
if has_taxes:
|
if has_taxes:
|
||||||
if len(lines) > 1:
|
if len(lines) > 1:
|
||||||
@@ -820,7 +717,6 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
gross_price=money_filter(gross_value, self.invoice.event.currency),
|
gross_price=money_filter(gross_value, self.invoice.event.currency),
|
||||||
)
|
)
|
||||||
description = description + "\n" + single_price_line
|
description = description + "\n" + single_price_line
|
||||||
|
|
||||||
tdata.append((
|
tdata.append((
|
||||||
FontFallbackParagraph(
|
FontFallbackParagraph(
|
||||||
self._clean_text(description, tags=['br']),
|
self._clean_text(description, tags=['br']),
|
||||||
@@ -925,12 +821,6 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
|
|
||||||
story.append(Spacer(1, 10 * mm))
|
story.append(Spacer(1, 10 * mm))
|
||||||
|
|
||||||
if request_show_service_date:
|
|
||||||
story.append(FontFallbackParagraph(
|
|
||||||
self._normalize(pgettext('invoice', 'Invoice period: {daterange}').format(daterange=request_show_service_date)),
|
|
||||||
self.stylesheet['Normal']
|
|
||||||
))
|
|
||||||
|
|
||||||
if self.invoice.payment_provider_text:
|
if self.invoice.payment_provider_text:
|
||||||
story.append(FontFallbackParagraph(
|
story.append(FontFallbackParagraph(
|
||||||
self._normalize(self.invoice.payment_provider_text),
|
self._normalize(self.invoice.payment_provider_text),
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import re
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import gettext_lazy as _, pgettext
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
|
||||||
from pretix.base.invoicing.transmission import (
|
from pretix.base.invoicing.transmission import (
|
||||||
@@ -125,15 +125,15 @@ class PeppolIdValidator:
|
|||||||
|
|
||||||
def __call__(self, value):
|
def __call__(self, value):
|
||||||
if ":" not in value:
|
if ":" not in value:
|
||||||
raise ValidationError(_("A Peppol participant ID always starts with a prefix, followed by a colon (:)."))
|
raise ValidationError(_("A PEPPOL participant ID always starts with a prefix, followed by a colon (:)."))
|
||||||
|
|
||||||
prefix, second = value.split(":", 1)
|
prefix, second = value.split(":", 1)
|
||||||
if prefix not in self.regex_rules:
|
if prefix not in self.regex_rules:
|
||||||
raise ValidationError(_("The Peppol participant ID prefix %(number)s is not known to our system. Please "
|
raise ValidationError(_("The PEPPOL participant ID prefix %(number)s is not known to our system. Please "
|
||||||
"reach out to us if you are sure this ID is correct."), params={"number": prefix})
|
"reach out to us if you are sure this ID is correct."), params={"number": prefix})
|
||||||
|
|
||||||
if not re.match(self.regex_rules[prefix], second):
|
if not re.match(self.regex_rules[prefix], second):
|
||||||
raise ValidationError(_("The Peppol participant ID does not match the validation rules for the prefix "
|
raise ValidationError(_("The PEPPOL participant ID does not match the validation rules for the prefix "
|
||||||
"%(number)s. Please reach out to us if you are sure this ID is correct."),
|
"%(number)s. Please reach out to us if you are sure this ID is correct."),
|
||||||
params={"number": prefix})
|
params={"number": prefix})
|
||||||
return value
|
return value
|
||||||
@@ -142,7 +142,7 @@ class PeppolIdValidator:
|
|||||||
@transmission_types.new()
|
@transmission_types.new()
|
||||||
class PeppolTransmissionType(TransmissionType):
|
class PeppolTransmissionType(TransmissionType):
|
||||||
identifier = "peppol"
|
identifier = "peppol"
|
||||||
verbose_name = "Peppol"
|
verbose_name = "PEPPOL"
|
||||||
priority = 250
|
priority = 250
|
||||||
enforce_transmission = True
|
enforce_transmission = True
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ class PeppolTransmissionType(TransmissionType):
|
|||||||
def invoice_address_form_fields(self) -> dict:
|
def invoice_address_form_fields(self) -> dict:
|
||||||
return {
|
return {
|
||||||
"transmission_peppol_participant_id": forms.CharField(
|
"transmission_peppol_participant_id": forms.CharField(
|
||||||
label=_("Peppol participant ID"),
|
label=_("PEPPOL participant ID"),
|
||||||
validators=[
|
validators=[
|
||||||
PeppolIdValidator(),
|
PeppolIdValidator(),
|
||||||
]
|
]
|
||||||
@@ -165,13 +165,3 @@ class PeppolTransmissionType(TransmissionType):
|
|||||||
"company", "street", "zipcode", "city", "country",
|
"company", "street", "zipcode", "city", "country",
|
||||||
}
|
}
|
||||||
return base | {"transmission_peppol_participant_id"}
|
return base | {"transmission_peppol_participant_id"}
|
||||||
|
|
||||||
def pdf_watermark(self) -> str:
|
|
||||||
return pgettext("peppol_invoice", "Visual copy")
|
|
||||||
|
|
||||||
def pdf_info_text(self) -> str:
|
|
||||||
return pgettext(
|
|
||||||
"peppol_invoice",
|
|
||||||
"This PDF document is a visual copy of the invoice and does not constitute an invoice for VAT "
|
|
||||||
"purposes. The original invoice is issued in XML format and transmitted through the Peppol network."
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -104,18 +104,6 @@ class TransmissionType:
|
|||||||
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
|
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
|
||||||
return transmission_info
|
return transmission_info
|
||||||
|
|
||||||
def pdf_watermark(self) -> Optional[str]:
|
|
||||||
"""
|
|
||||||
Return a watermark that should be rendered across the PDF file.
|
|
||||||
"""
|
|
||||||
return None
|
|
||||||
|
|
||||||
def pdf_info_text(self) -> Optional[str]:
|
|
||||||
"""
|
|
||||||
Return an info text that should be rendered on the PDF file.
|
|
||||||
"""
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class TransmissionProvider:
|
class TransmissionProvider:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,78 +0,0 @@
|
|||||||
# Generated by Django 4.2.17 on 2025-09-08 08:14
|
|
||||||
from django.core.cache import cache
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
def set_invoice_period(apps, schema_editor):
|
|
||||||
EventSettingsStore = apps.get_model("pretixbase", "Event_SettingsStore")
|
|
||||||
ev_seen = set()
|
|
||||||
insert_queue = []
|
|
||||||
flush_queue = []
|
|
||||||
|
|
||||||
def store():
|
|
||||||
EventSettingsStore.objects.bulk_create(
|
|
||||||
insert_queue,
|
|
||||||
update_conflicts=True,
|
|
||||||
update_fields=["value"],
|
|
||||||
unique_fields=["object", "key"],
|
|
||||||
)
|
|
||||||
cache.delete_many(flush_queue)
|
|
||||||
flush_queue.clear()
|
|
||||||
insert_queue.clear()
|
|
||||||
|
|
||||||
# Existing events that use pretix-zugferd and have explicitly disabled delivery dates
|
|
||||||
for setting in EventSettingsStore.objects.filter(key="zugferd_include_delivery_date", value="False"):
|
|
||||||
flush_queue.append("hierarkey_{}_{}".format("event", setting.object_id))
|
|
||||||
insert_queue.append(
|
|
||||||
EventSettingsStore(
|
|
||||||
object_id=setting.object_id,
|
|
||||||
key="invoice_period",
|
|
||||||
value="invoice_date",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
ev_seen.add(setting.object_id)
|
|
||||||
|
|
||||||
if len(insert_queue) > 1000:
|
|
||||||
store()
|
|
||||||
|
|
||||||
# Existing events that previously hid their date on invoices
|
|
||||||
for setting in EventSettingsStore.objects.filter(key="show_dates_on_frontpage", value="False"):
|
|
||||||
if setting.object_id in ev_seen:
|
|
||||||
continue
|
|
||||||
|
|
||||||
flush_queue.append("hierarkey_{}_{}".format("event", setting.object_id))
|
|
||||||
insert_queue.append(
|
|
||||||
EventSettingsStore(
|
|
||||||
object_id=setting.object_id,
|
|
||||||
key="invoice_period",
|
|
||||||
value="auto_no_event",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if len(insert_queue) > 1000:
|
|
||||||
store()
|
|
||||||
|
|
||||||
store()
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
dependencies = [
|
|
||||||
("pretixbase", "0288_invoice_transmission"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name="invoiceline",
|
|
||||||
old_name="event_date_to",
|
|
||||||
new_name="period_end",
|
|
||||||
),
|
|
||||||
migrations.RenameField(
|
|
||||||
model_name="invoiceline",
|
|
||||||
old_name="event_date_from",
|
|
||||||
new_name="period_start",
|
|
||||||
),
|
|
||||||
migrations.RunPython(
|
|
||||||
set_invoice_period,
|
|
||||||
migrations.RunPython.noop,
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# Generated by Django 4.2.17 on 2025-09-09 09:55
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
("pretixbase", "0289_invoiceline_period"),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="plugin_data",
|
|
||||||
field=models.JSONField(default=dict),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -243,16 +243,8 @@ class EventMixin:
|
|||||||
def waiting_list_active(self):
|
def waiting_list_active(self):
|
||||||
if not self.settings.waiting_list_enabled:
|
if not self.settings.waiting_list_enabled:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if self.settings.waiting_list_auto_disable:
|
if self.settings.waiting_list_auto_disable:
|
||||||
if self.settings.waiting_list_auto_disable.datetime(self) <= time_machine_now():
|
return self.settings.waiting_list_auto_disable.datetime(self) > time_machine_now()
|
||||||
return False
|
|
||||||
|
|
||||||
if hasattr(self, 'active_quotas'):
|
|
||||||
# Only run when called with computed quotas, i.e. event calendar
|
|
||||||
if not self.best_availability[3]:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -330,7 +322,9 @@ class EventMixin:
|
|||||||
sq_active_item = Item.objects.using(settings.DATABASE_REPLICA).filter_available(channel=channel, voucher=voucher).filter(
|
sq_active_item = Item.objects.using(settings.DATABASE_REPLICA).filter_available(channel=channel, voucher=voucher).filter(
|
||||||
Q(variations__isnull=True)
|
Q(variations__isnull=True)
|
||||||
& Q(quotas__pk=OuterRef('pk'))
|
& Q(quotas__pk=OuterRef('pk'))
|
||||||
)
|
).order_by().values_list('quotas__pk').annotate(
|
||||||
|
items=GroupConcat('pk', delimiter=',')
|
||||||
|
).values('items')
|
||||||
|
|
||||||
q_variation = (
|
q_variation = (
|
||||||
Q(active=True)
|
Q(active=True)
|
||||||
@@ -363,7 +357,9 @@ class EventMixin:
|
|||||||
q_variation &= Q(hide_without_voucher=False)
|
q_variation &= Q(hide_without_voucher=False)
|
||||||
q_variation &= Q(item__hide_without_voucher=False)
|
q_variation &= Q(item__hide_without_voucher=False)
|
||||||
|
|
||||||
sq_active_variation = ItemVariation.objects.filter(q_variation)
|
sq_active_variation = ItemVariation.objects.filter(q_variation).order_by().values_list('quotas__pk').annotate(
|
||||||
|
items=GroupConcat('pk', delimiter=',')
|
||||||
|
).values('items')
|
||||||
quota_base_qs = Quota.objects.using(settings.DATABASE_REPLICA).filter(
|
quota_base_qs = Quota.objects.using(settings.DATABASE_REPLICA).filter(
|
||||||
ignore_for_event_availability=False
|
ignore_for_event_availability=False
|
||||||
)
|
)
|
||||||
@@ -380,23 +376,8 @@ class EventMixin:
|
|||||||
'quotas',
|
'quotas',
|
||||||
to_attr='active_quotas',
|
to_attr='active_quotas',
|
||||||
queryset=quota_base_qs.annotate(
|
queryset=quota_base_qs.annotate(
|
||||||
active_items=Subquery(
|
active_items=Subquery(sq_active_item, output_field=models.TextField()),
|
||||||
sq_active_item.order_by().values_list('quotas__pk').annotate(
|
active_variations=Subquery(sq_active_variation, output_field=models.TextField()),
|
||||||
items=GroupConcat('pk', delimiter=',')
|
|
||||||
).values('items'),
|
|
||||||
output_field=models.TextField()
|
|
||||||
),
|
|
||||||
active_variations=Subquery(
|
|
||||||
sq_active_variation.order_by().values_list('quotas__pk').annotate(
|
|
||||||
items=GroupConcat('pk', delimiter=',')
|
|
||||||
).values('items'),
|
|
||||||
output_field=models.TextField()),
|
|
||||||
has_active_items_with_waitinglist=Exists(
|
|
||||||
sq_active_item.filter(allow_waitinglist=True),
|
|
||||||
),
|
|
||||||
has_active_variations_with_waitinglist=Exists(
|
|
||||||
sq_active_variation.filter(item__allow_waitinglist=True),
|
|
||||||
),
|
|
||||||
).exclude(
|
).exclude(
|
||||||
Q(active_items="") & Q(active_variations="")
|
Q(active_items="") & Q(active_variations="")
|
||||||
).select_related('event', 'subevent')
|
).select_related('event', 'subevent')
|
||||||
@@ -425,12 +406,11 @@ class EventMixin:
|
|||||||
@cached_property
|
@cached_property
|
||||||
def best_availability(self):
|
def best_availability(self):
|
||||||
"""
|
"""
|
||||||
Returns a 4-tuple of
|
Returns a 3-tuple of
|
||||||
|
|
||||||
- The availability state of this event (one of the ``Quota.AVAILABILITY_*`` constants)
|
- The availability state of this event (one of the ``Quota.AVAILABILITY_*`` constants)
|
||||||
- The number of tickets currently available (or ``None``)
|
- The number of tickets currently available (or ``None``)
|
||||||
- The number of tickets "originally" available (or ``None``)
|
- The number of tickets "originally" available (or ``None``)
|
||||||
- Whether a sold out product has the waiting list enabled
|
|
||||||
|
|
||||||
This can only be called on objects obtained through a queryset that has been passed through ``.annotated()``.
|
This can only be called on objects obtained through a queryset that has been passed through ``.annotated()``.
|
||||||
"""
|
"""
|
||||||
@@ -453,7 +433,6 @@ class EventMixin:
|
|||||||
r = getattr(self, '_quota_cache', {})
|
r = getattr(self, '_quota_cache', {})
|
||||||
quotas_for_item = defaultdict(list)
|
quotas_for_item = defaultdict(list)
|
||||||
quotas_for_variation = defaultdict(list)
|
quotas_for_variation = defaultdict(list)
|
||||||
waiting_list_found = False
|
|
||||||
for q in self.active_quotas:
|
for q in self.active_quotas:
|
||||||
if q not in r:
|
if q not in r:
|
||||||
r[q] = q.availability(allow_cache=True)
|
r[q] = q.availability(allow_cache=True)
|
||||||
@@ -462,8 +441,6 @@ class EventMixin:
|
|||||||
for item_id in q.active_items.split(","):
|
for item_id in q.active_items.split(","):
|
||||||
if item_id not in items_disabled:
|
if item_id not in items_disabled:
|
||||||
quotas_for_item[item_id].append(q)
|
quotas_for_item[item_id].append(q)
|
||||||
if q.has_active_items_with_waitinglist or q.has_active_variations_with_waitinglist:
|
|
||||||
waiting_list_found = True
|
|
||||||
if q.active_variations:
|
if q.active_variations:
|
||||||
for var_id in q.active_variations.split(","):
|
for var_id in q.active_variations.split(","):
|
||||||
if var_id not in vars_disabled:
|
if var_id not in vars_disabled:
|
||||||
@@ -471,7 +448,7 @@ class EventMixin:
|
|||||||
|
|
||||||
if not self.active_quotas or (not quotas_for_item and not quotas_for_variation):
|
if not self.active_quotas or (not quotas_for_item and not quotas_for_variation):
|
||||||
# No item is enabled for this event, treat the event as "unknown"
|
# No item is enabled for this event, treat the event as "unknown"
|
||||||
return None, None, None, waiting_list_found
|
return None, None, None
|
||||||
|
|
||||||
# We iterate over all items and variations and keep track of
|
# We iterate over all items and variations and keep track of
|
||||||
# - `best_state_found` - the best availability state we have seen so far. If one item is available, the event is available!
|
# - `best_state_found` - the best availability state we have seen so far. If one item is available, the event is available!
|
||||||
@@ -490,7 +467,7 @@ class EventMixin:
|
|||||||
quotas_that_are_not_unlimited = [q for q in quota_list if q.size is not None]
|
quotas_that_are_not_unlimited = [q for q in quota_list if q.size is not None]
|
||||||
if not quotas_that_are_not_unlimited:
|
if not quotas_that_are_not_unlimited:
|
||||||
# We found an unlimited ticket, no more need to do anything else
|
# We found an unlimited ticket, no more need to do anything else
|
||||||
return Quota.AVAILABILITY_OK, None, None, waiting_list_found
|
return Quota.AVAILABILITY_OK, None, None
|
||||||
|
|
||||||
if worst_state_for_ticket == Quota.AVAILABILITY_OK:
|
if worst_state_for_ticket == Quota.AVAILABILITY_OK:
|
||||||
availability_of_this = min(max(0, r[q][1] - quota_used_for_found_tickets[q]) for q in quotas_that_are_not_unlimited)
|
availability_of_this = min(max(0, r[q][1] - quota_used_for_found_tickets[q]) for q in quotas_that_are_not_unlimited)
|
||||||
@@ -504,8 +481,7 @@ class EventMixin:
|
|||||||
quota_used_for_possible_tickets[q] += possible_of_this
|
quota_used_for_possible_tickets[q] += possible_of_this
|
||||||
|
|
||||||
best_state_found = max(best_state_found, worst_state_for_ticket)
|
best_state_found = max(best_state_found, worst_state_for_ticket)
|
||||||
|
return best_state_found, num_tickets_found, num_tickets_possible
|
||||||
return best_state_found, num_tickets_found, num_tickets_possible, waiting_list_found
|
|
||||||
|
|
||||||
def free_seats(self, ignore_voucher=None, sales_channel='web', include_blocked=False):
|
def free_seats(self, ignore_voucher=None, sales_channel='web', include_blocked=False):
|
||||||
assert isinstance(sales_channel, str) or sales_channel is None
|
assert isinstance(sales_channel, str) or sales_channel is None
|
||||||
|
|||||||
@@ -195,21 +195,20 @@ class GiftCardTransaction(models.Model):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
if self.order_id:
|
if self.order_id:
|
||||||
if not customer_facing:
|
if not self.text:
|
||||||
return format_html(
|
if not customer_facing:
|
||||||
'<a href="{}">{}</a> {}',
|
return format_html(
|
||||||
reverse(
|
'<a href="{}">{}</a>',
|
||||||
"control:event.order",
|
reverse(
|
||||||
kwargs={
|
"control:event.order",
|
||||||
"event": self.order.event.slug,
|
kwargs={
|
||||||
"organizer": self.order.event.organizer.slug,
|
"event": self.order.event.slug,
|
||||||
"code": self.order.code,
|
"organizer": self.order.event.organizer.slug,
|
||||||
}
|
"code": self.order.code,
|
||||||
),
|
}
|
||||||
self.order.full_code,
|
),
|
||||||
self.text or "",
|
self.order.full_code
|
||||||
)
|
)
|
||||||
elif not self.text:
|
|
||||||
return self.order.full_code
|
return self.order.full_code
|
||||||
else:
|
else:
|
||||||
return self.text
|
return self.text
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
# License for the specific language governing permissions and limitations under the License.
|
# License for the specific language governing permissions and limitations under the License.
|
||||||
|
|
||||||
import string
|
import string
|
||||||
import warnings
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
import pycountry
|
import pycountry
|
||||||
@@ -43,7 +42,6 @@ from django.db.models.functions import Cast
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.crypto import get_random_string
|
from django.utils.crypto import get_random_string
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.timezone import now
|
|
||||||
from django.utils.translation import gettext_lazy as _, pgettext
|
from django.utils.translation import gettext_lazy as _, pgettext
|
||||||
from django_scopes import ScopedManager
|
from django_scopes import ScopedManager
|
||||||
|
|
||||||
@@ -202,7 +200,6 @@ class Invoice(models.Model):
|
|||||||
transmission_info = models.JSONField(null=True, blank=True)
|
transmission_info = models.JSONField(null=True, blank=True)
|
||||||
|
|
||||||
file = models.FileField(null=True, blank=True, upload_to=invoice_filename, max_length=255)
|
file = models.FileField(null=True, blank=True, upload_to=invoice_filename, max_length=255)
|
||||||
plugin_data = models.JSONField(default=dict)
|
|
||||||
|
|
||||||
objects = ScopedManager(organizer='event__organizer')
|
objects = ScopedManager(organizer='event__organizer')
|
||||||
|
|
||||||
@@ -371,22 +368,6 @@ class Invoice(models.Model):
|
|||||||
from pretix.base.invoicing.transmission import transmission_types
|
from pretix.base.invoicing.transmission import transmission_types
|
||||||
return transmission_types.get(identifier=self.transmission_type)[0]
|
return transmission_types.get(identifier=self.transmission_type)[0]
|
||||||
|
|
||||||
def set_transmission_failed(self, provider, data):
|
|
||||||
self.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
|
|
||||||
self.transmission_date = now()
|
|
||||||
if not self.transmission_provider and provider:
|
|
||||||
self.transmission_provider = provider
|
|
||||||
self.save(update_fields=["transmission_status", "transmission_date", "transmission_provider"])
|
|
||||||
self.order.log_action(
|
|
||||||
"pretix.event.order.invoice.sending_failed",
|
|
||||||
data={
|
|
||||||
"full_invoice_no": self.full_invoice_no,
|
|
||||||
"transmission_provider": provider,
|
|
||||||
"transmission_type": self.transmission_type,
|
|
||||||
"data": data,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class InvoiceLine(models.Model):
|
class InvoiceLine(models.Model):
|
||||||
"""
|
"""
|
||||||
@@ -406,10 +387,10 @@ class InvoiceLine(models.Model):
|
|||||||
:type tax_name: str
|
:type tax_name: str
|
||||||
:param subevent: The subevent this line refers to
|
:param subevent: The subevent this line refers to
|
||||||
:type subevent: SubEvent
|
:type subevent: SubEvent
|
||||||
:param period_start: Start if service period invoiced
|
:param event_date_from: Event date of the (sub)event at the time the invoice was created
|
||||||
:type period_start: datetime
|
:type event_date_from: datetime
|
||||||
:param period_end: End of service period invoiced
|
:param event_date_to: Event end date of the (sub)event at the time the invoice was created
|
||||||
:type period_end: datetime
|
:type event_date_to: datetime
|
||||||
:param event_location: Event location of the (sub)event at the time the invoice was created
|
:param event_location: Event location of the (sub)event at the time the invoice was created
|
||||||
:type event_location: str
|
:type event_location: str
|
||||||
:param item: The item this line refers to
|
:param item: The item this line refers to
|
||||||
@@ -428,8 +409,8 @@ class InvoiceLine(models.Model):
|
|||||||
tax_name = models.CharField(max_length=190)
|
tax_name = models.CharField(max_length=190)
|
||||||
tax_code = models.CharField(max_length=190, null=True, blank=True)
|
tax_code = models.CharField(max_length=190, null=True, blank=True)
|
||||||
subevent = models.ForeignKey('SubEvent', null=True, blank=True, on_delete=models.PROTECT)
|
subevent = models.ForeignKey('SubEvent', null=True, blank=True, on_delete=models.PROTECT)
|
||||||
period_start = models.DateTimeField(null=True)
|
event_date_from = models.DateTimeField(null=True)
|
||||||
period_end = models.DateTimeField(null=True)
|
event_date_to = models.DateTimeField(null=True)
|
||||||
event_location = models.TextField(null=True, blank=True)
|
event_location = models.TextField(null=True, blank=True)
|
||||||
item = models.ForeignKey('Item', null=True, blank=True, on_delete=models.PROTECT)
|
item = models.ForeignKey('Item', null=True, blank=True, on_delete=models.PROTECT)
|
||||||
variation = models.ForeignKey('ItemVariation', null=True, blank=True, on_delete=models.PROTECT)
|
variation = models.ForeignKey('ItemVariation', null=True, blank=True, on_delete=models.PROTECT)
|
||||||
@@ -446,35 +427,3 @@ class InvoiceLine(models.Model):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'Line {} of invoice {}'.format(self.position, self.invoice)
|
return 'Line {} of invoice {}'.format(self.position, self.invoice)
|
||||||
|
|
||||||
@property
|
|
||||||
def event_date_from(self):
|
|
||||||
warnings.warn(
|
|
||||||
'InvoiceLine.event_date_from is deprecated, use period_start instead,',
|
|
||||||
category=DeprecationWarning,
|
|
||||||
)
|
|
||||||
return self.period_start
|
|
||||||
|
|
||||||
@event_date_from.setter
|
|
||||||
def event_date_from(self, value):
|
|
||||||
warnings.warn(
|
|
||||||
'InvoiceLine.event_date_from is deprecated, use period_start instead,',
|
|
||||||
category=DeprecationWarning,
|
|
||||||
)
|
|
||||||
self.period_start = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def event_date_to(self):
|
|
||||||
warnings.warn(
|
|
||||||
'InvoiceLine.event_date_to is deprecated, use period_end instead,',
|
|
||||||
category=DeprecationWarning,
|
|
||||||
)
|
|
||||||
return self.period_end
|
|
||||||
|
|
||||||
@event_date_to.setter
|
|
||||||
def event_date_to(self, value):
|
|
||||||
warnings.warn(
|
|
||||||
'InvoiceLine.event_date_to is deprecated, use period_end instead,',
|
|
||||||
category=DeprecationWarning,
|
|
||||||
)
|
|
||||||
self.period_to = value
|
|
||||||
|
|||||||
@@ -38,11 +38,8 @@ import logging
|
|||||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.db import connections, models
|
from django.db import connections, models
|
||||||
from django.db.models import Q
|
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
|
|
||||||
from pretix.api.models import WebHook
|
|
||||||
|
|
||||||
|
|
||||||
class VisibleOnlyManager(models.Manager):
|
class VisibleOnlyManager(models.Manager):
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
@@ -184,56 +181,12 @@ class LogEntry(models.Model):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def bulk_postprocess(cls, objects):
|
def bulk_postprocess(cls, objects):
|
||||||
from pretix.api.webhooks import notify_webhooks
|
from pretix.api.webhooks import notify_webhooks
|
||||||
from pretix.base.models import NotificationSetting
|
|
||||||
|
|
||||||
from ..services.notifications import notify
|
from ..services.notifications import notify
|
||||||
|
|
||||||
# Regular LogEntry.save() always kicks off notify and notify_webhooks tasks, regardless of whether a webhook
|
to_notify = [o.id for o in objects if o.notification_type]
|
||||||
# listener exists. However, in bulk processing, it makes sense to check once and then only create the task if
|
|
||||||
# there is something to do.
|
|
||||||
_webhook_active_cache = {}
|
|
||||||
_notification_active_cache = {}
|
|
||||||
|
|
||||||
def _is_webhook_active(logentry):
|
|
||||||
nonlocal _webhook_active_cache
|
|
||||||
|
|
||||||
key = (logentry.action_type, logentry.organizer_id, logentry.event_id)
|
|
||||||
if key not in _webhook_active_cache:
|
|
||||||
notification_type = logentry.webhook_type
|
|
||||||
_webhook_active_cache[key] = notification_type and WebHook.objects.for_notification(
|
|
||||||
notification_type.action_type, logentry.organizer, logentry.event_id
|
|
||||||
).exists()
|
|
||||||
return _webhook_active_cache[key]
|
|
||||||
|
|
||||||
def _is_notification_active(logentry):
|
|
||||||
nonlocal _notification_active_cache
|
|
||||||
|
|
||||||
key = (logentry.action_type, logentry.organizer_id, logentry.event_id)
|
|
||||||
if key not in _notification_active_cache:
|
|
||||||
notification_type = logentry.notification_type
|
|
||||||
if notification_type and logentry.event:
|
|
||||||
# We only have event-related notifications right now
|
|
||||||
users = logentry.event.get_users_with_permission(
|
|
||||||
notification_type.required_permission
|
|
||||||
).filter(notifications_send=True, is_active=True)
|
|
||||||
|
|
||||||
_notification_active_cache[key] = NotificationSetting.objects.filter(
|
|
||||||
# This is not technically fully correct since it's returning True if a user has the
|
|
||||||
# notification enabled on the global level and then disabled on the per-event-level,
|
|
||||||
# but it's good enough as a first check to avoid useless celery tasks for bulk actions
|
|
||||||
Q(event_id=logentry.event_id) | Q(event__isnull=True),
|
|
||||||
action_type=notification_type.action_type,
|
|
||||||
user__pk__in=users.values_list('pk', flat=True),
|
|
||||||
enabled=True,
|
|
||||||
).exists()
|
|
||||||
|
|
||||||
else:
|
|
||||||
_webhook_active_cache[key] = False
|
|
||||||
return _notification_active_cache[key]
|
|
||||||
|
|
||||||
to_notify = [o.id for o in objects if _is_notification_active(o)]
|
|
||||||
if to_notify:
|
if to_notify:
|
||||||
notify.apply_async(args=(to_notify,))
|
notify.apply_async(args=(to_notify,))
|
||||||
to_wh = [o.id for o in objects if _is_webhook_active(o)]
|
to_wh = [o.id for o in objects if o.webhook_type]
|
||||||
if to_wh:
|
if to_wh:
|
||||||
notify_webhooks.apply_async(args=(to_wh,))
|
notify_webhooks.apply_async(args=(to_wh,))
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ class Organizer(LoggedModel):
|
|||||||
self.settings.cookie_consent = True
|
self.settings.cookie_consent = True
|
||||||
|
|
||||||
plugins = [p for p in settings.PRETIX_PLUGINS_ORGANIZER_DEFAULT.split(",") if p]
|
plugins = [p for p in settings.PRETIX_PLUGINS_ORGANIZER_DEFAULT.split(",") if p]
|
||||||
if plugins and not self.get_plugins():
|
if plugins:
|
||||||
self.set_active_plugins(plugins, allow_restricted=plugins)
|
self.set_active_plugins(plugins, allow_restricted=plugins)
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
|||||||
@@ -1627,7 +1627,6 @@ class GiftCardPayment(BasePaymentProvider):
|
|||||||
order=refund.order,
|
order=refund.order,
|
||||||
refund=refund,
|
refund=refund,
|
||||||
acceptor=self.event.organizer,
|
acceptor=self.event.organizer,
|
||||||
text=refund.comment,
|
|
||||||
)
|
)
|
||||||
refund.info_data = {
|
refund.info_data = {
|
||||||
'gift_card': gc.pk,
|
'gift_card': gc.pk,
|
||||||
|
|||||||
+5
-28
@@ -48,8 +48,6 @@ from functools import partial
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
import jsonschema
|
import jsonschema
|
||||||
import pypdf
|
|
||||||
import pypdf.generic
|
|
||||||
import reportlab.rl_config
|
import reportlab.rl_config
|
||||||
from bidi import get_display
|
from bidi import get_display
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -819,7 +817,7 @@ class Renderer:
|
|||||||
# and does not deal with our default value here properly
|
# and does not deal with our default value here properly
|
||||||
content = op.secret
|
content = op.secret
|
||||||
else:
|
else:
|
||||||
content = self._get_text_content(op, order, o).strip()
|
content = self._get_text_content(op, order, o)
|
||||||
|
|
||||||
if len(content) == 0:
|
if len(content) == 0:
|
||||||
return
|
return
|
||||||
@@ -1189,7 +1187,8 @@ class Renderer:
|
|||||||
|
|
||||||
for i, page in enumerate(fg_pdf.pages):
|
for i, page in enumerate(fg_pdf.pages):
|
||||||
bg_page = self.bg_pdf.pages[i]
|
bg_page = self.bg_pdf.pages[i]
|
||||||
_correct_page_media_box(bg_page)
|
if bg_page.rotation != 0:
|
||||||
|
bg_page.transfer_rotation_to_content()
|
||||||
page.merge_page(bg_page, over=False)
|
page.merge_page(bg_page, over=False)
|
||||||
output.add_page(page)
|
output.add_page(page)
|
||||||
|
|
||||||
@@ -1258,7 +1257,8 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
|
|||||||
else:
|
else:
|
||||||
for i, page in enumerate(fg_pdf.pages):
|
for i, page in enumerate(fg_pdf.pages):
|
||||||
bg_page = bg_pdf.pages[i]
|
bg_page = bg_pdf.pages[i]
|
||||||
_correct_page_media_box(bg_page)
|
if bg_page.rotation != 0:
|
||||||
|
bg_page.transfer_rotation_to_content()
|
||||||
page.merge_page(bg_page, over=False)
|
page.merge_page(bg_page, over=False)
|
||||||
|
|
||||||
# pdf_header is a string like "%pdf-X.X"
|
# pdf_header is a string like "%pdf-X.X"
|
||||||
@@ -1268,29 +1268,6 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
|
|||||||
fg_pdf.write(out_file)
|
fg_pdf.write(out_file)
|
||||||
|
|
||||||
|
|
||||||
def _correct_page_media_box(page: pypdf.PageObject):
|
|
||||||
if page.rotation != 0:
|
|
||||||
page.transfer_rotation_to_content()
|
|
||||||
media_box = page.mediabox
|
|
||||||
trsf = pypdf.Transformation()
|
|
||||||
if media_box.bottom != 0:
|
|
||||||
trsf = trsf.translate(0, -media_box.bottom)
|
|
||||||
if media_box.left != 0:
|
|
||||||
trsf = trsf.translate(-media_box.left, 0)
|
|
||||||
page.add_transformation(trsf, False)
|
|
||||||
for b in ["/MediaBox", "/CropBox", "/BleedBox", "/TrimBox", "/ArtBox"]:
|
|
||||||
if b in page:
|
|
||||||
rr = pypdf.generic.RectangleObject(page[b])
|
|
||||||
pt1 = trsf.apply_on(rr.lower_left)
|
|
||||||
pt2 = trsf.apply_on(rr.upper_right)
|
|
||||||
page[pypdf.generic.NameObject(b)] = pypdf.generic.RectangleObject((
|
|
||||||
min(pt1[0], pt2[0]),
|
|
||||||
min(pt1[1], pt2[1]),
|
|
||||||
max(pt1[0], pt2[0]),
|
|
||||||
max(pt1[1], pt2[1]),
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
@deconstructible
|
@deconstructible
|
||||||
class PdfLayoutValidator:
|
class PdfLayoutValidator:
|
||||||
def __call__(self, value):
|
def __call__(self, value):
|
||||||
|
|||||||
@@ -61,9 +61,7 @@ from pretix.base.models.tax import EU_CURRENCIES
|
|||||||
from pretix.base.services.tasks import (
|
from pretix.base.services.tasks import (
|
||||||
TransactionAwareProfiledEventTask, TransactionAwareTask,
|
TransactionAwareProfiledEventTask, TransactionAwareTask,
|
||||||
)
|
)
|
||||||
from pretix.base.signals import (
|
from pretix.base.signals import invoice_line_text, periodic_task
|
||||||
build_invoice_data, invoice_line_text, periodic_task,
|
|
||||||
)
|
|
||||||
from pretix.celery_app import app
|
from pretix.celery_app import app
|
||||||
from pretix.helpers.database import OF_SELF, rolledback_transaction
|
from pretix.helpers.database import OF_SELF, rolledback_transaction
|
||||||
from pretix.helpers.models import modelcopy
|
from pretix.helpers.models import modelcopy
|
||||||
@@ -84,10 +82,6 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
|
|
||||||
lp = invoice.order.payments.last()
|
lp = invoice.order.payments.last()
|
||||||
|
|
||||||
min_period_start = None
|
|
||||||
max_period_end = None
|
|
||||||
now_dt = now()
|
|
||||||
|
|
||||||
with (language(invoice.locale, invoice.event.settings.region)):
|
with (language(invoice.locale, invoice.event.settings.region)):
|
||||||
invoice.invoice_from = invoice.event.settings.get('invoice_address_from')
|
invoice.invoice_from = invoice.event.settings.get('invoice_address_from')
|
||||||
invoice.invoice_from_name = invoice.event.settings.get('invoice_address_from_name')
|
invoice.invoice_from_name = invoice.event.settings.get('invoice_address_from_name')
|
||||||
@@ -214,9 +208,7 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
positions = list(
|
positions = list(
|
||||||
invoice.order.positions.select_related('addon_to', 'item', 'tax_rule', 'subevent', 'variation').annotate(
|
invoice.order.positions.select_related('addon_to', 'item', 'tax_rule', 'subevent', 'variation').annotate(
|
||||||
addon_c=Count('addons')
|
addon_c=Count('addons')
|
||||||
).prefetch_related(
|
).prefetch_related('answers', 'answers__options', 'answers__question').order_by('positionid', 'id')
|
||||||
'answers', 'answers__options', 'answers__question', 'granted_memberships',
|
|
||||||
).order_by('positionid', 'id')
|
|
||||||
)
|
)
|
||||||
|
|
||||||
reverse_charge = False
|
reverse_charge = False
|
||||||
@@ -275,10 +267,6 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
location=_location_oneliner(location)
|
location=_location_oneliner(location)
|
||||||
)
|
)
|
||||||
|
|
||||||
period_start, period_end = _service_period_for_position(invoice, p, now_dt)
|
|
||||||
min_period_start = min(min_period_start or period_start, period_start)
|
|
||||||
max_period_end = min(max_period_end or period_end, period_end)
|
|
||||||
|
|
||||||
InvoiceLine.objects.create(
|
InvoiceLine.objects.create(
|
||||||
position=i,
|
position=i,
|
||||||
invoice=invoice,
|
invoice=invoice,
|
||||||
@@ -289,8 +277,8 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
item=p.item,
|
item=p.item,
|
||||||
variation=p.variation,
|
variation=p.variation,
|
||||||
attendee_name=p.attendee_name if invoice.event.settings.invoice_attendee_name else None,
|
attendee_name=p.attendee_name if invoice.event.settings.invoice_attendee_name else None,
|
||||||
period_start=period_start,
|
event_date_from=p.subevent.date_from if invoice.event.has_subevents else invoice.event.date_from,
|
||||||
period_end=period_end,
|
event_date_to=p.subevent.date_to if invoice.event.has_subevents else invoice.event.date_to,
|
||||||
event_location=location if invoice.event.settings.invoice_event_location else None,
|
event_location=location if invoice.event.settings.invoice_event_location else None,
|
||||||
tax_rate=p.tax_rate,
|
tax_rate=p.tax_rate,
|
||||||
tax_code=p.tax_code,
|
tax_code=p.tax_code,
|
||||||
@@ -313,29 +301,13 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
fee_title = _(fee.get_fee_type_display())
|
fee_title = _(fee.get_fee_type_display())
|
||||||
if fee.description:
|
if fee.description:
|
||||||
fee_title += " - " + fee.description
|
fee_title += " - " + fee.description
|
||||||
|
|
||||||
if min_period_start and max_period_end:
|
|
||||||
# Consider fees to have the same service period as the products sold
|
|
||||||
period_start = min_period_start
|
|
||||||
period_end = max_period_end
|
|
||||||
else:
|
|
||||||
# Usually can only happen if everything except a cancellation fee is removed
|
|
||||||
if invoice.event.settings.invoice_period in ("auto", "auto_no_event", "event_date") and not invoice.event.has_subevents:
|
|
||||||
# Non-series event, let's be backwards-compatible and tag everything with the event period
|
|
||||||
period_start = invoice.event.date_from
|
|
||||||
period_end = invoice.event.date_to
|
|
||||||
else:
|
|
||||||
# We could try to work from the canceled positions, but it doesn't really make sense. A cancellation
|
|
||||||
# fee is not "delivered" at the event date, it is rather effective right now.
|
|
||||||
period_start = period_end = now()
|
|
||||||
|
|
||||||
InvoiceLine.objects.create(
|
InvoiceLine.objects.create(
|
||||||
position=i + offset,
|
position=i + offset,
|
||||||
invoice=invoice,
|
invoice=invoice,
|
||||||
description=fee_title,
|
description=fee_title,
|
||||||
gross_value=fee.value,
|
gross_value=fee.value,
|
||||||
period_start=period_start,
|
event_date_from=None if invoice.event.has_subevents else invoice.event.date_from,
|
||||||
period_end=period_end,
|
event_date_to=None if invoice.event.has_subevents else invoice.event.date_to,
|
||||||
event_location=(
|
event_location=(
|
||||||
None if invoice.event.has_subevents
|
None if invoice.event.has_subevents
|
||||||
else (str(invoice.event.location)
|
else (str(invoice.event.location)
|
||||||
@@ -364,7 +336,6 @@ def build_invoice(invoice: Invoice) -> Invoice:
|
|||||||
invoice.reverse_charge = reverse_charge
|
invoice.reverse_charge = reverse_charge
|
||||||
invoice.save()
|
invoice.save()
|
||||||
|
|
||||||
build_invoice_data.send(sender=invoice.event, invoice=invoice)
|
|
||||||
return invoice
|
return invoice
|
||||||
|
|
||||||
|
|
||||||
@@ -380,55 +351,6 @@ def build_cancellation(invoice: Invoice):
|
|||||||
return invoice
|
return invoice
|
||||||
|
|
||||||
|
|
||||||
def _service_period_for_position(invoice, position, invoice_dt):
|
|
||||||
if invoice.event.settings.invoice_period in ("auto", "auto_no_event"):
|
|
||||||
if position.valid_from and position.valid_until:
|
|
||||||
period_start = position.valid_from
|
|
||||||
period_end = position.valid_until
|
|
||||||
elif position.valid_from:
|
|
||||||
period_start = position.valid_from
|
|
||||||
period_end = position.valid_from # weird, but we have nothing else to base this on
|
|
||||||
elif position.valid_until:
|
|
||||||
period_start = min(invoice.order.datetime, position.valid_until)
|
|
||||||
period_end = position.valid_until
|
|
||||||
elif memberships := list(position.granted_memberships.all()):
|
|
||||||
period_start = min(m.date_start for m in memberships)
|
|
||||||
period_end = max(m.date_end for m in memberships)
|
|
||||||
elif invoice.event.has_subevents:
|
|
||||||
if position.subevent:
|
|
||||||
period_start = position.subevent.date_from
|
|
||||||
period_end = position.subevent.date_to
|
|
||||||
else:
|
|
||||||
# Currently impossible case, but might not be in the future and never makes
|
|
||||||
# sense to use the event date here
|
|
||||||
period_start = invoice_dt
|
|
||||||
period_end = invoice_dt
|
|
||||||
elif invoice.event.settings.invoice_period == "auto_no_event":
|
|
||||||
period_start = invoice_dt
|
|
||||||
period_end = invoice_dt
|
|
||||||
else:
|
|
||||||
period_start = invoice.event.date_from
|
|
||||||
period_end = invoice.event.date_to
|
|
||||||
elif invoice.event.settings.invoice_period == "order_date":
|
|
||||||
period_start = invoice.order.datetime
|
|
||||||
period_end = invoice.order.datetime
|
|
||||||
elif invoice.event.settings.invoice_period == "event_date":
|
|
||||||
if position.subevent:
|
|
||||||
period_start = position.subevent.date_from
|
|
||||||
period_end = position.subevent.date_to
|
|
||||||
else:
|
|
||||||
period_start = invoice.event.date_from
|
|
||||||
period_end = invoice.event.date_to
|
|
||||||
elif invoice.event.settings.invoice_period == "invoice_date":
|
|
||||||
period_start = period_end = invoice_dt
|
|
||||||
else:
|
|
||||||
raise ValueError(f"Invalid invoice period setting '{invoice.event.settings.invoice_period}'")
|
|
||||||
|
|
||||||
if not period_end:
|
|
||||||
period_end = period_start
|
|
||||||
return period_start, period_end
|
|
||||||
|
|
||||||
|
|
||||||
def generate_cancellation(invoice: Invoice, trigger_pdf=True):
|
def generate_cancellation(invoice: Invoice, trigger_pdf=True):
|
||||||
if invoice.canceled:
|
if invoice.canceled:
|
||||||
raise ValueError("Invoice should not be canceled twice.")
|
raise ValueError("Invoice should not be canceled twice.")
|
||||||
@@ -534,12 +456,6 @@ def build_preview_invoice_pdf(event):
|
|||||||
if not locale or locale == '__user__':
|
if not locale or locale == '__user__':
|
||||||
locale = event.settings.locale
|
locale = event.settings.locale
|
||||||
|
|
||||||
if event.settings.invoice_period in ("auto", "auto_no_event", "event_date"):
|
|
||||||
period_start = event.date_from
|
|
||||||
period_end = event.date_to or event.date_from
|
|
||||||
else:
|
|
||||||
period_start = period_end = timezone.now()
|
|
||||||
|
|
||||||
with rolledback_transaction(), language(locale, event.settings.region):
|
with rolledback_transaction(), language(locale, event.settings.region):
|
||||||
order = event.orders.create(
|
order = event.orders.create(
|
||||||
status=Order.STATUS_PENDING, datetime=timezone.now(),
|
status=Order.STATUS_PENDING, datetime=timezone.now(),
|
||||||
@@ -590,8 +506,8 @@ def build_preview_invoice_pdf(event):
|
|||||||
invoice=invoice, description=_("Sample product {}").format(i + 1),
|
invoice=invoice, description=_("Sample product {}").format(i + 1),
|
||||||
gross_value=tax.gross, tax_value=tax.tax,
|
gross_value=tax.gross, tax_value=tax.tax,
|
||||||
tax_rate=tax.rate, tax_name=tax.name, tax_code=tax.code,
|
tax_rate=tax.rate, tax_name=tax.name, tax_code=tax.code,
|
||||||
period_start=period_start,
|
event_date_from=event.date_from,
|
||||||
period_end=period_end,
|
event_date_to=event.date_to,
|
||||||
event_location=event.settings.invoice_event_location,
|
event_location=event.settings.invoice_event_location,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -599,8 +515,8 @@ def build_preview_invoice_pdf(event):
|
|||||||
InvoiceLine.objects.create(
|
InvoiceLine.objects.create(
|
||||||
invoice=invoice, description=_("Sample product A"),
|
invoice=invoice, description=_("Sample product A"),
|
||||||
gross_value=100, tax_value=0, tax_rate=0, tax_code=None,
|
gross_value=100, tax_value=0, tax_rate=0, tax_code=None,
|
||||||
period_start=period_start,
|
event_date_from=event.date_from,
|
||||||
period_end=period_end,
|
event_date_to=event.date_to,
|
||||||
event_location=event.settings.invoice_event_location,
|
event_location=event.settings.invoice_event_location,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -748,7 +664,20 @@ def transmit_invoice(sender, invoice_id, allow_retransmission=True, **kwargs):
|
|||||||
break
|
break
|
||||||
|
|
||||||
if not provider:
|
if not provider:
|
||||||
invoice.set_transmission_failed(provider=None, data={"reason": "no_provider"})
|
invoice.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
|
||||||
|
invoice.transmission_date = now()
|
||||||
|
invoice.save(update_fields=["transmission_status", "transmission_date"])
|
||||||
|
invoice.order.log_action(
|
||||||
|
"pretix.event.order.invoice.sending_failed",
|
||||||
|
data={
|
||||||
|
"full_invoice_no": invoice.full_invoice_no,
|
||||||
|
"transmission_provider": None,
|
||||||
|
"transmission_type": invoice.transmission_type,
|
||||||
|
"data": {
|
||||||
|
"reason": "no_provider",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
if invoice.order.testmode and not provider.testmode_supported:
|
if invoice.order.testmode and not provider.testmode_supported:
|
||||||
@@ -769,7 +698,18 @@ def transmit_invoice(sender, invoice_id, allow_retransmission=True, **kwargs):
|
|||||||
provider.transmit(invoice)
|
provider.transmit(invoice)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(f"Transmission of invoice {invoice.pk} failed with exception.")
|
logger.exception(f"Transmission of invoice {invoice.pk} failed with exception.")
|
||||||
invoice.set_transmission_failed(provider=provider.identifier, data={
|
invoice.transmission_status = Invoice.TRANSMISSION_STATUS_FAILED
|
||||||
"reason": "exception",
|
invoice.transmission_date = now()
|
||||||
"exception": str(e),
|
invoice.save(update_fields=["transmission_status", "transmission_date"])
|
||||||
})
|
invoice.order.log_action(
|
||||||
|
"pretix.event.order.invoice.sending_failed",
|
||||||
|
data={
|
||||||
|
"full_invoice_no": invoice.full_invoice_no,
|
||||||
|
"transmission_provider": None,
|
||||||
|
"transmission_type": invoice.transmission_type,
|
||||||
|
"data": {
|
||||||
|
"reason": "exception",
|
||||||
|
"exception": str(e),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
@@ -405,12 +405,8 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
attach_cid_images(html_message, cid_images, verify_ssl=True)
|
attach_cid_images(html_message, cid_images, verify_ssl=True)
|
||||||
email.attach_alternative(html_message, "multipart/related")
|
email.attach_alternative(html_message, "multipart/related")
|
||||||
|
|
||||||
log_target = None
|
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
user = User.objects.get(pk=user)
|
user = User.objects.get(pk=user)
|
||||||
error_log_action_type = 'pretix.user.email.error'
|
|
||||||
log_target = user
|
|
||||||
|
|
||||||
if event:
|
if event:
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
@@ -430,15 +426,12 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
with cm():
|
with cm():
|
||||||
if customer:
|
if customer:
|
||||||
customer = Customer.objects.get(pk=customer)
|
customer = Customer.objects.get(pk=customer)
|
||||||
if not user:
|
log_target = user or customer
|
||||||
error_log_action_type = 'pretix.customer.email.error'
|
|
||||||
log_target = customer
|
|
||||||
|
|
||||||
if event:
|
if event:
|
||||||
if order:
|
if order:
|
||||||
try:
|
try:
|
||||||
order = event.orders.get(pk=order)
|
order = event.orders.get(pk=order)
|
||||||
error_log_action_type = 'pretix.event.order.email.error'
|
|
||||||
log_target = order
|
log_target = order
|
||||||
except Order.DoesNotExist:
|
except Order.DoesNotExist:
|
||||||
order = None
|
order = None
|
||||||
@@ -495,7 +488,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
|
|
||||||
email = email_filter.send_chained(event, 'message', message=email, order=order, user=user)
|
email = email_filter.send_chained(event, 'message', message=email, order=order, user=user)
|
||||||
|
|
||||||
invoices_to_mark_transmitted = []
|
invoices_sent = []
|
||||||
if invoices:
|
if invoices:
|
||||||
invoices = Invoice.objects.filter(pk__in=invoices)
|
invoices = Invoice.objects.filter(pk__in=invoices)
|
||||||
for inv in invoices:
|
for inv in invoices:
|
||||||
@@ -516,23 +509,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
inv.file.file.read(),
|
inv.file.file.read(),
|
||||||
'application/pdf'
|
'application/pdf'
|
||||||
)
|
)
|
||||||
|
invoices_sent.append(inv)
|
||||||
if inv.transmission_type == "email":
|
|
||||||
# Mark invoice as sent when it was sent to the requested address *either* at the time of
|
|
||||||
# invoice creation *or* as of right now.
|
|
||||||
expected_recipients = [
|
|
||||||
(inv.invoice_to_transmission_info or {}).get("transmission_email_address")
|
|
||||||
or inv.order.email,
|
|
||||||
]
|
|
||||||
try:
|
|
||||||
expected_recipients.append(
|
|
||||||
(inv.order.invoice_address.transmission_info or {}).get("transmission_email_address")
|
|
||||||
or inv.order.email
|
|
||||||
)
|
|
||||||
except InvoiceAddress.DoesNotExist:
|
|
||||||
pass
|
|
||||||
if any(t in expected_recipients for t in to):
|
|
||||||
invoices_to_mark_transmitted.append(inv)
|
|
||||||
except:
|
except:
|
||||||
logger.exception('Could not attach invoice to email')
|
logger.exception('Could not attach invoice to email')
|
||||||
pass
|
pass
|
||||||
@@ -597,7 +574,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
except MaxRetriesExceededError:
|
except MaxRetriesExceededError:
|
||||||
if log_target:
|
if log_target:
|
||||||
log_target.log_action(
|
log_target.log_action(
|
||||||
error_log_action_type,
|
'pretix.email.error',
|
||||||
data={
|
data={
|
||||||
'subject': 'SMTP code {}, max retries exceeded'.format(e.smtp_code),
|
'subject': 'SMTP code {}, max retries exceeded'.format(e.smtp_code),
|
||||||
'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error),
|
'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error),
|
||||||
@@ -605,17 +582,12 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
'invoices': [],
|
'invoices': [],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for i in invoices_to_mark_transmitted:
|
|
||||||
i.set_transmission_failed(provider="email_pdf", data={
|
|
||||||
"reason": "exception",
|
|
||||||
"exception": "SMTP code {}, max retries exceeded".format(e.smtp_code),
|
|
||||||
})
|
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
logger.exception('Error sending email')
|
logger.exception('Error sending email')
|
||||||
if log_target:
|
if log_target:
|
||||||
log_target.log_action(
|
log_target.log_action(
|
||||||
error_log_action_type,
|
'pretix.email.error',
|
||||||
data={
|
data={
|
||||||
'subject': 'SMTP code {}'.format(e.smtp_code),
|
'subject': 'SMTP code {}'.format(e.smtp_code),
|
||||||
'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error),
|
'message': e.smtp_error.decode() if isinstance(e.smtp_error, bytes) else str(e.smtp_error),
|
||||||
@@ -623,11 +595,6 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
'invoices': [],
|
'invoices': [],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for i in invoices_to_mark_transmitted:
|
|
||||||
i.set_transmission_failed(provider="email_pdf", data={
|
|
||||||
"reason": "exception",
|
|
||||||
"exception": "SMTP code {}".format(e.smtp_code),
|
|
||||||
})
|
|
||||||
|
|
||||||
raise SendMailException('Failed to send an email to {}.'.format(to))
|
raise SendMailException('Failed to send an email to {}.'.format(to))
|
||||||
except smtplib.SMTPRecipientsRefused as e:
|
except smtplib.SMTPRecipientsRefused as e:
|
||||||
@@ -651,7 +618,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
message.append(f'{e}: {val[0]} {val[1].decode()}')
|
message.append(f'{e}: {val[0]} {val[1].decode()}')
|
||||||
|
|
||||||
log_target.log_action(
|
log_target.log_action(
|
||||||
error_log_action_type,
|
'pretix.email.error',
|
||||||
data={
|
data={
|
||||||
'subject': 'SMTP error',
|
'subject': 'SMTP error',
|
||||||
'message': '\n'.join(message),
|
'message': '\n'.join(message),
|
||||||
@@ -659,11 +626,6 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
'invoices': [],
|
'invoices': [],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for i in invoices_to_mark_transmitted:
|
|
||||||
i.set_transmission_failed(provider="email_pdf", data={
|
|
||||||
"reason": "exception",
|
|
||||||
"exception": "SMTP error",
|
|
||||||
})
|
|
||||||
|
|
||||||
raise SendMailException('Failed to send an email to {}.'.format(to))
|
raise SendMailException('Failed to send an email to {}.'.format(to))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -673,7 +635,7 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
except MaxRetriesExceededError:
|
except MaxRetriesExceededError:
|
||||||
if log_target:
|
if log_target:
|
||||||
log_target.log_action(
|
log_target.log_action(
|
||||||
error_log_action_type,
|
'pretix.email.error',
|
||||||
data={
|
data={
|
||||||
'subject': 'Internal error',
|
'subject': 'Internal error',
|
||||||
'message': f'Max retries exceeded after error "{str(e)}"',
|
'message': f'Max retries exceeded after error "{str(e)}"',
|
||||||
@@ -681,15 +643,10 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
'invoices': [],
|
'invoices': [],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for i in invoices_to_mark_transmitted:
|
|
||||||
i.set_transmission_failed(provider="email_pdf", data={
|
|
||||||
"reason": "exception",
|
|
||||||
"exception": "Internal error",
|
|
||||||
})
|
|
||||||
raise e
|
raise e
|
||||||
if log_target:
|
if log_target:
|
||||||
log_target.log_action(
|
log_target.log_action(
|
||||||
error_log_action_type,
|
'pretix.email.error',
|
||||||
data={
|
data={
|
||||||
'subject': 'Internal error',
|
'subject': 'Internal error',
|
||||||
'message': str(e),
|
'message': str(e),
|
||||||
@@ -697,52 +654,59 @@ def mail_send_task(self, *args, to: List[str], subject: str, body: str, html: st
|
|||||||
'invoices': [],
|
'invoices': [],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for i in invoices_to_mark_transmitted:
|
|
||||||
i.set_transmission_failed(provider="email_pdf", data={
|
|
||||||
"reason": "exception",
|
|
||||||
"exception": "Internal error",
|
|
||||||
})
|
|
||||||
logger.exception('Error sending email')
|
logger.exception('Error sending email')
|
||||||
raise SendMailException('Failed to send an email to {}.'.format(to))
|
raise SendMailException('Failed to send an email to {}.'.format(to))
|
||||||
else:
|
else:
|
||||||
for i in invoices_to_mark_transmitted:
|
for i in invoices_sent:
|
||||||
if i.transmission_status != Invoice.TRANSMISSION_STATUS_COMPLETED:
|
if i.transmission_type == "email":
|
||||||
i.transmission_date = now()
|
# Mark invoice as sent when it was sent to the requested address *either* at the time of invoice
|
||||||
i.transmission_status = Invoice.TRANSMISSION_STATUS_COMPLETED
|
# creation *or* as of right now.
|
||||||
i.transmission_provider = "email_pdf"
|
expected_recipients = [
|
||||||
i.transmission_info = {
|
(i.invoice_to_transmission_info or {}).get("transmission_email_address") or i.order.email,
|
||||||
"sent": [
|
]
|
||||||
|
try:
|
||||||
|
expected_recipients.append((i.order.invoice_address.transmission_info or {}).get("transmission_email_address") or i.order.email)
|
||||||
|
except InvoiceAddress.DoesNotExist:
|
||||||
|
pass
|
||||||
|
if not any(t in expected_recipients for t in to):
|
||||||
|
continue
|
||||||
|
if i.transmission_status != Invoice.TRANSMISSION_STATUS_COMPLETED:
|
||||||
|
i.transmission_date = now()
|
||||||
|
i.transmission_status = Invoice.TRANSMISSION_STATUS_COMPLETED
|
||||||
|
i.transmission_provider = "email_pdf"
|
||||||
|
i.transmission_info = {
|
||||||
|
"sent": [
|
||||||
|
{
|
||||||
|
"recipients": to,
|
||||||
|
"datetime": now().isoformat(),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
i.save(update_fields=[
|
||||||
|
"transmission_date", "transmission_provider", "transmission_status",
|
||||||
|
"transmission_info"
|
||||||
|
])
|
||||||
|
elif i.transmission_provider == "email_pdf":
|
||||||
|
i.transmission_info["sent"].append(
|
||||||
{
|
{
|
||||||
"recipients": to,
|
"recipients": to,
|
||||||
"datetime": now().isoformat(),
|
"datetime": now().isoformat(),
|
||||||
}
|
}
|
||||||
]
|
)
|
||||||
}
|
i.save(update_fields=[
|
||||||
i.save(update_fields=[
|
"transmission_info"
|
||||||
"transmission_date", "transmission_provider", "transmission_status",
|
])
|
||||||
"transmission_info"
|
i.order.log_action(
|
||||||
])
|
"pretix.event.order.invoice.sent",
|
||||||
elif i.transmission_provider == "email_pdf":
|
data={
|
||||||
i.transmission_info["sent"].append(
|
"full_invoice_no": i.full_invoice_no,
|
||||||
{
|
"transmission_provider": "email_pdf",
|
||||||
"recipients": to,
|
"transmission_type": "email",
|
||||||
"datetime": now().isoformat(),
|
"data": {
|
||||||
|
"recipients": [to],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
i.save(update_fields=[
|
|
||||||
"transmission_info"
|
|
||||||
])
|
|
||||||
i.order.log_action(
|
|
||||||
"pretix.event.order.invoice.sent",
|
|
||||||
data={
|
|
||||||
"full_invoice_no": i.full_invoice_no,
|
|
||||||
"transmission_provider": "email_pdf",
|
|
||||||
"transmission_type": "email",
|
|
||||||
"data": {
|
|
||||||
"recipients": [to],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def mail_send(*args, **kwargs):
|
def mail_send(*args, **kwargs):
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ def import_orders(event: Event, fileid: str, settings: dict, locale: str, user,
|
|||||||
|
|
||||||
for o in orders:
|
for o in orders:
|
||||||
with language(o.locale, event.settings.region):
|
with language(o.locale, event.settings.region):
|
||||||
order_placed.send(event, order=o, bulk=True)
|
order_placed.send(event, order=o)
|
||||||
if o.status == Order.STATUS_PAID:
|
if o.status == Order.STATUS_PAID:
|
||||||
order_paid.send(event, order=o)
|
order_paid.send(event, order=o)
|
||||||
|
|
||||||
|
|||||||
@@ -1091,7 +1091,7 @@ def _create_order(event: Event, *, email: str, positions: List[CartPosition], no
|
|||||||
for msg in meta_info.get('confirm_messages', []):
|
for msg in meta_info.get('confirm_messages', []):
|
||||||
order.log_action('pretix.event.order.consent', data={'msg': msg})
|
order.log_action('pretix.event.order.consent', data={'msg': msg})
|
||||||
|
|
||||||
order_placed.send(event, order=order, bulk=False)
|
order_placed.send(event, order=order)
|
||||||
return order, payments
|
return order, payments
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -197,7 +197,6 @@ def order_overview(
|
|||||||
item.all_variations = list(item.variations.all())
|
item.all_variations = list(item.variations.all())
|
||||||
item.has_variations = (len(item.all_variations) > 0)
|
item.has_variations = (len(item.all_variations) > 0)
|
||||||
item.num = {}
|
item.num = {}
|
||||||
item.subevent = subevent
|
|
||||||
if item.has_variations:
|
if item.has_variations:
|
||||||
for var in item.all_variations:
|
for var in item.all_variations:
|
||||||
variid = var.id
|
variid = var.id
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ def generate_order(order: int, provider: str):
|
|||||||
prov = response(order.event)
|
prov = response(order.event)
|
||||||
if prov.identifier == provider:
|
if prov.identifier == provider:
|
||||||
filename, ttype, data = prov.generate_order(order)
|
filename, ttype, data = prov.generate_order(order)
|
||||||
|
if ttype == 'text/uri-list':
|
||||||
|
continue
|
||||||
|
|
||||||
path, ext = os.path.splitext(filename)
|
path, ext = os.path.splitext(filename)
|
||||||
for ct in CachedCombinedTicket.objects.filter(order=order, provider=provider):
|
for ct in CachedCombinedTicket.objects.filter(order=order, provider=provider):
|
||||||
ct.delete()
|
ct.delete()
|
||||||
@@ -158,10 +161,6 @@ def get_tickets_for_order(order, base_position=None):
|
|||||||
if not retval:
|
if not retval:
|
||||||
continue
|
continue
|
||||||
ct = CachedCombinedTicket.objects.get(pk=retval)
|
ct = CachedCombinedTicket.objects.get(pk=retval)
|
||||||
|
|
||||||
if ct.type == 'text/uri-list':
|
|
||||||
continue
|
|
||||||
|
|
||||||
tickets.append((
|
tickets.append((
|
||||||
"{}-{}-{}{}".format(
|
"{}-{}-{}{}".format(
|
||||||
order.event.slug.upper(), order.code, ct.provider, ct.extension,
|
order.event.slug.upper(), order.code, ct.provider, ct.extension,
|
||||||
|
|||||||
@@ -1098,35 +1098,6 @@ DEFAULTS = {
|
|||||||
help_text=_("Invoices will never be automatically generated for free orders.")
|
help_text=_("Invoices will never be automatically generated for free orders.")
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
'invoice_period': {
|
|
||||||
'default': 'auto',
|
|
||||||
'type': str,
|
|
||||||
'form_class': forms.ChoiceField,
|
|
||||||
'serializer_class': serializers.ChoiceField,
|
|
||||||
'serializer_kwargs': dict(
|
|
||||||
choices=(
|
|
||||||
('auto', _('Automatic based on ticket-specific validity, membership validity, event series date, or event date')),
|
|
||||||
('auto_no_event', _('Automatic, but prefer invoice date over event date')),
|
|
||||||
('event_date', _('Event date')),
|
|
||||||
('order_date', _('Order date')),
|
|
||||||
('invoice_date', _('Invoice date')),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'form_kwargs': dict(
|
|
||||||
label=_("Date of service"),
|
|
||||||
widget=forms.RadioSelect,
|
|
||||||
choices=(
|
|
||||||
('auto', _('Automatic based on ticket-specific validity, membership validity, event series date, or event date')),
|
|
||||||
('auto_no_event', _('Automatic, but prefer invoice date over event date')),
|
|
||||||
('event_date', _('Event date')),
|
|
||||||
('order_date', _('Order date')),
|
|
||||||
('invoice_date', _('Invoice date')),
|
|
||||||
),
|
|
||||||
help_text=_("This controls what dates are shown on the invoice, but is especially important for "
|
|
||||||
"electronic invoicing."),
|
|
||||||
required=True,
|
|
||||||
)
|
|
||||||
},
|
|
||||||
'invoice_reissue_after_modify': {
|
'invoice_reissue_after_modify': {
|
||||||
'default': 'False',
|
'default': 'False',
|
||||||
'type': bool,
|
'type': bool,
|
||||||
|
|||||||
+12
-25
@@ -99,24 +99,24 @@ def is_app_active(sender, app, allow_legacy_plugins=False):
|
|||||||
elif isinstance(sender, Organizer) and allow_legacy_plugins:
|
elif isinstance(sender, Organizer) and allow_legacy_plugins:
|
||||||
# Deprecated behaviour: Event plugins that are registered on organizer level are considered active for
|
# Deprecated behaviour: Event plugins that are registered on organizer level are considered active for
|
||||||
# all organizers in the context of signals that used to be global signals before the introduction of
|
# all organizers in the context of signals that used to be global signals before the introduction of
|
||||||
# organizer plugins. A deprecation warning is emitted at .connect() time.
|
# organizer-level plugin. A deprecation warning is emitted at .connect() time.
|
||||||
enabled = True
|
enabled = True
|
||||||
else:
|
else:
|
||||||
raise ImproperlyConfigured(f"Cannot check if event plugin is active on {type(sender)}")
|
raise ImproperlyConfigured(f"Cannot check if event-level plugin is active on {type(sender)}")
|
||||||
elif level == PLUGIN_LEVEL_ORGANIZER:
|
elif level == PLUGIN_LEVEL_ORGANIZER:
|
||||||
if isinstance(sender, Organizer):
|
if isinstance(sender, Organizer):
|
||||||
enabled = app.name in sender.get_plugins()
|
enabled = app.name in sender.get_plugins()
|
||||||
elif isinstance(sender, Event):
|
elif isinstance(sender, Event):
|
||||||
enabled = app.name in sender.organizer.get_plugins()
|
enabled = app.name in sender.organizer.get_plugins()
|
||||||
else:
|
else:
|
||||||
raise ImproperlyConfigured(f"Cannot check if organizer plugin is active on {type(sender)}")
|
raise ImproperlyConfigured(f"Cannot check if organizer-level plugin is active on {type(sender)}")
|
||||||
elif level == PLUGIN_LEVEL_EVENT_ORGANIZER_HYBRID:
|
elif level == PLUGIN_LEVEL_EVENT_ORGANIZER_HYBRID:
|
||||||
if isinstance(sender, Organizer):
|
if isinstance(sender, Organizer):
|
||||||
enabled = app.name in sender.get_plugins()
|
enabled = app.name in sender.get_plugins()
|
||||||
elif isinstance(sender, Event):
|
elif isinstance(sender, Event):
|
||||||
enabled = app.name in sender.get_plugins() and app.name in sender.organizer.get_plugins()
|
enabled = app.name in sender.get_plugins() and app.name in sender.organizer.get_plugins()
|
||||||
else:
|
else:
|
||||||
raise ImproperlyConfigured(f"Cannot check if hybrid event/organizer plugin is active on {type(sender)}")
|
raise ImproperlyConfigured(f"Cannot check if hybrid event/organizer-level plugin is active on {type(sender)}")
|
||||||
else:
|
else:
|
||||||
raise ImproperlyConfigured("Unknown plugin level")
|
raise ImproperlyConfigured("Unknown plugin level")
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal):
|
|||||||
class EventPluginSignal(PluginSignal[Event]):
|
class EventPluginSignal(PluginSignal[Event]):
|
||||||
"""
|
"""
|
||||||
This is an extension to Django's built-in signals which differs in a way that it sends
|
This is an extension to Django's built-in signals which differs in a way that it sends
|
||||||
out its events only to receivers which belong to plugins that are enabled for the given
|
out it's events only to receivers which belong to plugins that are enabled for the given
|
||||||
Event.
|
Event.
|
||||||
"""
|
"""
|
||||||
type = Event
|
type = Event
|
||||||
@@ -254,7 +254,7 @@ class EventPluginSignal(PluginSignal[Event]):
|
|||||||
class OrganizerPluginSignal(PluginSignal[Organizer]):
|
class OrganizerPluginSignal(PluginSignal[Organizer]):
|
||||||
"""
|
"""
|
||||||
This is an extension to Django's built-in signals which differs in a way that it sends
|
This is an extension to Django's built-in signals which differs in a way that it sends
|
||||||
out its events only to receivers which belong to plugins that are enabled for the given
|
out it's events only to receivers which belong to plugins that are enabled for the given
|
||||||
Organizer.
|
Organizer.
|
||||||
"""
|
"""
|
||||||
type = Organizer
|
type = Organizer
|
||||||
@@ -596,18 +596,6 @@ multiple events. Receivers should return a subclass of pretix.base.exporter.Base
|
|||||||
The ``sender`` keyword argument will contain an organizer.
|
The ``sender`` keyword argument will contain an organizer.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
build_invoice_data = EventPluginSignal()
|
|
||||||
"""
|
|
||||||
Arguments: ``invoice``
|
|
||||||
|
|
||||||
This signal is sent out every time an invoice is built, after the invoice model was created
|
|
||||||
and filled and before the PDF generation task is started. You can use this to make changes
|
|
||||||
to the invoice, but we recommend to mostly use it to add content to ``Invoice.plugin_data``.
|
|
||||||
You are responsible for saving any changes to the database.
|
|
||||||
|
|
||||||
As with all event-plugin signals, the ``sender`` keyword argument will contain the event.
|
|
||||||
"""
|
|
||||||
|
|
||||||
validate_order = EventPluginSignal()
|
validate_order = EventPluginSignal()
|
||||||
"""
|
"""
|
||||||
Arguments: ``payments``, ``positions``, ``email``, ``locale``, ``invoice_address``,
|
Arguments: ``payments``, ``positions``, ``email``, ``locale``, ``invoice_address``,
|
||||||
@@ -665,13 +653,12 @@ As with all event-plugin signals, the ``sender`` keyword argument will contain t
|
|||||||
|
|
||||||
order_placed = EventPluginSignal()
|
order_placed = EventPluginSignal()
|
||||||
"""
|
"""
|
||||||
Arguments: ``order``, ``bulk``
|
Arguments: ``order``
|
||||||
|
|
||||||
This signal is sent out every time an order is placed. The order object is given
|
This signal is sent out every time an order is placed. The order object is given
|
||||||
as the first argument. The ``bulk`` argument specifies whether the order was placed
|
as the first argument. This signal is *not* sent out if an order is created through
|
||||||
as part of a bulk action, e.g. an import from a file.
|
splitting an existing order, so you can not expect to see all orders by listening
|
||||||
This signal is *not* sent out if an order is created through splitting an existing order,
|
to this signal.
|
||||||
so you can not expect to see all orders by listening to this signal.
|
|
||||||
|
|
||||||
As with all event-plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all event-plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
@@ -911,7 +898,7 @@ This signals allows you to add fees to an order while it is being created. You a
|
|||||||
return a list of ``OrderFee`` objects that are not yet saved to the database
|
return a list of ``OrderFee`` objects that are not yet saved to the database
|
||||||
(because there is no order yet).
|
(because there is no order yet).
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event. A ``positions``
|
As with all plugin signals, the ``sender`` keyword argument will contain the event. A ``positions``
|
||||||
argument will contain the cart positions and ``invoice_address`` the invoice address (useful for
|
argument will contain the cart positions and ``invoice_address`` the invoice address (useful for
|
||||||
tax calculation). The argument ``meta_info`` contains the order's meta dictionary. The ``total``
|
tax calculation). The argument ``meta_info`` contains the order's meta dictionary. The ``total``
|
||||||
keyword argument will contain the total cart sum without any fees. You should not rely on this
|
keyword argument will contain the total cart sum without any fees. You should not rely on this
|
||||||
@@ -929,7 +916,7 @@ This signals allows you to return a human-readable description for a fee type ba
|
|||||||
and ``internal_type`` attributes of the ``OrderFee`` model that you get as keyword arguments. You are
|
and ``internal_type`` attributes of the ``OrderFee`` model that you get as keyword arguments. You are
|
||||||
expected to return a string or None, if you don't know about this fee.
|
expected to return a string or None, if you don't know about this fee.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
allow_ticket_download = EventPluginSignal()
|
allow_ticket_download = EventPluginSignal()
|
||||||
|
|||||||
@@ -857,7 +857,6 @@ class InvoiceSettingsForm(EventSettingsValidationMixin, SettingsForm):
|
|||||||
'invoice_show_payments',
|
'invoice_show_payments',
|
||||||
'invoice_reissue_after_modify',
|
'invoice_reissue_after_modify',
|
||||||
'invoice_generate',
|
'invoice_generate',
|
||||||
'invoice_period',
|
|
||||||
'invoice_attendee_name',
|
'invoice_attendee_name',
|
||||||
'invoice_event_location',
|
'invoice_event_location',
|
||||||
'invoice_include_expire_date',
|
'invoice_include_expire_date',
|
||||||
|
|||||||
@@ -107,16 +107,11 @@ def get_all_payment_providers():
|
|||||||
return Event
|
return Event
|
||||||
|
|
||||||
with rolledback_transaction():
|
with rolledback_transaction():
|
||||||
plugins = ",".join([app.name for app in apps.get_app_configs()])
|
|
||||||
organizer = Organizer.objects.create(
|
|
||||||
name="INTERNAL",
|
|
||||||
plugins=plugins,
|
|
||||||
)
|
|
||||||
event = Event.objects.create(
|
event = Event.objects.create(
|
||||||
plugins=plugins,
|
plugins=",".join([app.name for app in apps.get_app_configs()]),
|
||||||
name="INTERNAL",
|
name="INTERNAL",
|
||||||
date_from=now(),
|
date_from=now(),
|
||||||
organizer=organizer,
|
organizer=Organizer.objects.create(name="INTERNAL")
|
||||||
)
|
)
|
||||||
event = FakeEvent(event)
|
event = FakeEvent(event)
|
||||||
provs = register_payment_providers.send(
|
provs = register_payment_providers.send(
|
||||||
@@ -225,7 +220,6 @@ class OrderFilterForm(FilterForm):
|
|||||||
(_('Cancellations'), (
|
(_('Cancellations'), (
|
||||||
(Order.STATUS_CANCELED, _('Canceled (fully)')),
|
(Order.STATUS_CANCELED, _('Canceled (fully)')),
|
||||||
('cp', _('Canceled (fully or with paid fee)')),
|
('cp', _('Canceled (fully or with paid fee)')),
|
||||||
('cany', _('Canceled (at least one position)')),
|
|
||||||
('rc', _('Cancellation requested')),
|
('rc', _('Cancellation requested')),
|
||||||
('cni', _('Fully canceled but invoice not canceled')),
|
('cni', _('Fully canceled but invoice not canceled')),
|
||||||
)),
|
)),
|
||||||
@@ -402,16 +396,6 @@ class OrderFilterForm(FilterForm):
|
|||||||
).filter(
|
).filter(
|
||||||
Q(status=Order.STATUS_PAID, has_pc=False) | Q(status=Order.STATUS_CANCELED)
|
Q(status=Order.STATUS_PAID, has_pc=False) | Q(status=Order.STATUS_CANCELED)
|
||||||
)
|
)
|
||||||
elif s == 'cany':
|
|
||||||
s = OrderPosition.all.filter(
|
|
||||||
order=OuterRef('pk'),
|
|
||||||
canceled=True,
|
|
||||||
)
|
|
||||||
qs = qs.annotate(
|
|
||||||
has_pc_c=Exists(s)
|
|
||||||
).filter(
|
|
||||||
Q(has_pc_c=True) | Q(status=Order.STATUS_CANCELED)
|
|
||||||
)
|
|
||||||
|
|
||||||
if fdata.get('ordering'):
|
if fdata.get('ordering'):
|
||||||
qs = qs.order_by(*get_deterministic_ordering(Order, self.get_order_by()))
|
qs = qs.order_by(*get_deterministic_ordering(Order, self.get_order_by()))
|
||||||
@@ -490,31 +474,16 @@ class EventOrderFilterForm(OrderFilterForm):
|
|||||||
fdata = self.cleaned_data
|
fdata = self.cleaned_data
|
||||||
qs = super().filter_qs(qs)
|
qs = super().filter_qs(qs)
|
||||||
|
|
||||||
# This is a little magic, but there's no option that does not confuse people and let's hope this confuses less
|
|
||||||
# people.
|
|
||||||
only_match_noncanceled_products = fdata.get('status') in (
|
|
||||||
Order.STATUS_PAID,
|
|
||||||
Order.STATUS_PAID + 'v',
|
|
||||||
Order.STATUS_PENDING,
|
|
||||||
Order.STATUS_PENDING + Order.STATUS_PAID,
|
|
||||||
)
|
|
||||||
if only_match_noncanceled_products:
|
|
||||||
canceled_filter = Q(all_positions__canceled=False)
|
|
||||||
elif fdata.get('status') in ('cp', 'cany'):
|
|
||||||
canceled_filter = Q(all_positions__canceled=True) | Q(status=Order.STATUS_CANCELED)
|
|
||||||
else:
|
|
||||||
canceled_filter = Q()
|
|
||||||
|
|
||||||
item = fdata.get('item')
|
item = fdata.get('item')
|
||||||
if item:
|
if item:
|
||||||
if '-' in item:
|
if '-' in item:
|
||||||
var = item.split('-')[1]
|
var = item.split('-')[1]
|
||||||
qs = qs.filter(canceled_filter, all_positions__variation_id=var).distinct()
|
qs = qs.filter(all_positions__variation_id=var, all_positions__canceled=False).distinct()
|
||||||
else:
|
else:
|
||||||
qs = qs.filter(canceled_filter, all_positions__item_id=fdata.get('item')).distinct()
|
qs = qs.filter(all_positions__item_id=fdata.get('item'), all_positions__canceled=False).distinct()
|
||||||
|
|
||||||
if fdata.get('subevent'):
|
if fdata.get('subevent'):
|
||||||
qs = qs.filter(canceled_filter, all_positions__subevent=fdata.get('subevent')).distinct()
|
qs = qs.filter(all_positions__subevent=fdata.get('subevent'), all_positions__canceled=False).distinct()
|
||||||
|
|
||||||
if fdata.get('question') and fdata.get('answer') is not None:
|
if fdata.get('question') and fdata.get('answer') is not None:
|
||||||
q = fdata.get('question')
|
q = fdata.get('question')
|
||||||
|
|||||||
@@ -67,8 +67,7 @@ class RRuleForm(forms.Form):
|
|||||||
)
|
)
|
||||||
count = forms.IntegerField(
|
count = forms.IntegerField(
|
||||||
label=_('Number of repetitions'),
|
label=_('Number of repetitions'),
|
||||||
initial=10,
|
initial=10
|
||||||
min_value=1,
|
|
||||||
)
|
)
|
||||||
until = forms.DateField(
|
until = forms.DateField(
|
||||||
widget=forms.DateInput(
|
widget=forms.DateInput(
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ class VoucherForm(I18nModelForm):
|
|||||||
try:
|
try:
|
||||||
Voucher.clean_max_usages(data, self.instance.redeemed)
|
Voucher.clean_max_usages(data, self.instance.redeemed)
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
raise ValidationError({"max_usages": e})
|
raise ValidationError({"max_usages": e.message})
|
||||||
check_quota = Voucher.clean_quota_needs_checking(
|
check_quota = Voucher.clean_quota_needs_checking(
|
||||||
data, self.initial_instance_data,
|
data, self.initial_instance_data,
|
||||||
item_changed=data.get('itemvar') != self.initial.get('itemvar'),
|
item_changed=data.get('itemvar') != self.initial.get('itemvar'),
|
||||||
|
|||||||
@@ -581,7 +581,7 @@ class CoreOrderLogEntryType(OrderLogEntryType):
|
|||||||
'The voucher has been set to expire because the recipient removed themselves from the waiting list.'),
|
'The voucher has been set to expire because the recipient removed themselves from the waiting list.'),
|
||||||
'pretix.voucher.changed': _('The voucher has been changed.'),
|
'pretix.voucher.changed': _('The voucher has been changed.'),
|
||||||
'pretix.voucher.deleted': _('The voucher has been deleted.'),
|
'pretix.voucher.deleted': _('The voucher has been deleted.'),
|
||||||
'pretix.voucher.added.waitinglist': _('The voucher has been assigned to {email} through the waiting list.'),
|
'pretix.voucher.added.waitinglist': _('The voucher has been sent to {email} through the waiting list.'),
|
||||||
})
|
})
|
||||||
class CoreVoucherLogEntryType(VoucherLogEntryType):
|
class CoreVoucherLogEntryType(VoucherLogEntryType):
|
||||||
pass
|
pass
|
||||||
@@ -719,7 +719,6 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
|
|||||||
'pretix.customer.anonymized': _('The account has been disabled and anonymized.'),
|
'pretix.customer.anonymized': _('The account has been disabled and anonymized.'),
|
||||||
'pretix.customer.password.resetrequested': _('A new password has been requested.'),
|
'pretix.customer.password.resetrequested': _('A new password has been requested.'),
|
||||||
'pretix.customer.password.set': _('A new password has been set.'),
|
'pretix.customer.password.set': _('A new password has been set.'),
|
||||||
'pretix.customer.email.error': _('Sending of an email has failed.'),
|
|
||||||
'pretix.reusable_medium.created': _('The reusable medium has been created.'),
|
'pretix.reusable_medium.created': _('The reusable medium has been created.'),
|
||||||
'pretix.reusable_medium.created.auto': _('The reusable medium has been created automatically.'),
|
'pretix.reusable_medium.created.auto': _('The reusable medium has been created automatically.'),
|
||||||
'pretix.reusable_medium.changed': _('The reusable medium has been changed.'),
|
'pretix.reusable_medium.changed': _('The reusable medium has been changed.'),
|
||||||
@@ -753,7 +752,6 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
|
|||||||
'pretix.user.anonymized': _('This user has been anonymized.'),
|
'pretix.user.anonymized': _('This user has been anonymized.'),
|
||||||
'pretix.user.oauth.authorized': _('The application "{application_name}" has been authorized to access your '
|
'pretix.user.oauth.authorized': _('The application "{application_name}" has been authorized to access your '
|
||||||
'account.'),
|
'account.'),
|
||||||
'pretix.user.email.error': _('Sending of an email has failed.'),
|
|
||||||
'pretix.control.auth.user.forgot_password.mail_sent': _('Password reset mail sent.'),
|
'pretix.control.auth.user.forgot_password.mail_sent': _('Password reset mail sent.'),
|
||||||
'pretix.control.auth.user.forgot_password.recovered': _('The password has been reset.'),
|
'pretix.control.auth.user.forgot_password.recovered': _('The password has been reset.'),
|
||||||
'pretix.control.auth.user.forgot_password.denied.repeated': _('A repeated password reset has been denied, as '
|
'pretix.control.auth.user.forgot_password.denied.repeated': _('A repeated password reset has been denied, as '
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ This signal allows you to put code inside the HTML ``<head>`` tag
|
|||||||
of every page in the backend. You will get the request as the keyword argument
|
of every page in the backend. You will get the request as the keyword argument
|
||||||
``request`` and are expected to return plain HTML.
|
``request`` and are expected to return plain HTML.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
nav_event = EventPluginSignal()
|
nav_event = EventPluginSignal()
|
||||||
@@ -77,7 +77,7 @@ The latter method also allows you to register navigation items as a sub-item of
|
|||||||
If you use this, you should read the documentation on :ref:`how to deal with URLs <urlconf>`
|
If you use this, you should read the documentation on :ref:`how to deal with URLs <urlconf>`
|
||||||
in pretix.
|
in pretix.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
nav_topbar = GlobalSignal()
|
nav_topbar = GlobalSignal()
|
||||||
@@ -131,7 +131,7 @@ Arguments: 'request'
|
|||||||
This signal is sent out to include custom HTML in the top part of the the event dashboard.
|
This signal is sent out to include custom HTML in the top part of the the event dashboard.
|
||||||
Receivers should return HTML.
|
Receivers should return HTML.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
An additional keyword argument ``subevent`` *can* contain a sub-event.
|
An additional keyword argument ``subevent`` *can* contain a sub-event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ should return a list of dictionaries, where each dictionary can have the keys:
|
|||||||
* priority (int, used for ordering, higher comes first, default is 1)
|
* priority (int, used for ordering, higher comes first, default is 1)
|
||||||
* url (str, optional, if the full widget should be a link)
|
* url (str, optional, if the full widget should be a link)
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
An additional keyword argument ``subevent`` *can* contain a sub-event.
|
An additional keyword argument ``subevent`` *can* contain a sub-event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ Arguments: 'form'
|
|||||||
This signal allows you to add additional HTML to the form that is used for modifying vouchers.
|
This signal allows you to add additional HTML to the form that is used for modifying vouchers.
|
||||||
You receive the form object in the ``form`` keyword argument.
|
You receive the form object in the ``form`` keyword argument.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
voucher_form_class = EventPluginSignal()
|
voucher_form_class = EventPluginSignal()
|
||||||
@@ -189,7 +189,7 @@ an asynchronous context. For the bulk creation form, ``save()`` is not called. I
|
|||||||
you can implement ``post_bulk_save(saved_vouchers)`` which may be called multiple times
|
you can implement ``post_bulk_save(saved_vouchers)`` which may be called multiple times
|
||||||
for every batch persisted to the database.
|
for every batch persisted to the database.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
voucher_form_validation = EventPluginSignal()
|
voucher_form_validation = EventPluginSignal()
|
||||||
@@ -200,7 +200,7 @@ This signal allows you to add additional validation to the form that is used for
|
|||||||
creating and modifying vouchers. You will receive the form instance in the ``form``
|
creating and modifying vouchers. You will receive the form instance in the ``form``
|
||||||
argument and the current data state in the ``data`` argument.
|
argument and the current data state in the ``data`` argument.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
quota_detail_html = EventPluginSignal()
|
quota_detail_html = EventPluginSignal()
|
||||||
@@ -210,7 +210,7 @@ Arguments: 'quota'
|
|||||||
This signal allows you to append HTML to a Quota's detail view. You receive the
|
This signal allows you to append HTML to a Quota's detail view. You receive the
|
||||||
quota as argument in the ``quota`` keyword argument.
|
quota as argument in the ``quota`` keyword argument.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
organizer_edit_tabs = DeprecatedSignal()
|
organizer_edit_tabs = DeprecatedSignal()
|
||||||
@@ -241,14 +241,8 @@ If your linked view should stay in the tab-like context of this page, we recomme
|
|||||||
that you use ``pretix.control.views.organizer.OrganizerDetailViewMixin`` for your view
|
that you use ``pretix.control.views.organizer.OrganizerDetailViewMixin`` for your view
|
||||||
and your template inherits from ``pretixcontrol/organizers/base.html``.
|
and your template inherits from ``pretixcontrol/organizers/base.html``.
|
||||||
|
|
||||||
This is an organizer plugin signal (not an event-level signal). Organizer and
|
This is a regular django signal (no pretix event signal). Receivers will be passed
|
||||||
hybrid plugins, will receive it if they're active for the current organizer.
|
the keyword arguments ``organizer`` and ``request``.
|
||||||
|
|
||||||
**Deprecation Notice:** Currently, event plugins can always receive this signal,
|
|
||||||
regardless of activation. In the future, event plugins will not be allowed to register
|
|
||||||
to organizer-level signals.
|
|
||||||
|
|
||||||
Receivers will be passed the keyword arguments ``organizer`` and ``request``.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
order_info = EventPluginSignal()
|
order_info = EventPluginSignal()
|
||||||
@@ -257,7 +251,7 @@ Arguments: ``order``, ``request``
|
|||||||
|
|
||||||
This signal is sent out to display additional information on the order detail page
|
This signal is sent out to display additional information on the order detail page
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
Additionally, the argument ``order`` and ``request`` are available.
|
Additionally, the argument ``order`` and ``request`` are available.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -267,7 +261,7 @@ Arguments: ``order``, ``position``, ``request``
|
|||||||
|
|
||||||
This signal is sent out to display additional buttons for a single position of an order.
|
This signal is sent out to display additional buttons for a single position of an order.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
Additionally, the argument ``order`` and ``request`` are available.
|
Additionally, the argument ``order`` and ``request`` are available.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -285,7 +279,7 @@ If your linked view should stay in the tab-like context of this page, we recomme
|
|||||||
that you use ``pretix.control.views.event.EventSettingsViewMixin`` for your view
|
that you use ``pretix.control.views.event.EventSettingsViewMixin`` for your view
|
||||||
and your template inherits from ``pretixcontrol/event/settings_base.html``.
|
and your template inherits from ``pretixcontrol/event/settings_base.html``.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
A second keyword argument ``request`` will contain the request object.
|
A second keyword argument ``request`` will contain the request object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -296,7 +290,7 @@ Arguments: 'request'
|
|||||||
This signal is sent out to include template snippets on the settings page of an event
|
This signal is sent out to include template snippets on the settings page of an event
|
||||||
that allows generating a pretix Widget code.
|
that allows generating a pretix Widget code.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
A second keyword argument ``request`` will contain the request object.
|
A second keyword argument ``request`` will contain the request object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -310,15 +304,11 @@ an instance of a form class that you bind yourself when appropriate. Your form w
|
|||||||
as part of the standard validation and rendering cycle and rendered using default bootstrap
|
as part of the standard validation and rendering cycle and rendered using default bootstrap
|
||||||
styles. It is advisable to set a prefix for your form to avoid clashes with other plugins.
|
styles. It is advisable to set a prefix for your form to avoid clashes with other plugins.
|
||||||
|
|
||||||
Your forms may also have special properties:
|
Your forms may also have two special properties: ``template`` with a template that will be
|
||||||
|
included to render the form, and ``title``, which will be used as a headline. Your template
|
||||||
|
will be passed a ``form`` variable with your form.
|
||||||
|
|
||||||
- ``template`` with a template that will be included to render the form. Your template will be passed a ``form``
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
variable with your form.
|
|
||||||
- ``title``, which will be used as a headline.
|
|
||||||
- ``ìs_layouts = True``, if your form should be grouped with the ticket layout settings (mutually exclusive with setting ``title``).
|
|
||||||
- ``group_with_formset = True``, if your form should be grouped with a formset of the same ``title``
|
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
item_formsets = EventPluginSignal()
|
item_formsets = EventPluginSignal()
|
||||||
@@ -336,7 +326,7 @@ Your formset needs to have two special properties: ``template`` with a template
|
|||||||
included to render the formset and ``title`` that will be used as a headline. Your template
|
included to render the formset and ``title`` that will be used as a headline. Your template
|
||||||
will be passed a ``formset`` variable with your formset.
|
will be passed a ``formset`` variable with your formset.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
subevent_forms = EventPluginSignal()
|
subevent_forms = EventPluginSignal()
|
||||||
@@ -357,7 +347,7 @@ Your forms may also have two special properties: ``template`` with a template th
|
|||||||
included to render the form, and ``title``, which will be used as a headline. Your template
|
included to render the form, and ``title``, which will be used as a headline. Your template
|
||||||
will be passed a ``form`` variable with your form.
|
will be passed a ``form`` variable with your form.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
oauth_application_registered = GlobalSignal()
|
oauth_application_registered = GlobalSignal()
|
||||||
@@ -391,5 +381,5 @@ You are required to set ``prefix`` on your form instance. You are required to im
|
|||||||
method on your form that returns a new, filtered query set. You are required to implement a ``filter_to_strings()``
|
method on your form that returns a new, filtered query set. You are required to implement a ``filter_to_strings()``
|
||||||
method on your form that returns a list of strings describing the currently active filters.
|
method on your form that returns a list of strings describing the currently active filters.
|
||||||
|
|
||||||
As with all event plugin signals, the ``sender`` keyword argument will contain the event.
|
As with all plugin signals, the ``sender`` keyword argument will contain the event.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -15,19 +15,6 @@
|
|||||||
{% bootstrap_field form.invoice_email_attachment layout="control" %}
|
{% bootstrap_field form.invoice_email_attachment layout="control" %}
|
||||||
{% bootstrap_field form.invoice_email_organizer layout="control" %}
|
{% bootstrap_field form.invoice_email_organizer layout="control" %}
|
||||||
{% bootstrap_field form.invoice_language layout="control" %}
|
{% bootstrap_field form.invoice_language layout="control" %}
|
||||||
{% bootstrap_field form.invoice_period layout="control" %}
|
|
||||||
|
|
||||||
{% if not request.event.settings.show_dates_on_frontpage %}
|
|
||||||
<div data-display-dependency="input[name=invoice_period][value=auto],input[name=invoice_period][value=event_date]">
|
|
||||||
<div class="alert alert-warning dynamic">
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
You configured that your shop is not an event and the event date should not be shown.
|
|
||||||
Therefore, we recommend that you set the date of service to a different option.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% bootstrap_field form.invoice_include_free layout="control" %}
|
{% bootstrap_field form.invoice_include_free layout="control" %}
|
||||||
{% bootstrap_field form.invoice_show_payments layout="control" %}
|
{% bootstrap_field form.invoice_show_payments layout="control" %}
|
||||||
{% bootstrap_field form.invoice_reissue_after_modify layout="control" %}
|
{% bootstrap_field form.invoice_reissue_after_modify layout="control" %}
|
||||||
|
|||||||
@@ -177,18 +177,6 @@
|
|||||||
{% for v in formsets.values %}
|
{% for v in formsets.values %}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ v.title }}</legend>
|
<legend>{{ v.title }}</legend>
|
||||||
|
|
||||||
{% for f in plugin_forms %}
|
|
||||||
{% if f.group_with_formset and f.title == v.title %}
|
|
||||||
{% if f.template and not "template" in f.fields %}
|
|
||||||
{% include f.template with form=f %}
|
|
||||||
{% else %}
|
|
||||||
{% bootstrap_form f layout="control" %}
|
|
||||||
{% endif %}
|
|
||||||
<hr />
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% include v.template with formset=v %}
|
{% include v.template with formset=v %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -288,7 +276,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% for f in plugin_forms %}
|
{% for f in plugin_forms %}
|
||||||
{% if not f.is_layouts and not f.group_with_formset and f.title %}
|
{% if not f.is_layouts and f.title %}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ f.title }}</legend>
|
<legend>{{ f.title }}</legend>
|
||||||
{% if f.template and not "template" in f.fields %}
|
{% if f.template and not "template" in f.fields %}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans "Product" %}</th>
|
<th>{% trans "Product" %}</th>
|
||||||
<th>{% trans "Canceled" %}</th>
|
<th>{% trans "Canceled" %}¹</th>
|
||||||
<th>{% trans "Expired" %}</th>
|
<th>{% trans "Expired" %}</th>
|
||||||
<th>{% trans "Approval pending" %}</th>
|
<th>{% trans "Approval pending" %}</th>
|
||||||
<th colspan="3" class="text-center">{% trans "Purchased" %}</th>
|
<th colspan="3" class="text-center">{% trans "Purchased" %}</th>
|
||||||
@@ -106,27 +106,27 @@
|
|||||||
<tr class="item {% if tup.0 %}categorized{% endif %}">
|
<tr class="item {% if tup.0 %}categorized{% endif %}">
|
||||||
<td>{{ item }}</td>
|
<td>{{ item }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}&status=cany&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}&status=c&provider={{ item.provider }}">
|
||||||
{{ item.num.canceled|togglesum:request.event.currency }}
|
{{ item.num.canceled|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}&status=e&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}&status=e&provider={{ item.provider }}">
|
||||||
{{ item.num.expired|togglesum:request.event.currency }}
|
{{ item.num.expired|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}&status=pa&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}&status=pa&provider={{ item.provider }}">
|
||||||
{{ item.num.unapproved|togglesum:request.event.currency }}
|
{{ item.num.unapproved|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}&status=na&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}&status=na&provider={{ item.provider }}">
|
||||||
{{ item.num.pending|togglesum:request.event.currency }}
|
{{ item.num.pending|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}&status=p&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}&status=p&provider={{ item.provider }}">
|
||||||
{{ item.num.paid|togglesum:request.event.currency }}
|
{{ item.num.paid|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
@@ -139,27 +139,27 @@
|
|||||||
<tr class="variation {% if tup.0 %}categorized{% endif %}">
|
<tr class="variation {% if tup.0 %}categorized{% endif %}">
|
||||||
<td>{{ var }}</td>
|
<td>{{ var }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=cany&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=c&provider={{ item.provider }}">
|
||||||
{{ var.num.canceled|togglesum:request.event.currency }}
|
{{ var.num.canceled|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=e&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=e&provider={{ item.provider }}">
|
||||||
{{ var.num.expired|togglesum:request.event.currency }}
|
{{ var.num.expired|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=pa&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=pa&provider={{ item.provider }}">
|
||||||
{{ var.num.unapproved|togglesum:request.event.currency }}
|
{{ var.num.unapproved|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=na&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=na&provider={{ item.provider }}">
|
||||||
{{ var.num.pending|togglesum:request.event.currency }}
|
{{ var.num.pending|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=p&provider={{ item.provider }}{% if subevent %}&subevent={{ subevent.pk }}{% endif %}">
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=p&provider={{ item.provider }}">
|
||||||
{{ var.num.paid|togglesum:request.event.currency }}
|
{{ var.num.paid|togglesum:request.event.currency }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
@@ -185,4 +185,7 @@
|
|||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<p class="help-block">
|
||||||
|
¹ {% trans "If you click links in this column, you will only find orders that are canceled completely, while the numbers also include single canceled positions within valid orders." %}
|
||||||
|
</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -69,36 +69,34 @@
|
|||||||
{% if show_meta %}
|
{% if show_meta %}
|
||||||
<span class="text-muted text-sm">{{ plugin.version }}</span>
|
<span class="text-muted text-sm">{{ plugin.version }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if is_active or plugin.level == "event" %}
|
{% if is_active and level == "organizer" %}
|
||||||
{% if plugin.level == "organizer" %}
|
<span class="label label-success" data-is-active>
|
||||||
<span class="label label-success" data-is-active>
|
<span class="fa fa-check" aria-hidden="true"></span>
|
||||||
<span class="fa fa-check" aria-hidden="true"></span>
|
{% trans "Active" %}
|
||||||
{% trans "Active" %}
|
</span>
|
||||||
</span>
|
{% elif events_counter == events_total %}
|
||||||
{% elif events_total and events_counter == events_total %}
|
<span class="label label-success" data-is-active>
|
||||||
<span class="label label-success" data-is-active>
|
<span class="fa fa-check" aria-hidden="true"></span>
|
||||||
<span class="fa fa-check" aria-hidden="true"></span>
|
{% trans "Active (all events)" %}
|
||||||
{% trans "Active (all events)" %}
|
</span>
|
||||||
</span>
|
{% elif events_counter %}
|
||||||
{% elif events_counter %}
|
<span class="label label-info" data-is-active>
|
||||||
<span class="label label-info" data-is-active>
|
<span class="fa fa-check" aria-hidden="true"></span>
|
||||||
<span class="fa fa-check" aria-hidden="true"></span>
|
{% blocktrans trimmed count count=events_counter %}
|
||||||
{% blocktrans trimmed count count=events_counter %}
|
Active ({{ count }} event)
|
||||||
Active ({{ count }} event)
|
{% plural %}
|
||||||
{% plural %}
|
Active ({{ count }} events)
|
||||||
Active ({{ count }} events)
|
{% endblocktrans %}
|
||||||
{% endblocktrans %}
|
</span>
|
||||||
</span>
|
{% elif level == "event_organizer" %}
|
||||||
{% elif level == "event_organizer" %}
|
<span class="label label-info" data-is-active>
|
||||||
<span class="label label-info" data-is-active>
|
<span class="fa fa-check" aria-hidden="true"></span>
|
||||||
<span class="fa fa-check" aria-hidden="true"></span>
|
{% blocktrans trimmed count count=0 %}
|
||||||
{% blocktrans trimmed count count=0 %}
|
Active ({{ count }} event)
|
||||||
Active ({{ count }} event)
|
{% plural %}
|
||||||
{% plural %}
|
Active ({{ count }} events)
|
||||||
Active ({{ count }} events)
|
{% endblocktrans %}
|
||||||
{% endblocktrans %}
|
</span>
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</h4>
|
</h4>
|
||||||
{% include "pretixcontrol/event/fragment_plugin_description.html" with plugin=plugin %}
|
{% include "pretixcontrol/event/fragment_plugin_description.html" with plugin=plugin %}
|
||||||
|
|||||||
@@ -238,7 +238,7 @@
|
|||||||
<div class="row control-group pdf-info">
|
<div class="row control-group pdf-info">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<label for="pdf-info-name">{% trans "Layout name" %}</label><br>
|
<label for="pdf-info-name">{% trans "Layout name" %}</label><br>
|
||||||
<input type="text" id="pdf-info-name" class="input-block-level form-control" name="name" value="{{ name }}" maxlength="190">
|
<input type="text" id="pdf-info-name" class="input-block-level form-control" name="name" value="{{ name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -82,35 +82,27 @@ class ControlSyncJob(OrderView):
|
|||||||
messages.success(self.request, _('The sync job has been enqueued and will run in the next minutes.'))
|
messages.success(self.request, _('The sync job has been enqueued and will run in the next minutes.'))
|
||||||
elif self.request.POST.get("cancel_job"):
|
elif self.request.POST.get("cancel_job"):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
try:
|
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
|
||||||
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
|
pk=self.request.POST.get("cancel_job")
|
||||||
pk=self.request.POST.get("cancel_job")
|
)
|
||||||
)
|
if job.in_flight:
|
||||||
except OrderSyncQueue.DoesNotExist:
|
messages.warning(self.request, _('The sync job is already in progress.'))
|
||||||
messages.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.'))
|
|
||||||
else:
|
else:
|
||||||
if job.in_flight:
|
job.delete()
|
||||||
messages.warning(self.request, _('The sync job is already in progress.'))
|
messages.success(self.request, _('The sync job has been canceled.'))
|
||||||
else:
|
|
||||||
job.delete()
|
|
||||||
messages.success(self.request, _('The sync job has been canceled.'))
|
|
||||||
elif self.request.POST.get("run_job_now"):
|
elif self.request.POST.get("run_job_now"):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
try:
|
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
|
||||||
job = self.order.queued_sync_jobs.select_for_update(of=OF_SELF).get(
|
pk=self.request.POST.get("run_job_now")
|
||||||
pk=self.request.POST.get("run_job_now")
|
)
|
||||||
)
|
if job.in_flight:
|
||||||
except OrderSyncQueue.DoesNotExist:
|
messages.success(self.request, _('The sync job is already in progress.'))
|
||||||
messages.info(self.request, _('The sync job could not be found. It may have been processed in the meantime.'))
|
|
||||||
else:
|
else:
|
||||||
if job.in_flight:
|
job.not_before = now()
|
||||||
messages.success(self.request, _('The sync job is already in progress.'))
|
job.need_manual_retry = None
|
||||||
else:
|
job.save()
|
||||||
job.not_before = now()
|
sync_single.apply_async(args=(job.pk,))
|
||||||
job.need_manual_retry = None
|
messages.success(self.request, _('The sync job has been set to run as soon as possible.'))
|
||||||
job.save()
|
|
||||||
sync_single.apply_async(args=(job.pk,))
|
|
||||||
messages.success(self.request, _('The sync job has been set to run as soon as possible.'))
|
|
||||||
|
|
||||||
return redirect(self.get_order_url())
|
return redirect(self.get_order_url())
|
||||||
|
|
||||||
|
|||||||
@@ -110,18 +110,7 @@ class MessageView(TemplateView):
|
|||||||
class LogDetailView(AdministratorPermissionRequiredMixin, View):
|
class LogDetailView(AdministratorPermissionRequiredMixin, View):
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
le = get_object_or_404(LogEntry, pk=request.GET.get('pk'))
|
le = get_object_or_404(LogEntry, pk=request.GET.get('pk'))
|
||||||
try:
|
return JsonResponse({'action_type': le.action_type, 'content_type': str(le.content_type), 'object_id': le.object_id, 'data': le.parsed_data})
|
||||||
object_repr = repr(le.content_object)
|
|
||||||
except Exception as e:
|
|
||||||
object_repr = 'Error: ' + str(e)
|
|
||||||
return JsonResponse({
|
|
||||||
'datetime': le.datetime.isoformat(),
|
|
||||||
'action_type': le.action_type,
|
|
||||||
'content_type': str(le.content_type),
|
|
||||||
'object_id': le.object_id,
|
|
||||||
'object_repr': object_repr,
|
|
||||||
'data': le.parsed_data,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
class PaymentDetailView(AdministratorPermissionRequiredMixin, View):
|
class PaymentDetailView(AdministratorPermissionRequiredMixin, View):
|
||||||
|
|||||||
@@ -711,15 +711,11 @@ class OrderDownload(AsyncAction, OrderView):
|
|||||||
)
|
)
|
||||||
return resp
|
return resp
|
||||||
elif isinstance(value, CachedCombinedTicket):
|
elif isinstance(value, CachedCombinedTicket):
|
||||||
if value.type == 'text/uri-list':
|
resp = FileResponse(value.file.file, content_type=value.type)
|
||||||
resp = HttpResponseRedirect(value.file.file.read())
|
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
|
||||||
return resp
|
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
|
||||||
else:
|
)
|
||||||
resp = FileResponse(value.file.file, content_type=value.type)
|
return resp
|
||||||
resp['Content-Disposition'] = 'attachment; filename="{}-{}-{}{}"'.format(
|
|
||||||
self.request.event.slug.upper(), self.order.code, self.output.identifier, value.extension
|
|
||||||
)
|
|
||||||
return resp
|
|
||||||
else:
|
else:
|
||||||
return redirect(self.get_self_url())
|
return redirect(self.get_self_url())
|
||||||
|
|
||||||
@@ -2579,11 +2575,6 @@ class OverView(EventPermissionRequiredMixin, TemplateView):
|
|||||||
self.request.event,
|
self.request.event,
|
||||||
fees=True
|
fees=True
|
||||||
)
|
)
|
||||||
ctx['subevent'] = (
|
|
||||||
self.request.event.has_subevents and
|
|
||||||
self.filter_form.is_valid() and
|
|
||||||
self.filter_form.cleaned_data.get('subevent')
|
|
||||||
)
|
|
||||||
ctx['subevent_warning'] = (
|
ctx['subevent_warning'] = (
|
||||||
self.request.event.has_subevents and
|
self.request.event.has_subevents and
|
||||||
self.filter_form.is_valid() and
|
self.filter_form.is_valid() and
|
||||||
@@ -2836,23 +2827,11 @@ class ExportView(EventPermissionRequiredMixin, ExportMixin, ListView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_scheduled_queryset()
|
return self.get_scheduled_queryset()
|
||||||
|
|
||||||
def has_permission(self):
|
|
||||||
return self.request.user.has_event_permission(self.request.organizer, self.request.event, "can_view_orders")
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
ctx = super().get_context_data(**kwargs)
|
ctx = super().get_context_data(**kwargs)
|
||||||
if "schedule" in self.request.POST or self.scheduled:
|
if "schedule" in self.request.POST or self.scheduled:
|
||||||
if "schedule" in self.request.POST and not self.has_permission():
|
ctx['schedule_form'] = self.schedule_form
|
||||||
messages.error(
|
ctx['rrule_form'] = self.rrule_form
|
||||||
self.request,
|
|
||||||
_(
|
|
||||||
"Your user account does not have sufficient permission to run this report, therefore "
|
|
||||||
"you cannot schedule it."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
ctx['schedule_form'] = self.schedule_form
|
|
||||||
ctx['rrule_form'] = self.rrule_form
|
|
||||||
elif not self.exporter:
|
elif not self.exporter:
|
||||||
for s in ctx['scheduled']:
|
for s in ctx['scheduled']:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -638,10 +638,12 @@ class OrganizerPlugins(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
|
|||||||
|
|
||||||
active_counter = Counter()
|
active_counter = Counter()
|
||||||
events_total = 0
|
events_total = 0
|
||||||
|
org_plugins = self.object.get_plugins()
|
||||||
for e in self.object.events.only("plugins").iterator():
|
for e in self.object.events.only("plugins").iterator():
|
||||||
events_total += 1
|
events_total += 1
|
||||||
for p in e.get_plugins():
|
for p in e.get_plugins():
|
||||||
active_counter[p] += 1
|
if p in org_plugins:
|
||||||
|
active_counter[p] += 1
|
||||||
plugins_grouped = groupby(
|
plugins_grouped = groupby(
|
||||||
sorted(
|
sorted(
|
||||||
plugins,
|
plugins,
|
||||||
@@ -2189,28 +2191,11 @@ class ExportView(OrganizerPermissionRequiredMixin, ExportMixin, ListView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_scheduled_queryset()
|
return self.get_scheduled_queryset()
|
||||||
|
|
||||||
def has_permission(self):
|
|
||||||
if isinstance(self.exporter, OrganizerLevelExportMixin):
|
|
||||||
if not self.request.user.has_organizer_permission(self.request.organizer, self.exporter.organizer_required_permission):
|
|
||||||
return False
|
|
||||||
if self.exporter and not self.exporter.available_for_user(self.request.user):
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
ctx = super().get_context_data(**kwargs)
|
ctx = super().get_context_data(**kwargs)
|
||||||
if "schedule" in self.request.POST or self.scheduled:
|
if "schedule" in self.request.POST or self.scheduled:
|
||||||
if "schedule" in self.request.POST and not self.has_permission():
|
ctx['schedule_form'] = self.schedule_form
|
||||||
messages.error(
|
ctx['rrule_form'] = self.rrule_form
|
||||||
self.request,
|
|
||||||
_(
|
|
||||||
"Your user account does not have sufficient permission to run this report, therefore "
|
|
||||||
"you cannot schedule it."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
ctx['schedule_form'] = self.schedule_form
|
|
||||||
ctx['rrule_form'] = self.rrule_form
|
|
||||||
elif not self.exporter:
|
elif not self.exporter:
|
||||||
for s in ctx['scheduled']:
|
for s in ctx['scheduled']:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -174,38 +174,21 @@ class SubEventDelete(EventPermissionRequiredMixin, CompatDeleteView):
|
|||||||
return HttpResponseRedirect(self.get_success_url())
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
return super().get(request, *args, **kwargs)
|
return super().get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
@transaction.atomic
|
||||||
def delete(self, request, *args, **kwargs):
|
def delete(self, request, *args, **kwargs):
|
||||||
self.object = self.get_object()
|
self.object = self.get_object()
|
||||||
success_url = self.get_success_url()
|
success_url = self.get_success_url()
|
||||||
|
|
||||||
try:
|
if not self.object.allow_delete():
|
||||||
with transaction.atomic():
|
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
|
||||||
if not self.object.allow_delete():
|
'placed.'))
|
||||||
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
'placed.'))
|
|
||||||
return HttpResponseRedirect(success_url)
|
|
||||||
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
|
|
||||||
CartPosition.objects.filter(addon_to__subevent=self.object).delete()
|
|
||||||
self.object.cartposition_set.all().delete()
|
|
||||||
self.object.delete()
|
|
||||||
except ProtectedError:
|
|
||||||
if self.object.active:
|
|
||||||
with transaction.atomic():
|
|
||||||
self.object.log_action(
|
|
||||||
'pretix.subevent.changed', user=self.request.user, data={
|
|
||||||
'active': False
|
|
||||||
},
|
|
||||||
)
|
|
||||||
self.object.active = False
|
|
||||||
self.object.save(update_fields=['active'])
|
|
||||||
messages.error(self.request, pgettext_lazy(
|
|
||||||
'subevent',
|
|
||||||
'The date could not be deleted as some constraints (e.g. data created by plug-ins) did not allow '
|
|
||||||
'it. The date was disabled instead.'
|
|
||||||
))
|
|
||||||
else:
|
else:
|
||||||
|
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
|
||||||
|
CartPosition.objects.filter(addon_to__subevent=self.object).delete()
|
||||||
|
self.object.cartposition_set.all().delete()
|
||||||
|
self.object.delete()
|
||||||
messages.success(request, pgettext_lazy('subevent', 'The selected date has been deleted.'))
|
messages.success(request, pgettext_lazy('subevent', 'The selected date has been deleted.'))
|
||||||
|
|
||||||
return HttpResponseRedirect(success_url)
|
return HttpResponseRedirect(success_url)
|
||||||
|
|
||||||
def get_success_url(self) -> str:
|
def get_success_url(self) -> str:
|
||||||
|
|||||||
@@ -710,9 +710,9 @@ class UserNotificationsEditView(TemplateView):
|
|||||||
|
|
||||||
messages.success(request, _('Your notification settings have been saved.'))
|
messages.success(request, _('Your notification settings have been saved.'))
|
||||||
if request.user.notifications_send:
|
if request.user.notifications_send:
|
||||||
self.request.user.log_action('pretix.user.settings.notifications.enabled', user=self.request.user)
|
|
||||||
else:
|
|
||||||
self.request.user.log_action('pretix.user.settings.notifications.disabled', user=self.request.user)
|
self.request.user.log_action('pretix.user.settings.notifications.disabled', user=self.request.user)
|
||||||
|
else:
|
||||||
|
self.request.user.log_action('pretix.user.settings.notifications.enabled', user=self.request.user)
|
||||||
return redirect(
|
return redirect(
|
||||||
reverse('control:user.settings.notifications') +
|
reverse('control:user.settings.notifications') +
|
||||||
('?event={}'.format(self.event.pk) if self.event else '')
|
('?event={}'.format(self.event.pk) if self.event else '')
|
||||||
|
|||||||
@@ -34,7 +34,9 @@
|
|||||||
|
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import get_language, pgettext_lazy
|
from django.utils.translation import (
|
||||||
|
get_language, gettext_lazy as _, pgettext_lazy,
|
||||||
|
)
|
||||||
|
|
||||||
from pretix.helpers.templatetags.date_fast import date_fast as _date
|
from pretix.helpers.templatetags.date_fast import date_fast as _date
|
||||||
|
|
||||||
@@ -64,16 +66,6 @@ def daterange(df, dt, as_html=False):
|
|||||||
return format_html(base_format, _date(df, "j."), mark_safe(until.strip()), _date(dt, "j. F Y"))
|
return format_html(base_format, _date(df, "j."), mark_safe(until.strip()), _date(dt, "j. F Y"))
|
||||||
elif df.year == dt.year:
|
elif df.year == dt.year:
|
||||||
return format_html(base_format, _date(df, "j. F"), until, _date(dt, "j. F Y"))
|
return format_html(base_format, _date(df, "j. F"), until, _date(dt, "j. F Y"))
|
||||||
elif lng == "en-nz":
|
|
||||||
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
|
|
||||||
# Mon, 15 January 2024
|
|
||||||
return format_html(base_format, _date(df, "D, j F Y"))
|
|
||||||
elif df.year == dt.year and df.month == dt.month:
|
|
||||||
# 1 – 3 January 2024
|
|
||||||
return format_html(base_format, _date(df, "j"), until, _date(dt, "j F Y"))
|
|
||||||
elif df.year == dt.year:
|
|
||||||
# 1 January – 3 April 2024
|
|
||||||
return format_html(base_format, _date(df, "j F"), until, _date(dt, "j F Y"))
|
|
||||||
elif lng.startswith("en"):
|
elif lng.startswith("en"):
|
||||||
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
|
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
|
||||||
return format_html(base_format, _date(df, "D, N jS, Y"))
|
return format_html(base_format, _date(df, "D, N jS, Y"))
|
||||||
@@ -111,7 +103,7 @@ def daterange(df, dt, as_html=False):
|
|||||||
until=until,
|
until=until,
|
||||||
)
|
)
|
||||||
|
|
||||||
return "{date_from}{until}{date_to}".format(
|
return _("{date_from}{until}{date_to}").format(
|
||||||
date_from=_date(df, "DATE_FORMAT"),
|
date_from=_date(df, "DATE_FORMAT"),
|
||||||
date_to=_date(dt, "DATE_FORMAT"),
|
date_to=_date(dt, "DATE_FORMAT"),
|
||||||
until=until,
|
until=until,
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is part of pretix (Community Edition).
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014-2020 Raphael Michel and contributors
|
|
||||||
# Copyright (C) 2020-2021 rami.io GmbH and contributors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
|
||||||
# Public License as published by the Free Software Foundation in version 3 of the License.
|
|
||||||
#
|
|
||||||
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
|
|
||||||
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
|
|
||||||
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
|
|
||||||
# this file, see <https://pretix.eu/about/en/license>.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
||||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
||||||
# details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
|
||||||
# <https://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is part of pretix (Community Edition).
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014-2020 Raphael Michel and contributors
|
|
||||||
# Copyright (C) 2020-2021 rami.io GmbH and contributors
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
|
|
||||||
# Public License as published by the Free Software Foundation in version 3 of the License.
|
|
||||||
#
|
|
||||||
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
|
|
||||||
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
|
|
||||||
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
|
|
||||||
# this file, see <https://pretix.eu/about/en/license>.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
||||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
||||||
# details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
|
||||||
# <https://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Date according to https://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
|
|
||||||
# Following NZ government guidance from https://www.digital.govt.nz/standards-and-guidance/design-and-ux/content-design-guidance/writing-style/numbers
|
|
||||||
DATE_FORMAT = "j F Y" # 12 December 2015
|
|
||||||
DATETIME_FORMAT = "j F Y, g:ia" # 12 December 2015, 5:30pm
|
|
||||||
TIME_FORMAT = "g:ia" # 5:30pm
|
|
||||||
YEAR_MONTH_FORMAT = "F Y" # December 2015
|
|
||||||
MONTH_DAY_FORMAT = "j F" # 12 December
|
|
||||||
SHORT_DATE_FORMAT = "j F Y" # same as DATE_FORMAT per guidance
|
|
||||||
SHORT_DATETIME_FORMAT = "j F Y, g:ia"
|
|
||||||
WEEKDAY_FORMAT = "l" # Monday
|
|
||||||
WEEKDAY_DATE_FORMAT = "l, j F Y" # Friday, 23 November 2018
|
|
||||||
WEEK_FORMAT = "\\W W, o" # ISO week: "W 52, 2024"
|
|
||||||
WEEK_DAY_FORMAT = "D, j M" # Abbrev weekday and month: "Mon, 5 Feb"
|
|
||||||
SHORT_MONTH_DAY_FORMAT = "j/n" # Numeric day/month: "5/2"
|
|
||||||
|
|
||||||
# Parsing inputs; keep d/m/Y and ISO
|
|
||||||
DATE_INPUT_FORMATS = [
|
|
||||||
"%d/%m/%Y",
|
|
||||||
"%Y-%m-%d",
|
|
||||||
"%d/%m/%y",
|
|
||||||
]
|
|
||||||
|
|
||||||
TIME_INPUT_FORMATS = [
|
|
||||||
"%I:%M%p", # 5:30pm
|
|
||||||
"%H:%M:%S",
|
|
||||||
"%H:%M:%S.%f",
|
|
||||||
"%H:%M",
|
|
||||||
]
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2021-09-15 11:22+0000\n"
|
"PO-Revision-Date: 2021-09-15 11:22+0000\n"
|
||||||
"Last-Translator: Mohamed Tawfiq <mtawfiq@wafyapp.com>\n"
|
"Last-Translator: Mohamed Tawfiq <mtawfiq@wafyapp.com>\n"
|
||||||
"Language-Team: Arabic <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Arabic <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -359,12 +359,12 @@ msgstr "لا"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "إغلاق"
|
msgstr "إغلاق"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "مطلوب"
|
msgstr "مطلوب"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -372,11 +372,11 @@ msgstr ""
|
|||||||
"تتم معالجة طلبك حاليا. قد يستغرق الأمر بضع دقائق بناء على حجم الفعالية التي "
|
"تتم معالجة طلبك حاليا. قد يستغرق الأمر بضع دقائق بناء على حجم الفعالية التي "
|
||||||
"اخترت."
|
"اخترت."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr "طلبك قيد الانتظار وستتم معالجته قريبا."
|
msgstr "طلبك قيد الانتظار وستتم معالجته قريبا."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -385,36 +385,36 @@ msgstr ""
|
|||||||
"وصل طلبك للخادم وننتظر تنفيذه. إذا استغرق الأمر أكثر من دقيقتين تواصل معنا "
|
"وصل طلبك للخادم وننتظر تنفيذه. إذا استغرق الأمر أكثر من دقيقتين تواصل معنا "
|
||||||
"أو عاود المحاولة مجددا."
|
"أو عاود المحاولة مجددا."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "حدث خطأ من نوع {code}."
|
msgstr "حدث خطأ من نوع {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr "لم نتمكن من الاتصال بالخادم، لكن سنواصل المحاولة، رمز آخر خطأ: {code}"
|
msgstr "لم نتمكن من الاتصال بالخادم، لكن سنواصل المحاولة، رمز آخر خطأ: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "استغرقت الطلب فترة طويلة، الرجاء المحاولة مرة أخرى."
|
msgstr "استغرقت الطلب فترة طويلة، الرجاء المحاولة مرة أخرى."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"لا يمكننا الوصول إلى الخادم حاليا، حاول مرة أخرى من فضلك. رمز الخطأ : {code}"
|
"لا يمكننا الوصول إلى الخادم حاليا، حاول مرة أخرى من فضلك. رمز الخطأ : {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "جاري معالجة طلبك …"
|
msgstr "جاري معالجة طلبك …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -423,11 +423,11 @@ msgstr ""
|
|||||||
"نعمل الآن على ارسال طلبك إلى الخادم، إذا أستغرقت العملية أكثر من دقيقة، يرجى "
|
"نعمل الآن على ارسال طلبك إلى الخادم، إذا أستغرقت العملية أكثر من دقيقة، يرجى "
|
||||||
"التحقق من اتصالك بالإنترنت ثم أعد تحميل الصفحة مرة أخرى."
|
"التحقق من اتصالك بالإنترنت ثم أعد تحميل الصفحة مرة أخرى."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "أغلق الرسالة"
|
msgstr "أغلق الرسالة"
|
||||||
|
|
||||||
@@ -798,7 +798,7 @@ msgstr "ستسترد %(currency)%(amount)"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "الرجاء إدخال المبلغ الذي يمكن للمنظم الاحتفاظ به."
|
msgstr "الرجاء إدخال المبلغ الذي يمكن للمنظم الاحتفاظ به."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "التوقيت المحلي:"
|
msgstr "التوقيت المحلي:"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2020-12-19 07:00+0000\n"
|
"PO-Revision-Date: 2020-12-19 07:00+0000\n"
|
||||||
"Last-Translator: albert <albert.serra.monner@gmail.com>\n"
|
"Last-Translator: albert <albert.serra.monner@gmail.com>\n"
|
||||||
"Language-Team: Catalan <https://translate.pretix.eu/projects/pretix/pretix-"
|
"Language-Team: Catalan <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||||
@@ -345,70 +345,70 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Cart expired"
|
#| msgid "Cart expired"
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "Cistella expirada"
|
msgstr "Cistella expirada"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Estem processant la vostra sol·licitud …"
|
msgstr "Estem processant la vostra sol·licitud …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -751,7 +751,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,9 +7,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-09-08 18:57+0000\n"
|
"PO-Revision-Date: 2025-05-16 17:00+0000\n"
|
||||||
"Last-Translator: Alois Pospíšil <alois.pospisil@gmail.com>\n"
|
"Last-Translator: David <davemachala@gmail.com>\n"
|
||||||
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
"cs/>\n"
|
"cs/>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 5.13\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:56
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||||
@@ -345,12 +345,12 @@ msgstr "Ne"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "zavřít"
|
msgstr "zavřít"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "povinný"
|
msgstr "povinný"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -358,11 +358,11 @@ msgstr ""
|
|||||||
"Váš požadavek je právě zpracováván. V závislosti na velikosti vaší udalosti, "
|
"Váš požadavek je právě zpracováván. V závislosti na velikosti vaší udalosti, "
|
||||||
"to může trvat několik minut."
|
"to může trvat několik minut."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr "Váš požadavek byl vložem do fronty serveru a brzy bude zpracován."
|
msgstr "Váš požadavek byl vložem do fronty serveru a brzy bude zpracován."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -372,14 +372,14 @@ msgstr ""
|
|||||||
"Pokud to trvá více jak dvě minuty, prosím kontaktuje nás nebo se vraťte do "
|
"Pokud to trvá více jak dvě minuty, prosím kontaktuje nás nebo se vraťte do "
|
||||||
"vašeho prohlížeče a zkuste to znovu."
|
"vašeho prohlížeče a zkuste to znovu."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Vyskytla se chyba {code}."
|
msgstr "Vyskytla se chyba {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -387,12 +387,12 @@ msgstr ""
|
|||||||
"Momentálně nemůžeme kontaktovat server, ale stále se o to pokoušíme. "
|
"Momentálně nemůžeme kontaktovat server, ale stále se o to pokoušíme. "
|
||||||
"Poslední chybový kód: {code}"
|
"Poslední chybový kód: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Zpracování požadavku trvá příliš dlouho. Prosím zkuste to znovu."
|
msgstr "Zpracování požadavku trvá příliš dlouho. Prosím zkuste to znovu."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -400,11 +400,11 @@ msgstr ""
|
|||||||
"Momentálně nemůžeme kontaktovat server. Prosím zkuste to znovu. Chybový kód: "
|
"Momentálně nemůžeme kontaktovat server. Prosím zkuste to znovu. Chybový kód: "
|
||||||
"{code}"
|
"{code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Zpracováváme váš požadavek …"
|
msgstr "Zpracováváme váš požadavek …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -414,11 +414,11 @@ msgstr ""
|
|||||||
"prosím zkontrolujte své internetové připojení a znovu načtěte stránku a "
|
"prosím zkontrolujte své internetové připojení a znovu načtěte stránku a "
|
||||||
"zkuste to znovu."
|
"zkuste to znovu."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Zavřít zprávu"
|
msgstr "Zavřít zprávu"
|
||||||
|
|
||||||
@@ -640,15 +640,19 @@ msgid "Unknown error."
|
|||||||
msgstr "Neznámá chyba."
|
msgstr "Neznámá chyba."
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:292
|
#: pretix/static/pretixcontrol/js/ui/main.js:292
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your color has great contrast and is very easy to read!"
|
||||||
msgid "Your color has great contrast and will provide excellent accessibility."
|
msgid "Your color has great contrast and will provide excellent accessibility."
|
||||||
msgstr "Tato barva má velmi dobrý kontrast a je velmi dobře čitelná."
|
msgstr "Tato barva má velmi dobrý kontrast a je velmi dobře čitelná!"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your color has decent contrast and is probably good-enough to read!"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has decent contrast and is sufficient for minimum accessibility "
|
"Your color has decent contrast and is sufficient for minimum accessibility "
|
||||||
"requirements."
|
"requirements."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tato barva má slušný kontrast a pravděpodobně je dostatečně dobře čitelná."
|
"Tato barva má slušný kontrast a pravděpodobně je dostatečně dobře čitelná!"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -731,7 +735,7 @@ msgstr "Nákupní košík vypršel"
|
|||||||
#: pretix/static/pretixpresale/js/ui/cart.js:58
|
#: pretix/static/pretixpresale/js/ui/cart.js:58
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:84
|
#: pretix/static/pretixpresale/js/ui/cart.js:84
|
||||||
msgid "Your cart is about to expire."
|
msgid "Your cart is about to expire."
|
||||||
msgstr "Nákupní košík brzy vyprší."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:62
|
#: pretix/static/pretixpresale/js/ui/cart.js:62
|
||||||
msgid "The items in your cart are reserved for you for one minute."
|
msgid "The items in your cart are reserved for you for one minute."
|
||||||
@@ -744,8 +748,10 @@ msgstr[2] ""
|
|||||||
"Produkty v nákupním košíku jsou pro vás rezervovány na dalších {num} minut."
|
"Produkty v nákupním košíku jsou pro vás rezervovány na dalších {num} minut."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:83
|
#: pretix/static/pretixpresale/js/ui/cart.js:83
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Cart expired"
|
||||||
msgid "Your cart has expired."
|
msgid "Your cart has expired."
|
||||||
msgstr "Nákupní košík vypršel."
|
msgstr "Nákupní košík vypršel"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -779,7 +785,7 @@ msgstr "Dostanete %(currency)s %(amount)s zpět"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Zadejte částku, kterou si organizátor může ponechat."
|
msgstr "Zadejte částku, kterou si organizátor může ponechat."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Místní čas:"
|
msgstr "Místní čas:"
|
||||||
|
|
||||||
@@ -805,12 +811,12 @@ msgstr "Zvýšit počet"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter events by"
|
msgid "Filter events by"
|
||||||
msgstr "Filtrovat události"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr "Filtrovat"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
@@ -927,7 +933,7 @@ msgstr "Již není k dispozici"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:42
|
#: pretix/static/pretixpresale/js/widget/widget.js:42
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Currently not available"
|
msgid "Currently not available"
|
||||||
msgstr "Momentálně není k dispozici"
|
msgstr "Momentálně není k dispozici."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:44
|
#: pretix/static/pretixpresale/js/widget/widget.js:44
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
@@ -962,7 +968,7 @@ msgstr "Obchod vstupenek otevřit"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:50
|
#: pretix/static/pretixpresale/js/widget/widget.js:50
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Checkout"
|
msgid "Checkout"
|
||||||
msgstr "Přejít k platbě"
|
msgstr "Checkout"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:51
|
#: pretix/static/pretixpresale/js/widget/widget.js:51
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
@@ -1084,7 +1090,7 @@ msgstr "Předchozí týden"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:74
|
#: pretix/static/pretixpresale/js/widget/widget.js:74
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Open seat selection"
|
msgid "Open seat selection"
|
||||||
msgstr "Otevřete výběr míst"
|
msgstr "Otevřete výběr sedadla"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:75
|
#: pretix/static/pretixpresale/js/widget/widget.js:75
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -345,68 +345,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -741,7 +741,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2024-07-10 15:00+0000\n"
|
"PO-Revision-Date: 2024-07-10 15:00+0000\n"
|
||||||
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
|
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
|
||||||
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -357,14 +357,14 @@ msgstr "Nej"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "Luk"
|
msgstr "Luk"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Cart expired"
|
#| msgid "Cart expired"
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "Kurv udløbet"
|
msgstr "Kurv udløbet"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "Your request has been queued on the server and will now be processed. "
|
#| "Your request has been queued on the server and will now be processed. "
|
||||||
@@ -376,7 +376,7 @@ msgstr ""
|
|||||||
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
|
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
|
||||||
"der gå op til et par minutter."
|
"der gå op til et par minutter."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "Your request has been queued on the server and will now be processed. "
|
#| "Your request has been queued on the server and will now be processed. "
|
||||||
@@ -386,7 +386,7 @@ msgstr ""
|
|||||||
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
|
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
|
||||||
"der gå op til et par minutter."
|
"der gå op til et par minutter."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -395,14 +395,14 @@ msgstr ""
|
|||||||
"Din forespørgsel er under behandling. Hvis der går mere end to minutter, så "
|
"Din forespørgsel er under behandling. Hvis der går mere end to minutter, så "
|
||||||
"kontakt os eller gå tilbage og prøv igen."
|
"kontakt os eller gå tilbage og prøv igen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Der er sket en fejl ({code})."
|
msgstr "Der er sket en fejl ({code})."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -410,12 +410,12 @@ msgstr ""
|
|||||||
"Vi kan ikke komme i kontakt med serveren, men prøver igen. Seneste fejlkode: "
|
"Vi kan ikke komme i kontakt med serveren, men prøver igen. Seneste fejlkode: "
|
||||||
"{code}"
|
"{code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Forespørgslen tog for lang tid. Prøv igen."
|
msgstr "Forespørgslen tog for lang tid. Prøv igen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -423,11 +423,11 @@ msgstr ""
|
|||||||
"Vi kan i øjeblikket ikke komme i kontakt med serveren. Prøv igen. Fejlkode: "
|
"Vi kan i øjeblikket ikke komme i kontakt med serveren. Prøv igen. Fejlkode: "
|
||||||
"{code}"
|
"{code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Vi behandler din bestilling …"
|
msgstr "Vi behandler din bestilling …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -436,11 +436,11 @@ msgstr ""
|
|||||||
"Din forespørgsel bliver sendt til serveren. Hvis det tager mere end et "
|
"Din forespørgsel bliver sendt til serveren. Hvis det tager mere end et "
|
||||||
"minut, så tjek din internetforbindelse, genindlæs siden og prøv igen."
|
"minut, så tjek din internetforbindelse, genindlæs siden og prøv igen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Luk besked"
|
msgstr "Luk besked"
|
||||||
|
|
||||||
@@ -810,7 +810,7 @@ msgstr "fra %(currency)s %(price)s"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Din lokaltid:"
|
msgstr "Din lokaltid:"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-30 11:08+0000\n"
|
"PO-Revision-Date: 2025-05-30 11:08+0000\n"
|
||||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||||
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -345,12 +345,12 @@ msgstr "Nein"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "schließen"
|
msgstr "schließen"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "erforderlich"
|
msgstr "erforderlich"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -358,13 +358,13 @@ msgstr ""
|
|||||||
"Ihre Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann dies "
|
"Ihre Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann dies "
|
||||||
"einige Minuten dauern."
|
"einige Minuten dauern."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ihre Anfrage befindet sich beim Server in der Warteschlange und wird bald "
|
"Ihre Anfrage befindet sich beim Server in der Warteschlange und wird bald "
|
||||||
"verarbeitet."
|
"verarbeitet."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -375,14 +375,14 @@ msgstr ""
|
|||||||
"bitte oder gehen Sie in Ihrem Browser einen Schritt zurück und versuchen es "
|
"bitte oder gehen Sie in Ihrem Browser einen Schritt zurück und versuchen es "
|
||||||
"erneut."
|
"erneut."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Ein Fehler ist aufgetreten. Fehlercode: {code}"
|
msgstr "Ein Fehler ist aufgetreten. Fehlercode: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -390,12 +390,12 @@ msgstr ""
|
|||||||
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
|
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
|
||||||
"Letzter Fehlercode: {code}"
|
"Letzter Fehlercode: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
|
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -403,11 +403,11 @@ msgstr ""
|
|||||||
"Wir können den Server aktuell nicht erreichen. Bitte versuchen Sie es noch "
|
"Wir können den Server aktuell nicht erreichen. Bitte versuchen Sie es noch "
|
||||||
"einmal. Fehlercode: {code}"
|
"einmal. Fehlercode: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Wir verarbeiten Ihre Anfrage …"
|
msgstr "Wir verarbeiten Ihre Anfrage …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -417,11 +417,11 @@ msgstr ""
|
|||||||
"dauert, prüfen Sie bitte Ihre Internetverbindung. Danach können Sie diese "
|
"dauert, prüfen Sie bitte Ihre Internetverbindung. Danach können Sie diese "
|
||||||
"Seite neu laden und es erneut versuchen."
|
"Seite neu laden und es erneut versuchen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr "Wenn dies länger als einige Minuten dauert, kontaktiere uns bitte."
|
msgstr "Wenn dies länger als einige Minuten dauert, kontaktiere uns bitte."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
@@ -771,7 +771,7 @@ msgstr "Sie erhalten %(currency)s %(amount)s zurück"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Bitte geben Sie den Betrag ein, den der Veranstalter einbehalten darf."
|
msgstr "Bitte geben Sie den Betrag ein, den der Veranstalter einbehalten darf."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Deine lokale Zeit:"
|
msgstr "Deine lokale Zeit:"
|
||||||
|
|
||||||
|
|||||||
+141
-257
@@ -1,143 +1,125 @@
|
|||||||
ABGEKÜNDIGT
|
2FA
|
||||||
ABN
|
ABN
|
||||||
|
AES
|
||||||
Absenderadresse
|
Absenderadresse
|
||||||
Absenderinformation
|
Absenderinformation
|
||||||
Absendername
|
Absendername
|
||||||
|
ABGEKÜNDIGT
|
||||||
Admin
|
Admin
|
||||||
Adminbereich
|
Adminbereich
|
||||||
Admin-Modus
|
|
||||||
Admin-Sitzung
|
|
||||||
Admin-Sitzungen
|
|
||||||
AES
|
|
||||||
Affirm
|
Affirm
|
||||||
AGPL
|
AGPL
|
||||||
AGPLv
|
AGPLv
|
||||||
Alipay
|
Alipay
|
||||||
and
|
and
|
||||||
API-Meta-Informationen
|
|
||||||
APM
|
|
||||||
App
|
App
|
||||||
App-Gebühr
|
|
||||||
ApplePay
|
ApplePay
|
||||||
Apps
|
Apps
|
||||||
|
APM
|
||||||
as
|
as
|
||||||
Aufbuchungen
|
Aufbuchungen
|
||||||
aufeinanderfolgenden
|
aufeinanderfolgenden
|
||||||
|
Aufteilungsliste
|
||||||
aufzubuchen
|
aufzubuchen
|
||||||
auschecken
|
auschecken
|
||||||
Ausgangsscan
|
Ausgangsscan
|
||||||
Ausgangsscans
|
Ausgangsscans
|
||||||
ausgecheckt
|
|
||||||
ausgeklappt
|
ausgeklappt
|
||||||
|
ausgecheckt
|
||||||
auswahl
|
auswahl
|
||||||
|
Auth
|
||||||
Authentication
|
Authentication
|
||||||
Authenticator-App
|
Authenticator
|
||||||
|
Authentifizierungsmechanismus
|
||||||
|
Autorisierungs
|
||||||
Autorisierungscode
|
Autorisierungscode
|
||||||
Autorisierungs-Endpunktes
|
Backend
|
||||||
Badge
|
Badge
|
||||||
Badge-Druck
|
|
||||||
Badge-Layout
|
|
||||||
Badge-Layouts
|
|
||||||
Badges
|
Badges
|
||||||
Bancontact
|
Bancontact
|
||||||
Bank-App
|
|
||||||
BankID
|
BankID
|
||||||
Banking-App
|
Banking
|
||||||
|
barcodes
|
||||||
Baskisch
|
Baskisch
|
||||||
Bcc
|
Bcc
|
||||||
BCC-Adresse
|
BCC
|
||||||
Bcc-Kopie
|
|
||||||
Beispielevent
|
Beispielevent
|
||||||
Beispielproduktvariantenbeschreibung
|
Beispielproduktvariantenbeschreibung
|
||||||
Belarus
|
Belarus
|
||||||
|
Benachrichtigungs
|
||||||
Benachrichtigungsart
|
Benachrichtigungsart
|
||||||
Benachrichtigungsarten
|
Benachrichtigungsarten
|
||||||
Benachrichtigungseinstellungen
|
Benachrichtigungseinstellungen
|
||||||
Benachrichtigungs-Einstellungen
|
Berechtigungs
|
||||||
Benachrichtigungs-E-Mail
|
Bestätigungs
|
||||||
Benutzer-ID-Feld
|
Bestellbestätigungs
|
||||||
Benutzer-ID-Felds
|
|
||||||
Bestätigungs-E-Mail
|
|
||||||
Bestellbestätigungs-E-Mail
|
|
||||||
Bestellbestätigungs-E-Mails
|
|
||||||
Bestellungsänderungen
|
Bestellungsänderungen
|
||||||
Bestellungs-Synchronisation
|
Bestellungsstatus
|
||||||
Bestellungs-Synchronisierung
|
Bestellungs
|
||||||
bez
|
bez
|
||||||
BezahlCode
|
BezahlCode
|
||||||
|
Bezahlmethode
|
||||||
Blackberry
|
Blackberry
|
||||||
BLIK
|
BLIK
|
||||||
BN-Code
|
Blogpost
|
||||||
|
BN
|
||||||
|
Branding
|
||||||
|
Browsereinstellungen
|
||||||
|
BSD
|
||||||
|
bspw
|
||||||
Bokmål
|
Bokmål
|
||||||
Boleto
|
Boleto
|
||||||
Branding-Informationen
|
Buchhaltungs
|
||||||
Browsereinstellungen
|
|
||||||
BSD-Lizenz
|
|
||||||
bspw
|
|
||||||
Bundles
|
Bundles
|
||||||
Butterfly-Badge
|
Butterfly
|
||||||
bzw
|
bzw
|
||||||
ca
|
ca
|
||||||
Cc
|
|
||||||
Ceuta
|
Ceuta
|
||||||
|
Cc
|
||||||
chardet
|
chardet
|
||||||
charge
|
charge
|
||||||
Charge-ID
|
|
||||||
Checkbox
|
Checkbox
|
||||||
Check-in-App
|
|
||||||
Check-in-Apps
|
|
||||||
Check-in-QR-Code
|
|
||||||
Checkout
|
Checkout
|
||||||
Chrome
|
Chrome
|
||||||
Client-ID
|
Choice
|
||||||
Client-Secret
|
Community
|
||||||
CODE.txt
|
|
||||||
Community-Übersetzungen
|
|
||||||
CONFIRM
|
CONFIRM
|
||||||
Connect
|
Connect
|
||||||
Cookie-Consent-Management
|
Consent
|
||||||
Cookie-Consent-Mechanismus
|
|
||||||
Copyleft
|
Copyleft
|
||||||
Cronjob
|
Cronjob
|
||||||
Cronjob-Komponente
|
Cross
|
||||||
Cross-Selling-Bedingung
|
|
||||||
Cross-Selling-Kategorie
|
|
||||||
Cross-Selling-Kategorien
|
|
||||||
Cross-Selling-Schritt
|
|
||||||
csv
|
csv
|
||||||
CSV
|
|
||||||
CSV-Datei
|
|
||||||
CSV-Dateien
|
|
||||||
CSV-Eingabe
|
|
||||||
CSV-Eingabedaten
|
|
||||||
CSV-Import
|
|
||||||
CSV-Input
|
|
||||||
CSV-Lesen
|
|
||||||
CSV-Spalte
|
|
||||||
Customer
|
Customer
|
||||||
CZK
|
CZK
|
||||||
Debug-Modus
|
Dashboard
|
||||||
|
Datensynchronisation
|
||||||
|
Debug
|
||||||
dekodi
|
dekodi
|
||||||
Desktop-Apps
|
deliverability
|
||||||
|
DNS
|
||||||
Di
|
Di
|
||||||
Do
|
Do
|
||||||
|
Doe
|
||||||
Downloadformat
|
Downloadformat
|
||||||
|
Downloadseite
|
||||||
Dr
|
Dr
|
||||||
Drag-and-Drop-Interfaces
|
Drag
|
||||||
|
Droid
|
||||||
|
Drop
|
||||||
|
DSS
|
||||||
Edge
|
Edge
|
||||||
Eingangsscan
|
Eingangsscan
|
||||||
Einlassbuchung
|
Einlassbuchung
|
||||||
Einlassdatum
|
Einlassdatum
|
||||||
Einlasskontrolle
|
Einlasskontrolle
|
||||||
|
Einlassuhrzeita
|
||||||
einzuchecken
|
einzuchecken
|
||||||
email
|
email
|
||||||
E-Mail-Renderer
|
Enterprise
|
||||||
Enterprise-Lizenz
|
EPC
|
||||||
Enterprise-Lizenzen
|
|
||||||
Enterprise-Plugin
|
|
||||||
Enterprise-Plugins
|
|
||||||
eps
|
|
||||||
EPS
|
EPS
|
||||||
|
eps
|
||||||
Erstattungsbetrag
|
Erstattungsbetrag
|
||||||
Erstattungsliste
|
Erstattungsliste
|
||||||
Erstattungsmethode
|
Erstattungsmethode
|
||||||
@@ -145,231 +127,175 @@ Erstattungsoptionen
|
|||||||
Erstattungsstatus
|
Erstattungsstatus
|
||||||
Erstattungsweg
|
Erstattungsweg
|
||||||
erstmalig
|
erstmalig
|
||||||
|
Erweiterungs
|
||||||
etc
|
etc
|
||||||
EU-USt-ID-Nr
|
|
||||||
Event
|
Event
|
||||||
Event-Eigenschaft
|
|
||||||
Eventeingang
|
Eventeingang
|
||||||
Event-Erstellung
|
Eventfirma
|
||||||
Event-Setup-Tool
|
|
||||||
Event-Ticketing-Software
|
|
||||||
Event-Ticketshop
|
|
||||||
Event-Übersicht
|
|
||||||
Event-Website
|
|
||||||
evtl
|
evtl
|
||||||
Explorer
|
Explorer
|
||||||
FA
|
FA
|
||||||
Favicon
|
Favicon
|
||||||
F-Droid
|
|
||||||
Footer
|
Footer
|
||||||
Footer-Link
|
|
||||||
Footer-Text
|
|
||||||
Galicisch
|
Galicisch
|
||||||
Geocoding
|
gehostete
|
||||||
Geocoding-Daten
|
geht's
|
||||||
Geo-Koordinaten
|
GENEXAMPLE
|
||||||
Geräte-ID
|
Geo
|
||||||
|
geocoding
|
||||||
gescannt
|
gescannt
|
||||||
ggf
|
ggf
|
||||||
Ggf
|
GiroCode
|
||||||
giropay
|
giropay
|
||||||
|
GPL
|
||||||
Grants
|
Grants
|
||||||
Gruppierungsspalte
|
|
||||||
Gruppierungswert
|
Gruppierungswert
|
||||||
|
Gruppierungsspalte
|
||||||
Guide
|
Guide
|
||||||
Gutscheineinlöser
|
Gutscheineinlöser
|
||||||
Händler-ID
|
|
||||||
Händler-PayPal-Konto
|
|
||||||
Hardware-Tokengenerator
|
|
||||||
herunterscrollen
|
herunterscrollen
|
||||||
hochlädst
|
hochlädst
|
||||||
HTML-E-Mail-Renderer
|
|
||||||
HTTPS
|
HTTPS
|
||||||
HTTPS-Verbindungen
|
IBAN
|
||||||
HTTPS-Website
|
|
||||||
IBANs
|
IBANs
|
||||||
iCal
|
iCal
|
||||||
ics-Kalenderdatei
|
ics
|
||||||
ID
|
ID
|
||||||
iDEAL
|
iDEAL
|
||||||
IDs
|
IDs
|
||||||
Inc
|
Inc
|
||||||
inkl
|
inkl
|
||||||
innen-Badges
|
|
||||||
innenname
|
innenname
|
||||||
innennamen
|
innennamen
|
||||||
innergemeinschaftliche
|
innergemeinschaftliche
|
||||||
Innergemeinschaftlicher
|
Innergemeinschaftlicher
|
||||||
Installations-ID
|
Input
|
||||||
Integrationen
|
Installations
|
||||||
|
integrationen
|
||||||
|
intra
|
||||||
|
INV
|
||||||
invalidieren
|
invalidieren
|
||||||
invalidiert
|
invalidiert
|
||||||
iOS
|
|
||||||
ISU
|
ISU
|
||||||
|
iOS
|
||||||
Itaú
|
Itaú
|
||||||
iTunes
|
iTunes
|
||||||
JavaScript
|
JavaScript
|
||||||
JSON-Datei
|
JSON
|
||||||
Kategoriebeschreibung
|
Kategoriebeschreibung
|
||||||
|
Key
|
||||||
Klarna
|
Klarna
|
||||||
Kombitickets
|
Kombitickets
|
||||||
|
Kompatibilitätsmodus
|
||||||
|
Konfigurations
|
||||||
|
Kosovo
|
||||||
land
|
land
|
||||||
landesspezifische
|
landesspezifische
|
||||||
Lead-Scanning
|
Lead
|
||||||
Leaflet-Kacheln
|
Leaflet
|
||||||
Linktext
|
Linktext
|
||||||
lit
|
lit
|
||||||
Log-ID
|
|
||||||
Logindaten
|
Logindaten
|
||||||
|
Lösch
|
||||||
|
loszulegen
|
||||||
|
Ltd
|
||||||
Macau
|
Macau
|
||||||
MapQuest-API-Key
|
|
||||||
max
|
max
|
||||||
Medien-ID
|
MariaDB
|
||||||
|
MapQuest
|
||||||
Melilla
|
Melilla
|
||||||
Mercado
|
Mercado
|
||||||
Merchandise
|
Merchandise
|
||||||
|
Meta
|
||||||
Metadaten
|
Metadaten
|
||||||
Meta-Eigenschaft
|
|
||||||
Meta-Eigenschaften
|
|
||||||
Meta-Informationen
|
|
||||||
Mi
|
Mi
|
||||||
Mifare
|
Mifare
|
||||||
min
|
Mitgliedschafts
|
||||||
Mitgliedschaftsdauer
|
Mitgliedschaftsdauer
|
||||||
Mitgliedschafts-Typ
|
min
|
||||||
Mitgliedschafts-Typen
|
|
||||||
Mo
|
Mo
|
||||||
MobilePay
|
MobilePay
|
||||||
MOTO
|
MOTO
|
||||||
MOTO-Zahlungen
|
|
||||||
Multibanco
|
Multibanco
|
||||||
Multiple-Choice-Fragen
|
|
||||||
MwSt
|
MwSt
|
||||||
MyBank
|
MyBank
|
||||||
name
|
name
|
||||||
NFC
|
NFC
|
||||||
NFC-basierte
|
|
||||||
NFC-Chip
|
|
||||||
NFC-Chips
|
|
||||||
NFC-Medien
|
|
||||||
NFC-Zahlungsmitteln
|
|
||||||
Nr
|
Nr
|
||||||
NREI
|
NREI
|
||||||
number
|
number
|
||||||
NXP
|
NXP
|
||||||
Objekt-IDs
|
|
||||||
Offline-Scan
|
|
||||||
OK
|
OK
|
||||||
Online-Banking
|
On
|
||||||
Onlinebanking-Zugangsdaten
|
Onlinebanking
|
||||||
Open
|
Open
|
||||||
OpenCage-API-Key
|
OpenCage
|
||||||
OpenID
|
OpenID
|
||||||
OpenStreetMap
|
OpenStreetMap
|
||||||
Opera
|
Opera
|
||||||
|
Output
|
||||||
OXXO
|
OXXO
|
||||||
Pago
|
|
||||||
parsen
|
parsen
|
||||||
|
Pago
|
||||||
Pay
|
Pay
|
||||||
PayPal
|
PayPal
|
||||||
PayPal-Account
|
PayPals
|
||||||
PayPal-Accounts
|
|
||||||
PayPal-Konto
|
|
||||||
PayPal-Kontos
|
|
||||||
PayPal-Sandbox
|
|
||||||
PayPal-Sandbox-Account
|
|
||||||
PayPal-Seite
|
|
||||||
PayPal-Verkaufs-ID
|
|
||||||
PayPal-Webhook
|
|
||||||
PayPal-Zahlung
|
|
||||||
PayPal-Zahlungen
|
|
||||||
PayPal-Zahlungs-ID
|
|
||||||
PayU
|
PayU
|
||||||
PCI-DSS-Formulare
|
PCI
|
||||||
Peppol-Netzwerk
|
|
||||||
Peppol-Teilnehmer-ID
|
|
||||||
Peppol-Teilnehmer-IDs
|
|
||||||
Personalisierung
|
Personalisierung
|
||||||
PKCE-Erweiterung
|
PEPPOL
|
||||||
|
PKCE
|
||||||
Platzhalterzeichen
|
Platzhalterzeichen
|
||||||
Play
|
Play
|
||||||
Plugin
|
Plugin
|
||||||
Plugins
|
Plugins
|
||||||
|
POS
|
||||||
Postfix
|
Postfix
|
||||||
|
PostgreSQL
|
||||||
PPRO
|
PPRO
|
||||||
prefix
|
prefix
|
||||||
Prefix
|
|
||||||
pretix
|
pretix
|
||||||
pretix-Apps
|
pretixdesk
|
||||||
pretix-Benutzerkennung
|
|
||||||
pretixdesk-Apps
|
|
||||||
pretixdroid
|
pretixdroid
|
||||||
pretix-Enterprise-Lizenz
|
pretixPOS
|
||||||
pretix-Enterprise-Plugins
|
|
||||||
pretix-Entwickler
|
|
||||||
pretix-Entwicklern
|
|
||||||
pretix-Feld
|
|
||||||
pretix-Installation
|
|
||||||
pretix-Konto
|
|
||||||
pretix-Kontos
|
|
||||||
pretix-Logo
|
|
||||||
pretix-Logos
|
|
||||||
pretix-Plugins
|
|
||||||
pretixPRINT
|
pretixPRINT
|
||||||
pretixPRINT-Version
|
|
||||||
pretixSCAN
|
pretixSCAN
|
||||||
pretix-Support
|
Professional
|
||||||
pretix-Team
|
|
||||||
pretix-Update
|
|
||||||
pretix-Version
|
|
||||||
pretix-Versionen
|
|
||||||
pretix-Widget
|
|
||||||
Produkt-ID
|
|
||||||
Produkt-Metadaten
|
|
||||||
Przelewy
|
Przelewy
|
||||||
pt
|
pt
|
||||||
px
|
px
|
||||||
QR-Code
|
Query
|
||||||
QR-Code-Bereich
|
QR
|
||||||
QR-Code-Geheimnis
|
|
||||||
QR-Code-Inhalt
|
|
||||||
QR-Code-Reader
|
|
||||||
QR-Codes
|
|
||||||
QR-Farbe
|
|
||||||
Query-Parameter
|
|
||||||
rabattiert
|
rabattiert
|
||||||
Rabattiert
|
|
||||||
Rabattierung
|
Rabattierung
|
||||||
Rechnungs-E-Mail
|
Reader
|
||||||
|
Rechnungs
|
||||||
Rechungsdatei
|
Rechungsdatei
|
||||||
Reddit
|
Reddit
|
||||||
Referer
|
Referer
|
||||||
|
Registrierungs
|
||||||
Registrierungsdatum
|
Registrierungsdatum
|
||||||
Registrierungs-Details
|
|
||||||
Registrierungsnummer
|
Registrierungsnummer
|
||||||
Registrierungsversuche
|
Registrierungsversuche
|
||||||
remote
|
remote
|
||||||
|
Renderer
|
||||||
Request
|
Request
|
||||||
Requests
|
Requests
|
||||||
Request-URL
|
|
||||||
Reservierungszeitraum
|
Reservierungszeitraum
|
||||||
reverse
|
reverse
|
||||||
Reverse
|
|
||||||
Reverse-Proxy
|
|
||||||
Revisionssicherheit
|
Revisionssicherheit
|
||||||
Revolut
|
Revolut
|
||||||
Revolut-App
|
|
||||||
rückabgewickelt
|
rückabgewickelt
|
||||||
|
Rundungsdifferenzen
|
||||||
Sa
|
Sa
|
||||||
|
Saalplan
|
||||||
Sammlungsstücken
|
Sammlungsstücken
|
||||||
SAQ
|
SAQ
|
||||||
SCA
|
SCA
|
||||||
Scan
|
Scan
|
||||||
Scanning-Apps
|
|
||||||
Scans
|
Scans
|
||||||
Scan-Terminals
|
Scanergebnis
|
||||||
Scan-Typ
|
Scanning
|
||||||
Scan-Zeitpunkt
|
|
||||||
schiefgeht
|
schiefgeht
|
||||||
schiefgelaufen
|
schiefgelaufen
|
||||||
Scope
|
Scope
|
||||||
@@ -378,37 +304,23 @@ SdI
|
|||||||
sechsstelligen
|
sechsstelligen
|
||||||
Secret
|
Secret
|
||||||
Security
|
Security
|
||||||
selbst-gehostete
|
Selling
|
||||||
SEPA-Bankeinzug
|
SEPA
|
||||||
SEPA-Bankkonto
|
Shirts
|
||||||
SEPA-Konten
|
|
||||||
SEPA-Lastschrift
|
|
||||||
SEPA-Lastschriften
|
|
||||||
SEPA-Mandat
|
|
||||||
SEPA-XML
|
|
||||||
Session-ID
|
|
||||||
Signaturverfahren
|
Signaturverfahren
|
||||||
Single-Sign-On
|
Sign
|
||||||
Single-Sign-On-Dienste
|
|
||||||
Single-Sign-On-Methode
|
|
||||||
Single-Sign-On-Provider
|
|
||||||
Sitzplanmoduls
|
Sitzplanmoduls
|
||||||
Sitzplatz-ID
|
Social
|
||||||
Sitzplatz-IDs
|
Sofort
|
||||||
Social-Media-Bild
|
SOFORT
|
||||||
Sorry
|
Sorry
|
||||||
Source
|
Source
|
||||||
Source-Codes
|
SPF
|
||||||
SPF-Eintrag
|
|
||||||
SSL
|
SSL
|
||||||
SSO
|
SSO
|
||||||
SSO-Client
|
|
||||||
SSO-Clients
|
|
||||||
SSO-Provider
|
|
||||||
STARTTLS
|
STARTTLS
|
||||||
Steuer-Aufteilungsliste
|
|
||||||
Steuerregel-ID
|
|
||||||
Steuerschuldnerschaft
|
Steuerschuldnerschaft
|
||||||
|
Store
|
||||||
Stornierungsanfrage
|
Stornierungsanfrage
|
||||||
Stornobedingungen
|
Stornobedingungen
|
||||||
Stornobeleg
|
Stornobeleg
|
||||||
@@ -418,75 +330,58 @@ Stornogebühren
|
|||||||
Stornos
|
Stornos
|
||||||
Strg
|
Strg
|
||||||
Stripe
|
Stripe
|
||||||
Stripe-Account
|
Stripes
|
||||||
Stripe-App
|
|
||||||
Stripe-Dashboard
|
|
||||||
Stripe-Konto
|
|
||||||
Stripe-Kontos
|
|
||||||
Stripe-Modul
|
|
||||||
Stripe-Support
|
|
||||||
Stripe-Test-API
|
|
||||||
Strong
|
Strong
|
||||||
Swish
|
Swish
|
||||||
|
Synchronisations
|
||||||
systemweiten
|
systemweiten
|
||||||
Tab
|
Tab
|
||||||
tag
|
tag
|
||||||
Teammitglied
|
Teammitglied
|
||||||
Teamname
|
Teamname
|
||||||
Teilnehmer-Badges
|
|
||||||
Telephone
|
Telephone
|
||||||
Terminal-ID
|
|
||||||
Termin-ID
|
|
||||||
Ticketing
|
Ticketing
|
||||||
Ticketing-Firma
|
Timeout
|
||||||
Ticket-Output
|
To
|
||||||
Ticket-QR-Code
|
Tokengenerator
|
||||||
|
Toolbar
|
||||||
TODO
|
TODO
|
||||||
To-Do-Liste
|
|
||||||
TOTP
|
TOTP
|
||||||
Trace-Nummer
|
Trace
|
||||||
Tracking
|
Tracking
|
||||||
transaktionale
|
transaktionale
|
||||||
Trustly
|
Trustly
|
||||||
T-Shirts
|
Turnover
|
||||||
Turnover-Nummer
|
|
||||||
TWINT
|
TWINT
|
||||||
|
txt
|
||||||
überbuchen
|
überbuchen
|
||||||
überbucht
|
überbucht
|
||||||
überbuchten
|
überbuchten
|
||||||
überzahlt
|
überzahlt
|
||||||
Überzahlt
|
|
||||||
ÜBERZAHLT
|
ÜBERZAHLT
|
||||||
überzahlte
|
überzahlte
|
||||||
Überzahlte
|
|
||||||
Überzahlten
|
|
||||||
uhrzeit
|
uhrzeit
|
||||||
UID
|
UID
|
||||||
UID-Basis
|
|
||||||
UID-Schutzfunktion
|
|
||||||
Ultralight
|
Ultralight
|
||||||
umzubuchen
|
|
||||||
ungespeicherte
|
ungespeicherte
|
||||||
Unkategorisiert
|
unkategorisiert
|
||||||
Unkategorisierte
|
Unkategorisierte
|
||||||
unlöschbar
|
unlöschbar
|
||||||
unlöschbaren
|
unlöschbaren
|
||||||
untenstehende
|
untenstehende
|
||||||
untenstehenden
|
untenstehenden
|
||||||
Unterzahlt
|
unterzahlt
|
||||||
UNTERZAHLT
|
UNTERZAHLT
|
||||||
unzugeordnete
|
unzugeordnete
|
||||||
Unzugeordnete
|
|
||||||
unzugeordneten
|
unzugeordneten
|
||||||
|
umzubuchen
|
||||||
URIs
|
URIs
|
||||||
Ursprüngl
|
Ursprüngl
|
||||||
USt
|
USt
|
||||||
USt-ID
|
Überweisungs
|
||||||
USt-ID-Nr
|
Überzahlten
|
||||||
USt-ID-Nummer
|
|
||||||
Validierung
|
Validierung
|
||||||
Validierungsregeln
|
Validierungsregeln
|
||||||
Varianten-ID
|
|
||||||
Venmo
|
Venmo
|
||||||
Veranstalterdomain
|
Veranstalterdomain
|
||||||
Veranstaltereinstellungen
|
Veranstaltereinstellungen
|
||||||
@@ -499,50 +394,39 @@ Veranstalterseite
|
|||||||
Veranstalterübersicht
|
Veranstalterübersicht
|
||||||
veranstalterweiten
|
veranstalterweiten
|
||||||
Veranstaltungs
|
Veranstaltungs
|
||||||
Veranstaltungs-Metadaten
|
Veranstalterdomain
|
||||||
veranstaltungsweiten
|
veranstaltungsweiten
|
||||||
Verfügbarkeitsberechnung
|
Verfügbarkeitsberechnung
|
||||||
Verfügbarkeitsstatus
|
Verfügbarkeitsstatus
|
||||||
Verkaufs-ID
|
|
||||||
Verkkopankki
|
Verkkopankki
|
||||||
Veröffentlichbarer
|
Veröffentlichbarer
|
||||||
Verwendungszweck-Postfix
|
VIP
|
||||||
VIP-Bereiches
|
|
||||||
Warenkorb-ID
|
|
||||||
Warenkorb-Timeout
|
|
||||||
WebAuthn
|
WebAuthn
|
||||||
WebAuthn-Gerät
|
|
||||||
WebAuthn-kompatibler
|
|
||||||
WebAuthn-Token
|
|
||||||
WebAuthn-Unterstützung
|
|
||||||
Webhook
|
Webhook
|
||||||
Webhooks
|
Webhooks
|
||||||
Webhook-Wiederholungsaufträge
|
Weiterleitungs
|
||||||
WeChat
|
WeChat
|
||||||
WeChat-Zahlung
|
|
||||||
Weiterleitungs-URIs
|
|
||||||
Weiterleitungs-URL
|
|
||||||
Weiterleitungs-URLs
|
|
||||||
WhatsApp
|
WhatsApp
|
||||||
Widget
|
Widget
|
||||||
Widget-Code
|
|
||||||
xlsx
|
xlsx
|
||||||
XXX
|
XXX
|
||||||
XXXX
|
XXXX
|
||||||
|
XXXXX
|
||||||
Yubikey
|
Yubikey
|
||||||
Zahlungs
|
Zahlungs
|
||||||
Zahlungsbestätigungs-E-Mail
|
Zahlungsbestätigungs
|
||||||
Zahlungserinnerungs-E-Mail
|
Zahlungserinnerungs
|
||||||
Zahlungs-ID
|
zahlungspflichtig
|
||||||
Zahlungspflichtig
|
Zahlungsplugins
|
||||||
Zehnerkarten
|
Zehnerkarten
|
||||||
Zeitbasiert
|
zeitbasiert
|
||||||
Zeitslotbuchung
|
Zeitslotbuchung
|
||||||
Zimpler
|
Zimpler
|
||||||
ZIP-Datei
|
ZIP
|
||||||
zubuchbaren
|
zubuchbaren
|
||||||
|
zurückbuchen
|
||||||
zurückgeleitet
|
zurückgeleitet
|
||||||
zurückwechseln
|
zurückwechseln
|
||||||
zutrittsberechtigt
|
zutrittsberechtigt
|
||||||
ZVT-Terminal
|
|
||||||
zzgl
|
zzgl
|
||||||
|
ZVT
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-30 11:07+0000\n"
|
"PO-Revision-Date: 2025-05-30 11:07+0000\n"
|
||||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||||
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
|
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
|
||||||
@@ -345,12 +345,12 @@ msgstr "Nein"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "schließen"
|
msgstr "schließen"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "erforderlich"
|
msgstr "erforderlich"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -358,13 +358,13 @@ msgstr ""
|
|||||||
"Deine Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann "
|
"Deine Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann "
|
||||||
"dies einige Minuten dauern."
|
"dies einige Minuten dauern."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Deine Anfrage befindet sich beim Server in der Warteschlange und wird bald "
|
"Deine Anfrage befindet sich beim Server in der Warteschlange und wird bald "
|
||||||
"verarbeitet."
|
"verarbeitet."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -374,14 +374,14 @@ msgstr ""
|
|||||||
"verarbeitet. Wenn dies länger als zwei Minuten dauert, kontaktiere uns bitte "
|
"verarbeitet. Wenn dies länger als zwei Minuten dauert, kontaktiere uns bitte "
|
||||||
"oder gehe in deinem Browser einen Schritt zurück und versuche es erneut."
|
"oder gehe in deinem Browser einen Schritt zurück und versuche es erneut."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Ein Fehler vom Typ {code} ist aufgetreten."
|
msgstr "Ein Fehler vom Typ {code} ist aufgetreten."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -389,12 +389,12 @@ msgstr ""
|
|||||||
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
|
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
|
||||||
"Letzter Fehlercode: {code}"
|
"Letzter Fehlercode: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
|
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -402,11 +402,11 @@ msgstr ""
|
|||||||
"Wir können den Server aktuell nicht erreichen. Bitte versuche es noch "
|
"Wir können den Server aktuell nicht erreichen. Bitte versuche es noch "
|
||||||
"einmal. Fehlercode: {code}"
|
"einmal. Fehlercode: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Wir verarbeiten deine Anfrage …"
|
msgstr "Wir verarbeiten deine Anfrage …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -416,12 +416,12 @@ msgstr ""
|
|||||||
"dauert, prüfe bitte deine Internetverbindung. Danach kannst du diese Seite "
|
"dauert, prüfe bitte deine Internetverbindung. Danach kannst du diese Seite "
|
||||||
"neu laden und es erneut versuchen."
|
"neu laden und es erneut versuchen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wenn dies länger als einige Minuten dauert, kontaktieren Sie uns bitte."
|
"Wenn dies länger als einige Minuten dauert, kontaktieren Sie uns bitte."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
@@ -771,7 +771,7 @@ msgstr "Du erhältst %(currency)s %(amount)s zurück"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Bitte gib den Betrag ein, den der Veranstalter einbehalten darf."
|
msgstr "Bitte gib den Betrag ein, den der Veranstalter einbehalten darf."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Deine lokale Zeit:"
|
msgstr "Deine lokale Zeit:"
|
||||||
|
|
||||||
|
|||||||
@@ -1,143 +1,125 @@
|
|||||||
ABGEKÜNDIGT
|
2FA
|
||||||
ABN
|
ABN
|
||||||
|
AES
|
||||||
Absenderadresse
|
Absenderadresse
|
||||||
Absenderinformation
|
Absenderinformation
|
||||||
Absendername
|
Absendername
|
||||||
|
ABGEKÜNDIGT
|
||||||
Admin
|
Admin
|
||||||
Adminbereich
|
Adminbereich
|
||||||
Admin-Modus
|
|
||||||
Admin-Sitzung
|
|
||||||
Admin-Sitzungen
|
|
||||||
AES
|
|
||||||
Affirm
|
Affirm
|
||||||
AGPL
|
AGPL
|
||||||
AGPLv
|
AGPLv
|
||||||
Alipay
|
Alipay
|
||||||
and
|
and
|
||||||
API-Meta-Informationen
|
|
||||||
APM
|
|
||||||
App
|
App
|
||||||
App-Gebühr
|
|
||||||
ApplePay
|
ApplePay
|
||||||
Apps
|
Apps
|
||||||
|
APM
|
||||||
as
|
as
|
||||||
Aufbuchungen
|
Aufbuchungen
|
||||||
aufeinanderfolgenden
|
aufeinanderfolgenden
|
||||||
|
Aufteilungsliste
|
||||||
aufzubuchen
|
aufzubuchen
|
||||||
auschecken
|
auschecken
|
||||||
Ausgangsscan
|
Ausgangsscan
|
||||||
Ausgangsscans
|
Ausgangsscans
|
||||||
ausgecheckt
|
|
||||||
ausgeklappt
|
ausgeklappt
|
||||||
|
ausgecheckt
|
||||||
auswahl
|
auswahl
|
||||||
|
Auth
|
||||||
Authentication
|
Authentication
|
||||||
Authenticator-App
|
Authenticator
|
||||||
|
Authentifizierungsmechanismus
|
||||||
|
Autorisierungs
|
||||||
Autorisierungscode
|
Autorisierungscode
|
||||||
Autorisierungs-Endpunktes
|
Backend
|
||||||
Badge
|
Badge
|
||||||
Badge-Druck
|
|
||||||
Badge-Layout
|
|
||||||
Badge-Layouts
|
|
||||||
Badges
|
Badges
|
||||||
Bancontact
|
Bancontact
|
||||||
Bank-App
|
|
||||||
BankID
|
BankID
|
||||||
Banking-App
|
Banking
|
||||||
|
barcodes
|
||||||
Baskisch
|
Baskisch
|
||||||
Bcc
|
Bcc
|
||||||
BCC-Adresse
|
BCC
|
||||||
Bcc-Kopie
|
|
||||||
Beispielevent
|
Beispielevent
|
||||||
Beispielproduktvariantenbeschreibung
|
Beispielproduktvariantenbeschreibung
|
||||||
Belarus
|
Belarus
|
||||||
|
Benachrichtigungs
|
||||||
Benachrichtigungsart
|
Benachrichtigungsart
|
||||||
Benachrichtigungsarten
|
Benachrichtigungsarten
|
||||||
Benachrichtigungseinstellungen
|
Benachrichtigungseinstellungen
|
||||||
Benachrichtigungs-Einstellungen
|
Berechtigungs
|
||||||
Benachrichtigungs-E-Mail
|
Bestätigungs
|
||||||
Benutzer-ID-Feld
|
Bestellbestätigungs
|
||||||
Benutzer-ID-Felds
|
|
||||||
Bestätigungs-E-Mail
|
|
||||||
Bestellbestätigungs-E-Mail
|
|
||||||
Bestellbestätigungs-E-Mails
|
|
||||||
Bestellungsänderungen
|
Bestellungsänderungen
|
||||||
Bestellungs-Synchronisation
|
Bestellungsstatus
|
||||||
Bestellungs-Synchronisierung
|
Bestellungs
|
||||||
bez
|
bez
|
||||||
BezahlCode
|
BezahlCode
|
||||||
|
Bezahlmethode
|
||||||
Blackberry
|
Blackberry
|
||||||
BLIK
|
BLIK
|
||||||
BN-Code
|
Blogpost
|
||||||
|
BN
|
||||||
|
Branding
|
||||||
|
Browsereinstellungen
|
||||||
|
BSD
|
||||||
|
bspw
|
||||||
Bokmål
|
Bokmål
|
||||||
Boleto
|
Boleto
|
||||||
Branding-Informationen
|
Buchhaltungs
|
||||||
Browsereinstellungen
|
|
||||||
BSD-Lizenz
|
|
||||||
bspw
|
|
||||||
Bundles
|
Bundles
|
||||||
Butterfly-Badge
|
Butterfly
|
||||||
bzw
|
bzw
|
||||||
ca
|
ca
|
||||||
Cc
|
|
||||||
Ceuta
|
Ceuta
|
||||||
|
Cc
|
||||||
chardet
|
chardet
|
||||||
charge
|
charge
|
||||||
Charge-ID
|
|
||||||
Checkbox
|
Checkbox
|
||||||
Check-in-App
|
|
||||||
Check-in-Apps
|
|
||||||
Check-in-QR-Code
|
|
||||||
Checkout
|
Checkout
|
||||||
Chrome
|
Chrome
|
||||||
Client-ID
|
Choice
|
||||||
Client-Secret
|
Community
|
||||||
CODE.txt
|
|
||||||
Community-Übersetzungen
|
|
||||||
CONFIRM
|
CONFIRM
|
||||||
Connect
|
Connect
|
||||||
Cookie-Consent-Management
|
Consent
|
||||||
Cookie-Consent-Mechanismus
|
|
||||||
Copyleft
|
Copyleft
|
||||||
Cronjob
|
Cronjob
|
||||||
Cronjob-Komponente
|
Cross
|
||||||
Cross-Selling-Bedingung
|
|
||||||
Cross-Selling-Kategorie
|
|
||||||
Cross-Selling-Kategorien
|
|
||||||
Cross-Selling-Schritt
|
|
||||||
csv
|
csv
|
||||||
CSV
|
|
||||||
CSV-Datei
|
|
||||||
CSV-Dateien
|
|
||||||
CSV-Eingabe
|
|
||||||
CSV-Eingabedaten
|
|
||||||
CSV-Import
|
|
||||||
CSV-Input
|
|
||||||
CSV-Lesen
|
|
||||||
CSV-Spalte
|
|
||||||
Customer
|
Customer
|
||||||
CZK
|
CZK
|
||||||
Debug-Modus
|
Dashboard
|
||||||
|
Datensynchronisation
|
||||||
|
Debug
|
||||||
dekodi
|
dekodi
|
||||||
Desktop-Apps
|
deliverability
|
||||||
|
DNS
|
||||||
Di
|
Di
|
||||||
Do
|
Do
|
||||||
|
Doe
|
||||||
Downloadformat
|
Downloadformat
|
||||||
|
Downloadseite
|
||||||
Dr
|
Dr
|
||||||
Drag-and-Drop-Interfaces
|
Drag
|
||||||
|
Droid
|
||||||
|
Drop
|
||||||
|
DSS
|
||||||
Edge
|
Edge
|
||||||
Eingangsscan
|
Eingangsscan
|
||||||
Einlassbuchung
|
Einlassbuchung
|
||||||
Einlassdatum
|
Einlassdatum
|
||||||
Einlasskontrolle
|
Einlasskontrolle
|
||||||
|
Einlassuhrzeita
|
||||||
einzuchecken
|
einzuchecken
|
||||||
email
|
email
|
||||||
E-Mail-Renderer
|
Enterprise
|
||||||
Enterprise-Lizenz
|
EPC
|
||||||
Enterprise-Lizenzen
|
|
||||||
Enterprise-Plugin
|
|
||||||
Enterprise-Plugins
|
|
||||||
eps
|
|
||||||
EPS
|
EPS
|
||||||
|
eps
|
||||||
Erstattungsbetrag
|
Erstattungsbetrag
|
||||||
Erstattungsliste
|
Erstattungsliste
|
||||||
Erstattungsmethode
|
Erstattungsmethode
|
||||||
@@ -145,231 +127,175 @@ Erstattungsoptionen
|
|||||||
Erstattungsstatus
|
Erstattungsstatus
|
||||||
Erstattungsweg
|
Erstattungsweg
|
||||||
erstmalig
|
erstmalig
|
||||||
|
Erweiterungs
|
||||||
etc
|
etc
|
||||||
EU-USt-ID-Nr
|
|
||||||
Event
|
Event
|
||||||
Event-Eigenschaft
|
|
||||||
Eventeingang
|
Eventeingang
|
||||||
Event-Erstellung
|
Eventfirma
|
||||||
Event-Setup-Tool
|
|
||||||
Event-Ticketing-Software
|
|
||||||
Event-Ticketshop
|
|
||||||
Event-Übersicht
|
|
||||||
Event-Website
|
|
||||||
evtl
|
evtl
|
||||||
Explorer
|
Explorer
|
||||||
FA
|
FA
|
||||||
Favicon
|
Favicon
|
||||||
F-Droid
|
|
||||||
Footer
|
Footer
|
||||||
Footer-Link
|
|
||||||
Footer-Text
|
|
||||||
Galicisch
|
Galicisch
|
||||||
Geocoding
|
gehostete
|
||||||
Geocoding-Daten
|
geht's
|
||||||
Geo-Koordinaten
|
GENEXAMPLE
|
||||||
Geräte-ID
|
Geo
|
||||||
|
geocoding
|
||||||
gescannt
|
gescannt
|
||||||
ggf
|
ggf
|
||||||
Ggf
|
GiroCode
|
||||||
giropay
|
giropay
|
||||||
|
GPL
|
||||||
Grants
|
Grants
|
||||||
Gruppierungsspalte
|
|
||||||
Gruppierungswert
|
Gruppierungswert
|
||||||
|
Gruppierungsspalte
|
||||||
Guide
|
Guide
|
||||||
Gutscheineinlöser
|
Gutscheineinlöser
|
||||||
Händler-ID
|
|
||||||
Händler-PayPal-Konto
|
|
||||||
Hardware-Tokengenerator
|
|
||||||
herunterscrollen
|
herunterscrollen
|
||||||
hochlädst
|
hochlädst
|
||||||
HTML-E-Mail-Renderer
|
|
||||||
HTTPS
|
HTTPS
|
||||||
HTTPS-Verbindungen
|
IBAN
|
||||||
HTTPS-Website
|
|
||||||
IBANs
|
IBANs
|
||||||
iCal
|
iCal
|
||||||
ics-Kalenderdatei
|
ics
|
||||||
ID
|
ID
|
||||||
iDEAL
|
iDEAL
|
||||||
IDs
|
IDs
|
||||||
Inc
|
Inc
|
||||||
inkl
|
inkl
|
||||||
innen-Badges
|
|
||||||
innenname
|
innenname
|
||||||
innennamen
|
innennamen
|
||||||
innergemeinschaftliche
|
innergemeinschaftliche
|
||||||
Innergemeinschaftlicher
|
Innergemeinschaftlicher
|
||||||
Installations-ID
|
Input
|
||||||
Integrationen
|
Installations
|
||||||
|
integrationen
|
||||||
|
intra
|
||||||
|
INV
|
||||||
invalidieren
|
invalidieren
|
||||||
invalidiert
|
invalidiert
|
||||||
iOS
|
|
||||||
ISU
|
ISU
|
||||||
|
iOS
|
||||||
Itaú
|
Itaú
|
||||||
iTunes
|
iTunes
|
||||||
JavaScript
|
JavaScript
|
||||||
JSON-Datei
|
JSON
|
||||||
Kategoriebeschreibung
|
Kategoriebeschreibung
|
||||||
|
Key
|
||||||
Klarna
|
Klarna
|
||||||
Kombitickets
|
Kombitickets
|
||||||
|
Kompatibilitätsmodus
|
||||||
|
Konfigurations
|
||||||
|
Kosovo
|
||||||
land
|
land
|
||||||
landesspezifische
|
landesspezifische
|
||||||
Lead-Scanning
|
Lead
|
||||||
Leaflet-Kacheln
|
Leaflet
|
||||||
Linktext
|
Linktext
|
||||||
lit
|
lit
|
||||||
Log-ID
|
|
||||||
Logindaten
|
Logindaten
|
||||||
|
Lösch
|
||||||
|
loszulegen
|
||||||
|
Ltd
|
||||||
Macau
|
Macau
|
||||||
MapQuest-API-Key
|
|
||||||
max
|
max
|
||||||
Medien-ID
|
MariaDB
|
||||||
|
MapQuest
|
||||||
Melilla
|
Melilla
|
||||||
Mercado
|
Mercado
|
||||||
Merchandise
|
Merchandise
|
||||||
|
Meta
|
||||||
Metadaten
|
Metadaten
|
||||||
Meta-Eigenschaft
|
|
||||||
Meta-Eigenschaften
|
|
||||||
Meta-Informationen
|
|
||||||
Mi
|
Mi
|
||||||
Mifare
|
Mifare
|
||||||
min
|
Mitgliedschafts
|
||||||
Mitgliedschaftsdauer
|
Mitgliedschaftsdauer
|
||||||
Mitgliedschafts-Typ
|
min
|
||||||
Mitgliedschafts-Typen
|
|
||||||
Mo
|
Mo
|
||||||
MobilePay
|
MobilePay
|
||||||
MOTO
|
MOTO
|
||||||
MOTO-Zahlungen
|
|
||||||
Multibanco
|
Multibanco
|
||||||
Multiple-Choice-Fragen
|
|
||||||
MwSt
|
MwSt
|
||||||
MyBank
|
MyBank
|
||||||
name
|
name
|
||||||
NFC
|
NFC
|
||||||
NFC-basierte
|
|
||||||
NFC-Chip
|
|
||||||
NFC-Chips
|
|
||||||
NFC-Medien
|
|
||||||
NFC-Zahlungsmitteln
|
|
||||||
Nr
|
Nr
|
||||||
NREI
|
NREI
|
||||||
number
|
number
|
||||||
NXP
|
NXP
|
||||||
Objekt-IDs
|
|
||||||
Offline-Scan
|
|
||||||
OK
|
OK
|
||||||
Online-Banking
|
On
|
||||||
Onlinebanking-Zugangsdaten
|
Onlinebanking
|
||||||
Open
|
Open
|
||||||
OpenCage-API-Key
|
OpenCage
|
||||||
OpenID
|
OpenID
|
||||||
OpenStreetMap
|
OpenStreetMap
|
||||||
Opera
|
Opera
|
||||||
|
Output
|
||||||
OXXO
|
OXXO
|
||||||
Pago
|
|
||||||
parsen
|
parsen
|
||||||
|
Pago
|
||||||
Pay
|
Pay
|
||||||
PayPal
|
PayPal
|
||||||
PayPal-Account
|
PayPals
|
||||||
PayPal-Accounts
|
|
||||||
PayPal-Konto
|
|
||||||
PayPal-Kontos
|
|
||||||
PayPal-Sandbox
|
|
||||||
PayPal-Sandbox-Account
|
|
||||||
PayPal-Seite
|
|
||||||
PayPal-Verkaufs-ID
|
|
||||||
PayPal-Webhook
|
|
||||||
PayPal-Zahlung
|
|
||||||
PayPal-Zahlungen
|
|
||||||
PayPal-Zahlungs-ID
|
|
||||||
PayU
|
PayU
|
||||||
PCI-DSS-Formulare
|
PCI
|
||||||
Peppol-Netzwerk
|
|
||||||
Peppol-Teilnehmer-ID
|
|
||||||
Peppol-Teilnehmer-IDs
|
|
||||||
Personalisierung
|
Personalisierung
|
||||||
PKCE-Erweiterung
|
PEPPOL
|
||||||
|
PKCE
|
||||||
Platzhalterzeichen
|
Platzhalterzeichen
|
||||||
Play
|
Play
|
||||||
Plugin
|
Plugin
|
||||||
Plugins
|
Plugins
|
||||||
|
POS
|
||||||
Postfix
|
Postfix
|
||||||
|
PostgreSQL
|
||||||
PPRO
|
PPRO
|
||||||
prefix
|
prefix
|
||||||
Prefix
|
|
||||||
pretix
|
pretix
|
||||||
pretix-Apps
|
pretixdesk
|
||||||
pretix-Benutzerkennung
|
|
||||||
pretixdesk-Apps
|
|
||||||
pretixdroid
|
pretixdroid
|
||||||
pretix-Enterprise-Lizenz
|
pretixPOS
|
||||||
pretix-Enterprise-Plugins
|
|
||||||
pretix-Entwickler
|
|
||||||
pretix-Entwicklern
|
|
||||||
pretix-Feld
|
|
||||||
pretix-Installation
|
|
||||||
pretix-Konto
|
|
||||||
pretix-Kontos
|
|
||||||
pretix-Logo
|
|
||||||
pretix-Logos
|
|
||||||
pretix-Plugins
|
|
||||||
pretixPRINT
|
pretixPRINT
|
||||||
pretixPRINT-Version
|
|
||||||
pretixSCAN
|
pretixSCAN
|
||||||
pretix-Support
|
Professional
|
||||||
pretix-Team
|
|
||||||
pretix-Update
|
|
||||||
pretix-Version
|
|
||||||
pretix-Versionen
|
|
||||||
pretix-Widget
|
|
||||||
Produkt-ID
|
|
||||||
Produkt-Metadaten
|
|
||||||
Przelewy
|
Przelewy
|
||||||
pt
|
pt
|
||||||
px
|
px
|
||||||
QR-Code
|
Query
|
||||||
QR-Code-Bereich
|
QR
|
||||||
QR-Code-Geheimnis
|
|
||||||
QR-Code-Inhalt
|
|
||||||
QR-Code-Reader
|
|
||||||
QR-Codes
|
|
||||||
QR-Farbe
|
|
||||||
Query-Parameter
|
|
||||||
rabattiert
|
rabattiert
|
||||||
Rabattiert
|
|
||||||
Rabattierung
|
Rabattierung
|
||||||
Rechnungs-E-Mail
|
Reader
|
||||||
|
Rechnungs
|
||||||
Rechungsdatei
|
Rechungsdatei
|
||||||
Reddit
|
Reddit
|
||||||
Referer
|
Referer
|
||||||
|
Registrierungs
|
||||||
Registrierungsdatum
|
Registrierungsdatum
|
||||||
Registrierungs-Details
|
|
||||||
Registrierungsnummer
|
Registrierungsnummer
|
||||||
Registrierungsversuche
|
Registrierungsversuche
|
||||||
remote
|
remote
|
||||||
|
Renderer
|
||||||
Request
|
Request
|
||||||
Requests
|
Requests
|
||||||
Request-URL
|
|
||||||
Reservierungszeitraum
|
Reservierungszeitraum
|
||||||
reverse
|
reverse
|
||||||
Reverse
|
|
||||||
Reverse-Proxy
|
|
||||||
Revisionssicherheit
|
Revisionssicherheit
|
||||||
Revolut
|
Revolut
|
||||||
Revolut-App
|
|
||||||
rückabgewickelt
|
rückabgewickelt
|
||||||
|
Rundungsdifferenzen
|
||||||
Sa
|
Sa
|
||||||
|
Saalplan
|
||||||
Sammlungsstücken
|
Sammlungsstücken
|
||||||
SAQ
|
SAQ
|
||||||
SCA
|
SCA
|
||||||
Scan
|
Scan
|
||||||
Scanning-Apps
|
|
||||||
Scans
|
Scans
|
||||||
Scan-Terminals
|
Scanergebnis
|
||||||
Scan-Typ
|
Scanning
|
||||||
Scan-Zeitpunkt
|
|
||||||
schiefgeht
|
schiefgeht
|
||||||
schiefgelaufen
|
schiefgelaufen
|
||||||
Scope
|
Scope
|
||||||
@@ -378,37 +304,23 @@ SdI
|
|||||||
sechsstelligen
|
sechsstelligen
|
||||||
Secret
|
Secret
|
||||||
Security
|
Security
|
||||||
selbst-gehostete
|
Selling
|
||||||
SEPA-Bankeinzug
|
SEPA
|
||||||
SEPA-Bankkonto
|
Shirts
|
||||||
SEPA-Konten
|
|
||||||
SEPA-Lastschrift
|
|
||||||
SEPA-Lastschriften
|
|
||||||
SEPA-Mandat
|
|
||||||
SEPA-XML
|
|
||||||
Session-ID
|
|
||||||
Signaturverfahren
|
Signaturverfahren
|
||||||
Single-Sign-On
|
Sign
|
||||||
Single-Sign-On-Dienste
|
|
||||||
Single-Sign-On-Methode
|
|
||||||
Single-Sign-On-Provider
|
|
||||||
Sitzplanmoduls
|
Sitzplanmoduls
|
||||||
Sitzplatz-ID
|
Social
|
||||||
Sitzplatz-IDs
|
Sofort
|
||||||
Social-Media-Bild
|
SOFORT
|
||||||
Sorry
|
Sorry
|
||||||
Source
|
Source
|
||||||
Source-Codes
|
SPF
|
||||||
SPF-Eintrag
|
|
||||||
SSL
|
SSL
|
||||||
SSO
|
SSO
|
||||||
SSO-Client
|
|
||||||
SSO-Clients
|
|
||||||
SSO-Provider
|
|
||||||
STARTTLS
|
STARTTLS
|
||||||
Steuer-Aufteilungsliste
|
|
||||||
Steuerregel-ID
|
|
||||||
Steuerschuldnerschaft
|
Steuerschuldnerschaft
|
||||||
|
Store
|
||||||
Stornierungsanfrage
|
Stornierungsanfrage
|
||||||
Stornobedingungen
|
Stornobedingungen
|
||||||
Stornobeleg
|
Stornobeleg
|
||||||
@@ -418,75 +330,58 @@ Stornogebühren
|
|||||||
Stornos
|
Stornos
|
||||||
Strg
|
Strg
|
||||||
Stripe
|
Stripe
|
||||||
Stripe-Account
|
Stripes
|
||||||
Stripe-App
|
|
||||||
Stripe-Dashboard
|
|
||||||
Stripe-Konto
|
|
||||||
Stripe-Kontos
|
|
||||||
Stripe-Modul
|
|
||||||
Stripe-Support
|
|
||||||
Stripe-Test-API
|
|
||||||
Strong
|
Strong
|
||||||
Swish
|
Swish
|
||||||
|
Synchronisations
|
||||||
systemweiten
|
systemweiten
|
||||||
Tab
|
Tab
|
||||||
tag
|
tag
|
||||||
Teammitglied
|
Teammitglied
|
||||||
Teamname
|
Teamname
|
||||||
Teilnehmer-Badges
|
|
||||||
Telephone
|
Telephone
|
||||||
Terminal-ID
|
|
||||||
Termin-ID
|
|
||||||
Ticketing
|
Ticketing
|
||||||
Ticketing-Firma
|
Timeout
|
||||||
Ticket-Output
|
To
|
||||||
Ticket-QR-Code
|
Tokengenerator
|
||||||
|
Toolbar
|
||||||
TODO
|
TODO
|
||||||
To-Do-Liste
|
|
||||||
TOTP
|
TOTP
|
||||||
Trace-Nummer
|
Trace
|
||||||
Tracking
|
Tracking
|
||||||
transaktionale
|
transaktionale
|
||||||
Trustly
|
Trustly
|
||||||
T-Shirts
|
Turnover
|
||||||
Turnover-Nummer
|
|
||||||
TWINT
|
TWINT
|
||||||
|
txt
|
||||||
überbuchen
|
überbuchen
|
||||||
überbucht
|
überbucht
|
||||||
überbuchten
|
überbuchten
|
||||||
überzahlt
|
überzahlt
|
||||||
Überzahlt
|
|
||||||
ÜBERZAHLT
|
ÜBERZAHLT
|
||||||
überzahlte
|
überzahlte
|
||||||
Überzahlte
|
|
||||||
Überzahlten
|
|
||||||
uhrzeit
|
uhrzeit
|
||||||
UID
|
UID
|
||||||
UID-Basis
|
|
||||||
UID-Schutzfunktion
|
|
||||||
Ultralight
|
Ultralight
|
||||||
umzubuchen
|
|
||||||
ungespeicherte
|
ungespeicherte
|
||||||
Unkategorisiert
|
unkategorisiert
|
||||||
Unkategorisierte
|
Unkategorisierte
|
||||||
unlöschbar
|
unlöschbar
|
||||||
unlöschbaren
|
unlöschbaren
|
||||||
untenstehende
|
untenstehende
|
||||||
untenstehenden
|
untenstehenden
|
||||||
Unterzahlt
|
unterzahlt
|
||||||
UNTERZAHLT
|
UNTERZAHLT
|
||||||
unzugeordnete
|
unzugeordnete
|
||||||
Unzugeordnete
|
|
||||||
unzugeordneten
|
unzugeordneten
|
||||||
|
umzubuchen
|
||||||
URIs
|
URIs
|
||||||
Ursprüngl
|
Ursprüngl
|
||||||
USt
|
USt
|
||||||
USt-ID
|
Überweisungs
|
||||||
USt-ID-Nr
|
Überzahlten
|
||||||
USt-ID-Nummer
|
|
||||||
Validierung
|
Validierung
|
||||||
Validierungsregeln
|
Validierungsregeln
|
||||||
Varianten-ID
|
|
||||||
Venmo
|
Venmo
|
||||||
Veranstalterdomain
|
Veranstalterdomain
|
||||||
Veranstaltereinstellungen
|
Veranstaltereinstellungen
|
||||||
@@ -499,50 +394,39 @@ Veranstalterseite
|
|||||||
Veranstalterübersicht
|
Veranstalterübersicht
|
||||||
veranstalterweiten
|
veranstalterweiten
|
||||||
Veranstaltungs
|
Veranstaltungs
|
||||||
Veranstaltungs-Metadaten
|
Veranstalterdomain
|
||||||
veranstaltungsweiten
|
veranstaltungsweiten
|
||||||
Verfügbarkeitsberechnung
|
Verfügbarkeitsberechnung
|
||||||
Verfügbarkeitsstatus
|
Verfügbarkeitsstatus
|
||||||
Verkaufs-ID
|
|
||||||
Verkkopankki
|
Verkkopankki
|
||||||
Veröffentlichbarer
|
Veröffentlichbarer
|
||||||
Verwendungszweck-Postfix
|
VIP
|
||||||
VIP-Bereiches
|
|
||||||
Warenkorb-ID
|
|
||||||
Warenkorb-Timeout
|
|
||||||
WebAuthn
|
WebAuthn
|
||||||
WebAuthn-Gerät
|
|
||||||
WebAuthn-kompatibler
|
|
||||||
WebAuthn-Token
|
|
||||||
WebAuthn-Unterstützung
|
|
||||||
Webhook
|
Webhook
|
||||||
Webhooks
|
Webhooks
|
||||||
Webhook-Wiederholungsaufträge
|
Weiterleitungs
|
||||||
WeChat
|
WeChat
|
||||||
WeChat-Zahlung
|
|
||||||
Weiterleitungs-URIs
|
|
||||||
Weiterleitungs-URL
|
|
||||||
Weiterleitungs-URLs
|
|
||||||
WhatsApp
|
WhatsApp
|
||||||
Widget
|
Widget
|
||||||
Widget-Code
|
|
||||||
xlsx
|
xlsx
|
||||||
XXX
|
XXX
|
||||||
XXXX
|
XXXX
|
||||||
|
XXXXX
|
||||||
Yubikey
|
Yubikey
|
||||||
Zahlungs
|
Zahlungs
|
||||||
Zahlungsbestätigungs-E-Mail
|
Zahlungsbestätigungs
|
||||||
Zahlungserinnerungs-E-Mail
|
Zahlungserinnerungs
|
||||||
Zahlungs-ID
|
zahlungspflichtig
|
||||||
Zahlungspflichtig
|
Zahlungsplugins
|
||||||
Zehnerkarten
|
Zehnerkarten
|
||||||
Zeitbasiert
|
zeitbasiert
|
||||||
Zeitslotbuchung
|
Zeitslotbuchung
|
||||||
Zimpler
|
Zimpler
|
||||||
ZIP-Datei
|
ZIP
|
||||||
zubuchbaren
|
zubuchbaren
|
||||||
|
zurückbuchen
|
||||||
zurückgeleitet
|
zurückgeleitet
|
||||||
zurückwechseln
|
zurückwechseln
|
||||||
zutrittsberechtigt
|
zutrittsberechtigt
|
||||||
ZVT-Terminal
|
|
||||||
zzgl
|
zzgl
|
||||||
|
ZVT
|
||||||
|
|||||||
+894
-944
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:36+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2024-12-22 00:00+0000\n"
|
"PO-Revision-Date: 2024-12-22 00:00+0000\n"
|
||||||
"Last-Translator: Dimitris Tsimpidis <tsimpidisd@gmail.com>\n"
|
"Last-Translator: Dimitris Tsimpidis <tsimpidisd@gmail.com>\n"
|
||||||
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -361,14 +361,14 @@ msgstr "Όχι"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "Κλείσιμο"
|
msgstr "Κλείσιμο"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Cart expired"
|
#| msgid "Cart expired"
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "Το καλάθι έληξε"
|
msgstr "Το καλάθι έληξε"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "Your request has been queued on the server and will now be processed. "
|
#| "Your request has been queued on the server and will now be processed. "
|
||||||
@@ -381,7 +381,7 @@ msgstr ""
|
|||||||
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
|
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
|
||||||
"διαρκέσει μερικά λεπτά."
|
"διαρκέσει μερικά λεπτά."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "Your request has been queued on the server and will now be processed. "
|
#| "Your request has been queued on the server and will now be processed. "
|
||||||
@@ -392,7 +392,7 @@ msgstr ""
|
|||||||
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
|
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
|
||||||
"διαρκέσει μερικά λεπτά."
|
"διαρκέσει μερικά λεπτά."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -402,14 +402,14 @@ msgstr ""
|
|||||||
"του. Αν αυτό διαρκεί περισσότερο από δύο λεπτά, επικοινωνήστε μαζί μας ή "
|
"του. Αν αυτό διαρκεί περισσότερο από δύο λεπτά, επικοινωνήστε μαζί μας ή "
|
||||||
"επιστρέψτε στο πρόγραμμα περιήγησής σας και δοκιμάστε ξανά."
|
"επιστρέψτε στο πρόγραμμα περιήγησής σας και δοκιμάστε ξανά."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Παρουσιάστηκε σφάλμα τύπου {code}."
|
msgstr "Παρουσιάστηκε σφάλμα τύπου {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -417,14 +417,14 @@ msgstr ""
|
|||||||
"Αυτήν τη στιγμή δεν μπορούμε να φτάσουμε στο διακομιστή, αλλά συνεχίζουμε να "
|
"Αυτήν τη στιγμή δεν μπορούμε να φτάσουμε στο διακομιστή, αλλά συνεχίζουμε να "
|
||||||
"προσπαθούμε. Τελευταίος κωδικός σφάλματος: {code}"
|
"προσπαθούμε. Τελευταίος κωδικός σφάλματος: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "The request took to long. Please try again."
|
#| msgid "The request took to long. Please try again."
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Το αίτημα διήρκησε πολύ. Παρακαλώ προσπαθήστε ξανά."
|
msgstr "Το αίτημα διήρκησε πολύ. Παρακαλώ προσπαθήστε ξανά."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -432,11 +432,11 @@ msgstr ""
|
|||||||
"Αυτήν τη στιγμή δεν μπορούμε να συνδεθούμε με το διακομιστή. Παρακαλώ "
|
"Αυτήν τη στιγμή δεν μπορούμε να συνδεθούμε με το διακομιστή. Παρακαλώ "
|
||||||
"προσπαθήστε ξανά. Κωδικός σφάλματος: {code}"
|
"προσπαθήστε ξανά. Κωδικός σφάλματος: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Επεξεργαζόμαστε το αίτημά σας …"
|
msgstr "Επεξεργαζόμαστε το αίτημά σας …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -446,11 +446,11 @@ msgstr ""
|
|||||||
"περισσότερο από ένα λεπτό, ελέγξτε τη σύνδεσή σας στο διαδίκτυο και στη "
|
"περισσότερο από ένα λεπτό, ελέγξτε τη σύνδεσή σας στο διαδίκτυο και στη "
|
||||||
"συνέχεια επαναλάβετε τη φόρτωση αυτής της σελίδας και δοκιμάστε ξανά."
|
"συνέχεια επαναλάβετε τη φόρτωση αυτής της σελίδας και δοκιμάστε ξανά."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Κλείσιμο μηνύματος"
|
msgstr "Κλείσιμο μηνύματος"
|
||||||
|
|
||||||
@@ -820,7 +820,7 @@ msgstr "απο %(currency)s %(price)s"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+1425
-1326
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
||||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
|
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||||
@@ -345,12 +345,12 @@ msgstr "No"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "cerrar"
|
msgstr "cerrar"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "campo requerido"
|
msgstr "campo requerido"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -358,11 +358,11 @@ msgstr ""
|
|||||||
"Su solicitud está siendo procesada. Esto puede tardar varios minutos, "
|
"Su solicitud está siendo procesada. Esto puede tardar varios minutos, "
|
||||||
"dependiendo del tamaño de su evento."
|
"dependiendo del tamaño de su evento."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr "Su solicitud ha sido enviada al servidor y será procesada en breve."
|
msgstr "Su solicitud ha sido enviada al servidor y será procesada en breve."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -372,14 +372,14 @@ msgstr ""
|
|||||||
"Si toma más de dos minutos, por favor contáctenos o regrese a la página "
|
"Si toma más de dos minutos, por favor contáctenos o regrese a la página "
|
||||||
"anterior en su navegador e intente de nuevo."
|
"anterior en su navegador e intente de nuevo."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Ha ocurrido un error de tipo {code}."
|
msgstr "Ha ocurrido un error de tipo {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -387,12 +387,12 @@ msgstr ""
|
|||||||
"Ahora mismo no podemos contactar con el servidor, pero lo seguimos "
|
"Ahora mismo no podemos contactar con el servidor, pero lo seguimos "
|
||||||
"intentando. El último código de error fue: {code}"
|
"intentando. El último código de error fue: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "La solicitud ha tomado demasiado tiempo. Por favor, intente de nuevo."
|
msgstr "La solicitud ha tomado demasiado tiempo. Por favor, intente de nuevo."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -400,11 +400,11 @@ msgstr ""
|
|||||||
"Ahora mismo no podemos contactar con el servidor. Por favor, intente de "
|
"Ahora mismo no podemos contactar con el servidor. Por favor, intente de "
|
||||||
"nuevo. Código de error: {code}"
|
"nuevo. Código de error: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Estamos procesando su solicitud…"
|
msgstr "Estamos procesando su solicitud…"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -414,11 +414,11 @@ msgstr ""
|
|||||||
"minuto, por favor, revise su conexión a Internet, recargue la página e "
|
"minuto, por favor, revise su conexión a Internet, recargue la página e "
|
||||||
"intente nuevamente."
|
"intente nuevamente."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
|
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Cerrar mensaje"
|
msgstr "Cerrar mensaje"
|
||||||
|
|
||||||
@@ -768,7 +768,7 @@ msgstr "Obtienes %(currency)s %(price)s de vuelta"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Por favor, ingrese el importe que el organizador puede quedarse."
|
msgstr "Por favor, ingrese el importe que el organizador puede quedarse."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Su hora local:"
|
msgstr "Su hora local:"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-08-04 14:16+0200\n"
|
"PO-Revision-Date: 2025-08-04 14:16+0200\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -345,68 +345,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -741,7 +741,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
|
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
|
||||||
"Last-Translator: Albizuri <oier@puntu.eus>\n"
|
"Last-Translator: Albizuri <oier@puntu.eus>\n"
|
||||||
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
@@ -345,12 +345,12 @@ msgstr "Ez"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "itxi"
|
msgstr "itxi"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -358,11 +358,11 @@ msgstr ""
|
|||||||
"Zure eskaera prozesatzen ari dira. Gertaeraren tamainaren arabera, baliteke "
|
"Zure eskaera prozesatzen ari dira. Gertaeraren tamainaren arabera, baliteke "
|
||||||
"minutu batzuk behar izatea."
|
"minutu batzuk behar izatea."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr "Zure eskaera zerbitzarian gorde da eta laster prozesatuko da."
|
msgstr "Zure eskaera zerbitzarian gorde da eta laster prozesatuko da."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -372,14 +372,14 @@ msgstr ""
|
|||||||
"Bi minutu baino gehiago irauten badu, mesedez, jarri gurekin harremanetan "
|
"Bi minutu baino gehiago irauten badu, mesedez, jarri gurekin harremanetan "
|
||||||
"edo itzuli zure nabigatzailera eta saiatu berriro."
|
"edo itzuli zure nabigatzailera eta saiatu berriro."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "{kode} motako errore bat gertatu da."
|
msgstr "{kode} motako errore bat gertatu da."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -387,12 +387,12 @@ msgstr ""
|
|||||||
"Orain bertan ezin gara zerbitzarira iritsi, baina saiatzen jarraitzen dugu. "
|
"Orain bertan ezin gara zerbitzarira iritsi, baina saiatzen jarraitzen dugu. "
|
||||||
"Azken errore-kodea: {kodea}"
|
"Azken errore-kodea: {kodea}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Gehiegi luzatu da eskaera. Mesedez, saiatu berriro."
|
msgstr "Gehiegi luzatu da eskaera. Mesedez, saiatu berriro."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -400,11 +400,11 @@ msgstr ""
|
|||||||
"Une honetan ezin gara zerbitzarira iritsi. Mesedez, saiatu berriro. Errore-"
|
"Une honetan ezin gara zerbitzarira iritsi. Mesedez, saiatu berriro. Errore-"
|
||||||
"kodea: {kodea}"
|
"kodea: {kodea}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Zure eskaera prozesatzen ari gara …"
|
msgstr "Zure eskaera prozesatzen ari gara …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -414,11 +414,11 @@ msgstr ""
|
|||||||
"baino gehiago irauten badu, mesedez, berrikusi zure Interneteko konexioa eta "
|
"baino gehiago irauten badu, mesedez, berrikusi zure Interneteko konexioa eta "
|
||||||
"gero kargatu berriro orri hau eta saiatu berriro."
|
"gero kargatu berriro orri hau eta saiatu berriro."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Mezua itxi"
|
msgstr "Mezua itxi"
|
||||||
|
|
||||||
@@ -766,7 +766,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2021-11-10 05:00+0000\n"
|
"PO-Revision-Date: 2021-11-10 05:00+0000\n"
|
||||||
"Last-Translator: Jaakko Rinta-Filppula <jaakko@r-f.fi>\n"
|
"Last-Translator: Jaakko Rinta-Filppula <jaakko@r-f.fi>\n"
|
||||||
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix-"
|
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||||
@@ -363,49 +363,49 @@ msgstr "Ei"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "Sulje"
|
msgstr "Sulje"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Cart expired"
|
#| msgid "Cart expired"
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "Ostoskori on vanhentunut"
|
msgstr "Ostoskori on vanhentunut"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Tapahtui virhe. Virhekoodi: {code}."
|
msgstr "Tapahtui virhe. Virhekoodi: {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "Pyyntö aikakatkaistiin. Ole hyvä ja yritä uudelleen."
|
msgstr "Pyyntö aikakatkaistiin. Ole hyvä ja yritä uudelleen."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -413,22 +413,22 @@ msgstr ""
|
|||||||
"Palvelimeen ei juuri nyt saatu yhteyttä. Ole hyvä ja yritä uudelleen. "
|
"Palvelimeen ei juuri nyt saatu yhteyttä. Ole hyvä ja yritä uudelleen. "
|
||||||
"Virhekoodi: {code}"
|
"Virhekoodi: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Pyyntöäsi käsitellään …"
|
msgstr "Pyyntöäsi käsitellään …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Sulje viesti"
|
msgstr "Sulje viesti"
|
||||||
|
|
||||||
@@ -783,7 +783,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -344,68 +344,68 @@ msgstr ""
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
"browser and try again."
|
"browser and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
"page and try again."
|
"page and try again."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ msgstr ""
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+1429
-1327
File diff suppressed because it is too large
Load Diff
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: French\n"
|
"Project-Id-Version: French\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2025-08-28 23:00+0000\n"
|
"PO-Revision-Date: 2025-05-30 11:06+0000\n"
|
||||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||||
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
"fr/>\n"
|
"fr/>\n"
|
||||||
@@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.13\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:56
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||||
@@ -344,12 +344,12 @@ msgstr "Non"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "fermer"
|
msgstr "fermer"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "obligatoire"
|
msgstr "obligatoire"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -357,13 +357,13 @@ msgstr ""
|
|||||||
"Votre demande est maintenant en cours de traitement. Selon la taille de "
|
"Votre demande est maintenant en cours de traitement. Selon la taille de "
|
||||||
"votre événement, cela peut prendre jusqu' à quelques minutes."
|
"votre événement, cela peut prendre jusqu' à quelques minutes."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Votre demande a été mise en attente sur le serveur et sera traitée "
|
"Votre demande a été mise en attente sur le serveur et sera traitée "
|
||||||
"prochainement."
|
"prochainement."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -373,14 +373,14 @@ msgstr ""
|
|||||||
"prend plus de deux minutes, veuillez nous contacter ou retourner dans votre "
|
"prend plus de deux minutes, veuillez nous contacter ou retourner dans votre "
|
||||||
"navigateur et réessayer."
|
"navigateur et réessayer."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Une erreur de type {code} s'est produite."
|
msgstr "Une erreur de type {code} s'est produite."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -388,12 +388,12 @@ msgstr ""
|
|||||||
"Nous ne pouvons actuellement pas atteindre le serveur, mais nous continuons "
|
"Nous ne pouvons actuellement pas atteindre le serveur, mais nous continuons "
|
||||||
"d'essayer. Dernier code d'erreur : {code}"
|
"d'essayer. Dernier code d'erreur : {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "La requête a prit trop de temps. Veuillez réessayer."
|
msgstr "La requête a prit trop de temps. Veuillez réessayer."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -401,11 +401,11 @@ msgstr ""
|
|||||||
"Actuellement, nous ne pouvons pas atteindre le serveur. Veuillez réessayer. "
|
"Actuellement, nous ne pouvons pas atteindre le serveur. Veuillez réessayer. "
|
||||||
"Code d'erreur : {code}"
|
"Code d'erreur : {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Nous traitons votre demande …"
|
msgstr "Nous traitons votre demande …"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -415,11 +415,11 @@ msgstr ""
|
|||||||
"d'une minute, veuillez vérifier votre connexion Internet, puis recharger "
|
"d'une minute, veuillez vérifier votre connexion Internet, puis recharger "
|
||||||
"cette page et réessayer."
|
"cette page et réessayer."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr "Si cela prend plus de quelques minutes, veuillez nous contacter."
|
msgstr "Si cela prend plus de quelques minutes, veuillez nous contacter."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Fermer le message"
|
msgstr "Fermer le message"
|
||||||
|
|
||||||
@@ -551,7 +551,7 @@ msgstr "minutes"
|
|||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
|
||||||
msgid "Duplicate"
|
msgid "Duplicate"
|
||||||
msgstr "Dupliquer"
|
msgstr "Doublon"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
|
||||||
msgctxt "entry_status"
|
msgctxt "entry_status"
|
||||||
@@ -768,7 +768,7 @@ msgid "Please enter the amount the organizer can keep."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Veuillez indiquer le montant que l'organisateur est autorisé à retenir."
|
"Veuillez indiquer le montant que l'organisateur est autorisé à retenir."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Votre heure locale :"
|
msgstr "Votre heure locale :"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-26 11:16+0000\n"
|
"POT-Creation-Date: 2025-08-19 16:02+0000\n"
|
||||||
"PO-Revision-Date: 2022-02-22 22:00+0000\n"
|
"PO-Revision-Date: 2022-02-22 22:00+0000\n"
|
||||||
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
|
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
|
||||||
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix-"
|
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||||
@@ -351,12 +351,12 @@ msgstr "Non"
|
|||||||
msgid "close"
|
msgid "close"
|
||||||
msgstr "cerrar"
|
msgstr "cerrar"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/addressform.js:90
|
#: pretix/static/pretixbase/js/addressform.js:105
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:519
|
#: pretix/static/pretixpresale/js/ui/main.js:509
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "campo requirido"
|
msgstr "campo requirido"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:13
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request is currently being processed. Depending on the size of your "
|
"Your request is currently being processed. Depending on the size of your "
|
||||||
"event, this might take up to a few minutes."
|
"event, this might take up to a few minutes."
|
||||||
@@ -364,11 +364,11 @@ msgstr ""
|
|||||||
"A súa solicitude estase procesando. Isto pode tardar varios minutos, "
|
"A súa solicitude estase procesando. Isto pode tardar varios minutos, "
|
||||||
"dependendo do tamaño do seu evento."
|
"dependendo do tamaño do seu evento."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:17
|
#: pretix/static/pretixbase/js/asynctask.js:16
|
||||||
msgid "Your request has been queued on the server and will soon be processed."
|
msgid "Your request has been queued on the server and will soon be processed."
|
||||||
msgstr "A súa solicitude foi enviada ao servidor e será procesada en breve."
|
msgstr "A súa solicitude foi enviada ao servidor e será procesada en breve."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:21
|
#: pretix/static/pretixbase/js/asynctask.js:20
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your request arrived on the server but we still wait for it to be processed. "
|
"Your request arrived on the server but we still wait for it to be processed. "
|
||||||
"If this takes longer than two minutes, please contact us or go back in your "
|
"If this takes longer than two minutes, please contact us or go back in your "
|
||||||
@@ -378,14 +378,14 @@ msgstr ""
|
|||||||
"procesada. Se tarda máis de dous minutos, por favor, contacte con nós ou "
|
"procesada. Se tarda máis de dous minutos, por favor, contacte con nós ou "
|
||||||
"volva á páxina anterior no seu navegador e inténteo de novo."
|
"volva á páxina anterior no seu navegador e inténteo de novo."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:125
|
#: pretix/static/pretixbase/js/asynctask.js:119
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:182
|
#: pretix/static/pretixbase/js/asynctask.js:176
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:186
|
#: pretix/static/pretixbase/js/asynctask.js:180
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
#: pretix/static/pretixcontrol/js/ui/mail.js:24
|
||||||
msgid "An error of type {code} occurred."
|
msgid "An error of type {code} occurred."
|
||||||
msgstr "Ocurreu un error de tipo {code}."
|
msgstr "Ocurreu un error de tipo {code}."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:128
|
#: pretix/static/pretixbase/js/asynctask.js:122
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server, but we keep trying. Last error code: "
|
"We currently cannot reach the server, but we keep trying. Last error code: "
|
||||||
"{code}"
|
"{code}"
|
||||||
@@ -393,12 +393,12 @@ msgstr ""
|
|||||||
"Agora mesmo non podemos contactar co servidor, pero seguímolo intentando. O "
|
"Agora mesmo non podemos contactar co servidor, pero seguímolo intentando. O "
|
||||||
"último código de erro foi: {code}"
|
"último código de erro foi: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:162
|
#: pretix/static/pretixbase/js/asynctask.js:156
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
#: pretix/static/pretixcontrol/js/ui/mail.js:21
|
||||||
msgid "The request took too long. Please try again."
|
msgid "The request took too long. Please try again."
|
||||||
msgstr "A petición levou demasiado tempo. Inténteo de novo."
|
msgstr "A petición levou demasiado tempo. Inténteo de novo."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:188
|
#: pretix/static/pretixbase/js/asynctask.js:182
|
||||||
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
#: pretix/static/pretixcontrol/js/ui/mail.js:26
|
||||||
msgid ""
|
msgid ""
|
||||||
"We currently cannot reach the server. Please try again. Error code: {code}"
|
"We currently cannot reach the server. Please try again. Error code: {code}"
|
||||||
@@ -406,11 +406,11 @@ msgstr ""
|
|||||||
"Agora mesmo non podemos contactar co servidor. Por favor, inténteo de novo. "
|
"Agora mesmo non podemos contactar co servidor. Por favor, inténteo de novo. "
|
||||||
"Código de erro: {code}"
|
"Código de erro: {code}"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:216
|
#: pretix/static/pretixbase/js/asynctask.js:210
|
||||||
msgid "We are processing your request …"
|
msgid "We are processing your request …"
|
||||||
msgstr "Estamos procesando a súa solicitude…"
|
msgstr "Estamos procesando a súa solicitude…"
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:219
|
#: pretix/static/pretixbase/js/asynctask.js:213
|
||||||
msgid ""
|
msgid ""
|
||||||
"We are currently sending your request to the server. If this takes longer "
|
"We are currently sending your request to the server. If this takes longer "
|
||||||
"than one minute, please check your internet connection and then reload this "
|
"than one minute, please check your internet connection and then reload this "
|
||||||
@@ -420,11 +420,11 @@ msgstr ""
|
|||||||
"dun minuto, por favor, revise a súa conexión a Internet, recargue a páxina e "
|
"dun minuto, por favor, revise a súa conexión a Internet, recargue a páxina e "
|
||||||
"inténteo de novo."
|
"inténteo de novo."
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:276
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:331
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
msgstr "Cerrar mensaxe"
|
msgstr "Cerrar mensaxe"
|
||||||
|
|
||||||
@@ -791,7 +791,7 @@ msgstr "Obtés %(currency)s %(price)s de volta"
|
|||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Por favor, ingrese a cantidade que pode conservar o organizador."
|
msgstr "Por favor, ingrese a cantidade que pode conservar o organizador."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:564
|
#: pretix/static/pretixpresale/js/ui/main.js:554
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "A súa hora local:"
|
msgstr "A súa hora local:"
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user