Compare commits

..
Author SHA1 Message Date
Richard Schreiber d97648802e remove attestation 2022-03-25 12:05:24 +01:00
94 changed files with 37590 additions and 42722 deletions
-1
View File
@@ -60,7 +60,6 @@ that your clients can deal with them properly:
* Support of new HTTP methods for a given API endpoint
* Support of new query parameters for a given API endpoint
* New fields contained in API responses
* Response body structure or message texts on failed requests (``4xx``, ``5xx`` response codes)
We treat the following types of changes as *backwards-incompatible*:
+2 -256
View File
@@ -68,7 +68,6 @@ positions list of objects List of order p
non-canceled positions are included.
fees list of objects List of fees included in the order total. By default, only
non-canceled fees are included.
├ id integer Internal ID of the fee record
├ fee_type string Type of fee (currently ``payment``, ``passbook``,
``other``)
├ value money (string) Fee amount
@@ -137,10 +136,6 @@ last_modified datetime Last modificati
The ``subevent`` query parameters has been added.
.. versionchanged:: 4.8
The ``order.fees.id`` attribute has been added.
.. _order-position-resource:
@@ -740,37 +735,6 @@ Generating new secrets
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to update this order.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/regenerate_secrets/
Triggers generation of a new ``secret`` attribute for a single order position.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/orderpositions/23/regenerate_secrets/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
(Full order position resource, see above.)
:param organizer: The ``slug`` field of the organizer of the event
:param event: The ``slug`` field of the event
:param code: The ``id`` field of the order position to update
:statuscode 200: no error
:statuscode 400: The order position could not be updated due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to update this order position.
Deleting orders
---------------
@@ -1678,8 +1642,6 @@ Order position ticket download
:statuscode 409: The file is not yet ready and will now be prepared. Retry the request after waiting for a few
seconds.
.. _rest-orderpositions-manipulate:
Manipulating individual positions
---------------------------------
@@ -1687,11 +1649,6 @@ Manipulating individual positions
The ``PATCH`` method has been added for individual positions.
.. versionchanged:: 4.8
The ``PATCH`` method now supports changing items, variations, subevents, seats, prices, and tax rules.
The ``POST`` endpoint to add individual positions has been added.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/
Updates specific fields on an order position. Currently, only the following fields are supported:
@@ -1718,21 +1675,6 @@ Manipulating individual positions
and ``option_identifiers`` will be ignored. As a special case, you can submit the magic value
``"file:keep"`` as the answer to a file question to keep the current value without re-uploading it.
* ``item``
* ``variation``
* ``subevent``
* ``seat`` (specified as a string mapping to a ``string_guid``)
* ``price``
* ``tax_rule``
Changing parameters such as ``item`` or ``price`` will **not** automatically trigger creation of a new invoice,
you need to take care of that yourself.
**Example request**:
.. sourcecode:: http
@@ -1754,7 +1696,7 @@ Manipulating individual positions
Vary: Accept
Content-Type: application/json
(Full order position resource, see above.)
(Full order resource, see above.)
:param organizer: The ``slug`` field of the organizer of the event
:param event: The ``slug`` field of the event
@@ -1765,83 +1707,9 @@ Manipulating individual positions
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to update this order.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/
Adds a new position to an order. Currently, only the following fields are supported:
* ``order`` (mandatory, specified as a string mapping to a ``code``)
* ``addon_to`` (optional, specified as an integer mapping to the ``positionid`` of the parent position)
* ``item`` (mandatory)
* ``variation`` (mandatory depending on item)
* ``subevent`` (mandatory depending on event)
* ``seat`` (specified as a string mapping to a ``string_guid``, mandatory depending on event and item)
* ``price`` (default price will be used if unset)
* ``attendee_email``
* ``attendee_name_parts`` or ``attendee_name``
* ``company``
* ``street``
* ``zipcode``
* ``city``
* ``country``
* ``state``
* ``answers``: Validation is handled the same way as when creating orders through the API. You are therefore
expected to provide ``question``, ``answer``, and possibly ``options``. ``question_identifier``
and ``option_identifiers`` will be ignored. As a special case, you can submit the magic value
``"file:keep"`` as the answer to a file question to keep the current value without re-uploading it.
This will **not** automatically trigger creation of a new invoice, you need to take care of that yourself.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/orderpositions/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"order": "ABC12",
"item": 5,
"addon_to": 1
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json
(Full order position resource, see above.)
:param organizer: The ``slug`` field of the organizer of the event
:param event: The ``slug`` field of the event
:statuscode 200: no error
:statuscode 400: The position could not be created due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this position.
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/
Cancels an order position, identified by its internal ID.
Deletes an order position, identified by its internal ID.
**Example request**:
@@ -1867,128 +1735,6 @@ Manipulating individual positions
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
:statuscode 404: The requested order position does not exist.
Changing order contents
-----------------------
While you can :ref:`change positions individually <rest-orderpositions-manipulate>` sometimes it is necessary to make
multiple changes to an order at once within one transaction. This makes it possible to e.g. swap the seats of two
attendees in an order without running into conflicts. This interface also offers some possibilities not available
otherwise, such as splitting an order or changing fees.
.. versionchanged:: 4.8
This endpoint has been added to the system.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/change/
Performs a change operation on an order. You can supply the following fields:
* ``patch_positions``: A list of objects with the two keys ``position`` specifying an order position ID and
``body`` specifying the desired changed values of the position (``item``, ``variation``, ``subevent``, ``seat``,
``price``, ``tax_rule``).
* ``cancel_positions``: A list of objects with the single key ``position`` specifying an order position ID.
* ``split_positions``: A list of objects with the single key ``position`` specifying an order position ID.
* ``create_positions``: A list of objects describing new order positions with the same fields supported as when
creating them individually through the ``POST …/orderpositions/`` endpoint.
* ``patch_fees``: A list of objects with the two keys ``fee`` specifying an order fee ID and
``body`` specifying the desired changed values of the position (``value``).
* ``cancel_fees``: A list of objects with the single key ``fee`` specifying an order fee ID.
* ``recalculate_taxes``: If set to ``"keep_net"``, all taxes will be recalculated based on the tax rule and invoice
address, the net price will be kept. If set to ``"keep_gross"``, the gross price will be kept. If set to ``null``
(the default) the taxes are not recalculated.
* ``send_email``: If set to ``true``, the customer will be notified about the change. Defaults to ``false``.
* ``reissue_invoice``: If set to ``true`` and an invoice exists for the order, it will be canceled and a new invoice
will be issued. Defaults to ``true``.
**Example request**:
.. sourcecode:: http
POST /api/v1/organizers/bigevents/events/sampleconf/orders/ABC12/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
{
"cancel_positions": [
{
"position": 12373
}
],
"patch_positions": [
{
"position": 12374,
"body": {
"item": 12,
"variation": None,
"subevent": 562,
"seat": "seat-guid-2",
"price": "99.99",
"tax_rule": 15
}
}
],
"split_positions": [
{
"position": 12375
}
],
"create_positions": [
{
"item": 12,
"variation": None,
"subevent": 562,
"seat": "seat-guid-2",
"price": "99.99",
"addon_to": 12374,
"attendee_name": "Peter",
}
],
"cancel_fees": [
{
"fee": 49
}
],
"change_fees": [
{
"fee": 51,
"body": {
"value": "12.00"
}
}
],
"reissue_invoice": true,
"send_email": true,
"recalculate_taxes": "keep_gross"
}
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
(Full order position resource, see above.)
:param organizer: The ``slug`` field of the organizer of the event
:param event: The ``slug`` field of the event
:param code: The ``code`` field of the order to update
:statuscode 200: no error
:statuscode 400: The order could not be updated due to invalid submitted data.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to update this order.
Order payment endpoints
-----------------------
-1
View File
@@ -13,7 +13,6 @@ recursive-include pretix/plugins/banktransfer/static *
recursive-include pretix/plugins/manualpayment/templates *
recursive-include pretix/plugins/manualpayment/static *
recursive-include pretix/plugins/paypal/templates *
recursive-include pretix/plugins/paypal/static *
recursive-include pretix/plugins/pretixdroid/templates *
recursive-include pretix/plugins/pretixdroid/static *
recursive-include pretix/plugins/sendmail/templates *
+1 -1
View File
@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
__version__ = "4.8.0"
__version__ = "4.8.0.dev0"
+85 -8
View File
@@ -424,7 +424,88 @@ class OrderPositionSerializer(I18nAwareModelSerializer):
self.fields.pop('pdf_data', None)
def validate(self, data):
raise TypeError("this serializer is readonly")
if data.get('attendee_name') and data.get('attendee_name_parts'):
raise ValidationError(
{'attendee_name': ['Do not specify attendee_name if you specified attendee_name_parts.']}
)
if data.get('attendee_name_parts') and '_scheme' not in data.get('attendee_name_parts'):
data['attendee_name_parts']['_scheme'] = self.context['request'].event.settings.name_scheme
if data.get('country'):
if not pycountry.countries.get(alpha_2=data.get('country').code):
raise ValidationError(
{'country': ['Invalid country code.']}
)
if data.get('state'):
cc = str(data.get('country') or self.instance.country or '')
if cc not in COUNTRIES_WITH_STATE_IN_ADDRESS:
raise ValidationError(
{'state': ['States are not supported in country "{}".'.format(cc)]}
)
if not pycountry.subdivisions.get(code=cc + '-' + data.get('state')):
raise ValidationError(
{'state': ['"{}" is not a known subdivision of the country "{}".'.format(data.get('state'), cc)]}
)
return data
def update(self, instance, validated_data):
# Even though all fields that shouldn't be edited are marked as read_only in the serializer
# (hopefully), we'll be extra careful here and be explicit about the model fields we update.
update_fields = [
'attendee_name_parts', 'company', 'street', 'zipcode', 'city', 'country',
'state', 'attendee_email',
]
answers_data = validated_data.pop('answers', None)
name = validated_data.pop('attendee_name', '')
if name and not validated_data.get('attendee_name_parts'):
validated_data['attendee_name_parts'] = {
'_legacy': name
}
for attr, value in validated_data.items():
if attr in update_fields:
setattr(instance, attr, value)
instance.save(update_fields=update_fields)
if answers_data is not None:
qs_seen = set()
answercache = {
a.question_id: a for a in instance.answers.all()
}
for answ_data in answers_data:
options = answ_data.pop('options', [])
if answ_data['question'].pk in qs_seen:
raise ValidationError(f'Question {answ_data["question"]} was sent twice.')
if answ_data['question'].pk in answercache:
a = answercache[answ_data['question'].pk]
if isinstance(answ_data['answer'], File):
a.file.save(answ_data['answer'].name, answ_data['answer'], save=False)
a.answer = 'file://' + a.file.name
elif a.answer.startswith('file://') and answ_data['answer'] == "file:keep":
pass # keep current file
else:
for attr, value in answ_data.items():
setattr(a, attr, value)
a.save()
else:
if isinstance(answ_data['answer'], File):
an = answ_data.pop('answer')
a = instance.answers.create(**answ_data, answer='')
a.file.save(os.path.basename(an.name), an, save=False)
a.answer = 'file://' + a.file.name
a.save()
else:
a = instance.answers.create(**answ_data)
a.options.set(options)
qs_seen.add(a.question_id)
for qid, a in answercache.items():
if qid not in qs_seen:
a.delete()
return instance
class RequireAttentionField(serializers.Field):
@@ -512,7 +593,7 @@ class OrderPaymentDateField(serializers.DateField):
class OrderFeeSerializer(I18nAwareModelSerializer):
class Meta:
model = OrderFee
fields = ('id', 'fee_type', 'value', 'description', 'internal_type', 'tax_rate', 'tax_value', 'tax_rule', 'canceled')
fields = ('fee_type', 'value', 'description', 'internal_type', 'tax_rate', 'tax_value', 'tax_rule', 'canceled')
class PaymentURLField(serializers.URLField):
@@ -1280,18 +1361,14 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
f.order = order._wrapped if simulate else order
f._calculate_tax()
fees.append(f)
if simulate:
f.id = 0
else:
if not simulate:
f.save()
else:
f = OrderFee(**fee_data)
f.order = order._wrapped if simulate else order
f._calculate_tax()
fees.append(f)
if simulate:
f.id = 0
else:
if not simulate:
f.save()
order.total += sum([f.value for f in fees])
-424
View File
@@ -1,424 +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/>.
#
import logging
import os
import pycountry
from django.core.files import File
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from pretix.api.serializers.order import (
AnswerCreateSerializer, AnswerSerializer, CompatibleCountryField,
OrderPositionCreateSerializer,
)
from pretix.base.models import ItemVariation, Order, OrderFee, OrderPosition
from pretix.base.services.orders import OrderError
from pretix.base.settings import COUNTRIES_WITH_STATE_IN_ADDRESS
logger = logging.getLogger(__name__)
class OrderPositionCreateForExistingOrderSerializer(OrderPositionCreateSerializer):
order = serializers.SlugRelatedField(slug_field='code', queryset=Order.objects.none(), required=True, allow_null=False)
answers = AnswerCreateSerializer(many=True, required=False)
addon_to = serializers.IntegerField(required=False, allow_null=True)
secret = serializers.CharField(required=False)
attendee_name = serializers.CharField(required=False, allow_null=True)
seat = serializers.CharField(required=False, allow_null=True)
price = serializers.DecimalField(required=False, allow_null=True, decimal_places=2,
max_digits=10)
country = CompatibleCountryField(source='*')
class Meta:
model = OrderPosition
fields = ('order', 'item', 'variation', 'price', 'attendee_name', 'attendee_name_parts', 'attendee_email',
'company', 'street', 'zipcode', 'city', 'country', 'state',
'secret', 'addon_to', 'subevent', 'answers', 'seat')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.context:
return
self.fields['order'].queryset = self.context['event'].orders.all()
self.fields['item'].queryset = self.context['event'].items.all()
self.fields['subevent'].queryset = self.context['event'].subevents.all()
self.fields['seat'].queryset = self.context['event'].seats.all()
self.fields['variation'].queryset = ItemVariation.objects.filter(item__event=self.context['event'])
if 'order' in self.context:
del self.fields['order']
def validate(self, data):
data = super().validate(data)
if data.get('addon_to'):
try:
data['addon_to'] = data['order'].positions.get(positionid=data['addon_to'])
except OrderPosition.DoesNotExist:
raise ValidationError({
'addon_to': ['addon_to refers to an unknown position ID for this order.']
})
return data
def create(self, validated_data):
ocm = self.context['ocm']
try:
ocm.add_position(
item=validated_data['item'],
variation=validated_data.get('variation'),
price=validated_data.get('price'),
addon_to=validated_data.get('addon_to'),
subevent=validated_data.get('subevent'),
seat=validated_data.get('seat'),
)
if self.context.get('commit', True):
ocm.commit()
return validated_data['order'].positions.order_by('-positionid').first()
else:
return OrderPosition() # fake to appease DRF
except OrderError as e:
raise ValidationError(str(e))
class OrderPositionInfoPatchSerializer(serializers.ModelSerializer):
answers = AnswerSerializer(many=True)
country = CompatibleCountryField(source='*')
attendee_name = serializers.CharField(required=False)
class Meta:
model = OrderPosition
fields = (
'attendee_name', 'attendee_name_parts', 'company', 'street', 'zipcode', 'city', 'country',
'state', 'attendee_email', 'answers',
)
def validate(self, data):
if data.get('attendee_name') and data.get('attendee_name_parts'):
raise ValidationError(
{'attendee_name': ['Do not specify attendee_name if you specified attendee_name_parts.']}
)
if data.get('attendee_name_parts') and '_scheme' not in data.get('attendee_name_parts'):
data['attendee_name_parts']['_scheme'] = self.context['request'].event.settings.name_scheme
if data.get('country'):
if not pycountry.countries.get(alpha_2=data.get('country').code):
raise ValidationError(
{'country': ['Invalid country code.']}
)
if data.get('state'):
cc = str(data.get('country') or self.instance.country or '')
if cc not in COUNTRIES_WITH_STATE_IN_ADDRESS:
raise ValidationError(
{'state': ['States are not supported in country "{}".'.format(cc)]}
)
if not pycountry.subdivisions.get(code=cc + '-' + data.get('state')):
raise ValidationError(
{'state': ['"{}" is not a known subdivision of the country "{}".'.format(data.get('state'), cc)]}
)
return data
def update(self, instance, validated_data):
answers_data = validated_data.pop('answers', None)
name = validated_data.pop('attendee_name', '')
if name and not validated_data.get('attendee_name_parts'):
validated_data['attendee_name_parts'] = {
'_legacy': name
}
for attr, value in validated_data.items():
if attr in self.fields:
setattr(instance, attr, value)
instance.save(update_fields=list(validated_data.keys()))
if answers_data is not None:
qs_seen = set()
answercache = {
a.question_id: a for a in instance.answers.all()
}
for answ_data in answers_data:
options = answ_data.pop('options', [])
if answ_data['question'].pk in qs_seen:
raise ValidationError(f'Question {answ_data["question"]} was sent twice.')
if answ_data['question'].pk in answercache:
a = answercache[answ_data['question'].pk]
if isinstance(answ_data['answer'], File):
a.file.save(answ_data['answer'].name, answ_data['answer'], save=False)
a.answer = 'file://' + a.file.name
elif a.answer.startswith('file://') and answ_data['answer'] == "file:keep":
pass # keep current file
else:
for attr, value in answ_data.items():
setattr(a, attr, value)
a.save()
else:
if isinstance(answ_data['answer'], File):
an = answ_data.pop('answer')
a = instance.answers.create(**answ_data, answer='')
a.file.save(os.path.basename(an.name), an, save=False)
a.answer = 'file://' + a.file.name
a.save()
else:
a = instance.answers.create(**answ_data)
a.options.set(options)
qs_seen.add(a.question_id)
for qid, a in answercache.items():
if qid not in qs_seen:
a.delete()
return instance
class OrderPositionChangeSerializer(serializers.ModelSerializer):
seat = serializers.CharField(source='seat.seat_guid', allow_null=True, required=False)
class Meta:
model = OrderPosition
fields = (
'item', 'variation', 'subevent', 'seat', 'price', 'tax_rule',
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.context:
return
self.fields['item'].queryset = self.context['event'].items.all()
self.fields['subevent'].queryset = self.context['event'].subevents.all()
self.fields['tax_rule'].queryset = self.context['event'].tax_rules.all()
if kwargs.get('partial'):
for k, v in self.fields.items():
self.fields[k].required = False
def validate_item(self, item):
if item.event != self.context['event']:
raise ValidationError(
'The specified item does not belong to this event.'
)
return item
def validate_subevent(self, subevent):
if self.context['event'].has_subevents:
if not subevent:
raise ValidationError(
'You need to set a subevent.'
)
if subevent.event != self.context['event']:
raise ValidationError(
'The specified subevent does not belong to this event.'
)
elif subevent:
raise ValidationError(
'You cannot set a subevent for this event.'
)
return subevent
def validate(self, data, instance=None):
instance = instance or self.instance
if instance is None:
return data # needs to be done later
if data.get('item', instance.item):
if data.get('item', instance.item).has_variations:
if not data.get('variation', instance.variation):
raise ValidationError({'variation': ['You should specify a variation for this item.']})
else:
if data.get('variation', instance.variation).item != data.get('item', instance.item):
raise ValidationError(
{'variation': ['The specified variation does not belong to the specified item.']}
)
elif data.get('variation', instance.variation):
raise ValidationError(
{'variation': ['You cannot specify a variation for this item.']}
)
return data
def update(self, instance, validated_data):
ocm = self.context['ocm']
current_seat = {'seat_guid': instance.seat.seat_guid} if instance.seat else None
item = validated_data.get('item', instance.item)
variation = validated_data.get('variation', instance.variation)
subevent = validated_data.get('subevent', instance.subevent)
price = validated_data.get('price', instance.price)
seat = validated_data.get('seat', current_seat)
tax_rule = validated_data.get('tax_rule', instance.tax_rule)
change_item = None
if item != instance.item or variation != instance.variation:
change_item = (item, variation)
change_subevent = None
if self.context['event'].has_subevents and subevent != instance.subevent:
change_subevent = (subevent,)
try:
if change_item is not None and change_subevent is not None:
ocm.change_item_and_subevent(instance, *change_item, *change_subevent)
elif change_item is not None:
ocm.change_item(instance, *change_item)
elif change_subevent is not None:
ocm.change_subevent(instance, *change_subevent)
if seat != current_seat or change_subevent:
ocm.change_seat(instance, seat['seat_guid'] if seat else None)
if price != instance.price:
ocm.change_price(instance, price)
if tax_rule != instance.tax_rule:
ocm.change_tax_rule(instance, tax_rule)
if self.context.get('commit', True):
ocm.commit()
instance.refresh_from_db()
except OrderError as e:
raise ValidationError(str(e))
return instance
class PatchPositionSerializer(serializers.Serializer):
position = serializers.PrimaryKeyRelatedField(queryset=OrderPosition.all.none())
def validate_position(self, value):
self.fields['body'].instance = value # hack around DRFs validation order
return value
def validate(self, data):
OrderPositionChangeSerializer(context=self.context, partial=True).validate(data['body'], data['position'])
return data
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['position'].queryset = self.context['order'].positions.all()
self.fields['body'] = OrderPositionChangeSerializer(context=self.context, partial=True)
class SelectPositionSerializer(serializers.Serializer):
position = serializers.PrimaryKeyRelatedField(queryset=OrderPosition.all.none())
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['position'].queryset = self.context['order'].positions.all()
class OrderFeeChangeSerializer(serializers.ModelSerializer):
class Meta:
model = OrderFee
fields = (
'value',
)
def update(self, instance, validated_data):
ocm = self.context['ocm']
value = validated_data.get('value', instance.value)
try:
if value != instance.value:
ocm.change_fee(instance, value)
if self.context.get('commit', True):
ocm.commit()
instance.refresh_from_db()
except OrderError as e:
raise ValidationError(str(e))
return instance
class PatchFeeSerializer(serializers.Serializer):
fee = serializers.PrimaryKeyRelatedField(queryset=OrderFee.all.none())
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['fee'].queryset = self.context['order'].fees.all()
self.fields['body'] = OrderFeeChangeSerializer(context=self.context)
class SelectFeeSerializer(serializers.Serializer):
fee = serializers.PrimaryKeyRelatedField(queryset=OrderFee.all.none())
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.context:
return
self.fields['fee'].queryset = self.context['order'].fees.all()
class OrderChangeOperationSerializer(serializers.Serializer):
send_email = serializers.BooleanField(default=False, required=False)
reissue_invoice = serializers.BooleanField(default=True, required=False)
recalculate_taxes = serializers.ChoiceField(default=None, allow_null=True, required=False, choices=[
('keep_net', 'keep_net'),
('keep_gross', 'keep_gross'),
])
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
self.fields['patch_positions'] = PatchPositionSerializer(
many=True, required=False, context=self.context
)
self.fields['cancel_positions'] = SelectPositionSerializer(
many=True, required=False, context=self.context
)
self.fields['create_positions'] = OrderPositionCreateForExistingOrderSerializer(
many=True, required=False, context=self.context
)
self.fields['split_positions'] = SelectPositionSerializer(
many=True, required=False, context=self.context
)
self.fields['patch_fees'] = PatchFeeSerializer(
many=True, required=False, context=self.context
)
self.fields['cancel_fees'] = SelectFeeSerializer(
many=True, required=False, context=self.context
)
def validate(self, data):
seen_positions = set()
for d in data.get('patch_positions', []):
print(d, seen_positions)
if d['position'] in seen_positions:
raise ValidationError({'patch_positions': ['You have specified the same object twice.']})
seen_positions.add(d['position'])
seen_positions = set()
for d in data.get('cancel_positions', []):
if d['position'] in seen_positions:
raise ValidationError({'cancel_positions': ['You have specified the same object twice.']})
seen_positions.add(d['position'])
seen_positions = set()
for d in data.get('split_positions', []):
if d['position'] in seen_positions:
raise ValidationError({'split_positions': ['You have specified the same object twice.']})
seen_positions.add(d['position'])
seen_fees = set()
for d in data.get('patch_fees', []):
if d['fee'] in seen_fees:
raise ValidationError({'patch_fees': ['You have specified the same object twice.']})
seen_positions.add(d['fee'])
seen_fees = set()
for d in data.get('cancel_fees', []):
if d['fee'] in seen_fees:
raise ValidationError({'cancel_fees': ['You have specified the same object twice.']})
seen_positions.add(d['fee'])
return data
+7 -188
View File
@@ -36,7 +36,7 @@ from django.utils.translation import gettext as _
from django_filters.rest_framework import DjangoFilterBackend, FilterSet
from django_scopes import scopes_disabled
from PIL import Image
from rest_framework import serializers, status, viewsets
from rest_framework import mixins, serializers, status, viewsets
from rest_framework.decorators import action
from rest_framework.exceptions import (
APIException, NotFound, PermissionDenied, ValidationError,
@@ -53,12 +53,6 @@ from pretix.api.serializers.order import (
PriceCalcSerializer, RevokedTicketSecretSerializer,
SimulatedOrderSerializer,
)
from pretix.api.serializers.orderchange import (
OrderChangeOperationSerializer, OrderFeeChangeSerializer,
OrderPositionChangeSerializer,
OrderPositionCreateForExistingOrderSerializer,
OrderPositionInfoPatchSerializer,
)
from pretix.base.i18n import language
from pretix.base.models import (
CachedCombinedTicket, CachedTicket, Checkin, Device, Event, Invoice,
@@ -788,79 +782,6 @@ class OrderViewSet(viewsets.ModelViewSet):
with transaction.atomic():
self.get_object().gracefully_delete(user=self.request.user if self.request.user.is_authenticated else None, auth=self.request.auth)
@action(detail=True, methods=['POST'])
def change(self, request, **kwargs):
order = self.get_object()
serializer = OrderChangeOperationSerializer(
context={'order': order, **self.get_serializer_context()},
data=request.data,
)
serializer.is_valid(raise_exception=True)
try:
ocm = OrderChangeManager(
order=order,
user=self.request.user if self.request.user.is_authenticated else None,
auth=request.auth,
notify=serializer.validated_data.get('send_email', False),
reissue_invoice=serializer.validated_data.get('reissue_invoice', True),
)
canceled_positions = set()
for r in serializer.validated_data.get('cancel_positions', []):
ocm.cancel(r['position'])
canceled_positions.add(r['position'])
for r in serializer.validated_data.get('patch_positions', []):
if r['position'] in canceled_positions:
continue
pos_serializer = OrderPositionChangeSerializer(
context={'ocm': ocm, 'commit': False, 'event': request.event, **self.get_serializer_context()},
partial=True,
)
pos_serializer.update(r['position'], r['body'])
for r in serializer.validated_data.get('split_positions', []):
if r['position'] in canceled_positions:
continue
ocm.split(r['position'])
for r in serializer.validated_data.get('create_positions', []):
pos_serializer = OrderPositionCreateForExistingOrderSerializer(
context={'ocm': ocm, 'commit': False, 'event': request.event, **self.get_serializer_context()},
)
pos_serializer.create(r)
canceled_fees = set()
for r in serializer.validated_data.get('cancel_fees', []):
ocm.cancel_fee(r['fee'])
canceled_fees.add(r['fee'])
for r in serializer.validated_data.get('patch_fees', []):
if r['fee'] in canceled_fees:
continue
pos_serializer = OrderFeeChangeSerializer(
context={'ocm': ocm, 'commit': False, 'event': request.event, **self.get_serializer_context()},
)
pos_serializer.update(r['fee'], r['body'])
if serializer.validated_data.get('recalculate_taxes') == 'keep_net':
ocm.recalculate_taxes(keep='net')
elif serializer.validated_data.get('recalculate_taxes') == 'keep_gross':
ocm.recalculate_taxes(keep='gross')
ocm.commit()
except OrderError as e:
raise ValidationError(str(e))
order.refresh_from_db()
serializer = OrderSerializer(
instance=order,
context=self.get_serializer_context(),
)
return Response(serializer.data)
with scopes_disabled():
class OrderPositionFilter(FilterSet):
@@ -902,7 +823,7 @@ with scopes_disabled():
}
class OrderPositionViewSet(viewsets.ModelViewSet):
class OrderPositionViewSet(mixins.DestroyModelMixin, mixins.UpdateModelMixin, viewsets.ReadOnlyModelViewSet):
serializer_class = OrderPositionSerializer
queryset = OrderPosition.all.none()
filter_backends = (DjangoFilterBackend, OrderingFilter)
@@ -1139,25 +1060,6 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
)
return resp
@action(detail=True, methods=['POST'])
def regenerate_secrets(self, request, **kwargs):
instance = self.get_object()
try:
ocm = OrderChangeManager(
instance.order,
user=self.request.user if self.request.user.is_authenticated else None,
auth=self.request.auth,
notify=False,
reissue_invoice=False,
)
ocm.regenerate_secret(instance)
ocm.commit()
except OrderError as e:
raise ValidationError(str(e))
except Quota.QuotaExceededException as e:
raise ValidationError(str(e))
return self.retrieve(request, [], **kwargs)
def perform_destroy(self, instance):
try:
ocm = OrderChangeManager(
@@ -1173,63 +1075,6 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
except Quota.QuotaExceededException as e:
raise ValidationError(str(e))
def create(self, request, *args, **kwargs):
with transaction.atomic():
serializer = OrderPositionCreateForExistingOrderSerializer(
data=request.data,
context=self.get_serializer_context(),
)
serializer.is_valid(raise_exception=True)
order = serializer.validated_data['order']
ocm = OrderChangeManager(
order=order,
user=self.request.user if self.request.user.is_authenticated else None,
auth=request.auth,
notify=False,
reissue_invoice=False,
)
serializer.context['ocm'] = ocm
serializer.save()
# Fields that can be easily patched after the position was added
old_data = OrderPositionInfoPatchSerializer(instance=serializer.instance, context=self.get_serializer_context()).data
serializer = OrderPositionInfoPatchSerializer(
instance=serializer.instance,
context=self.get_serializer_context(),
partial=True,
data=request.data
)
serializer.is_valid(raise_exception=True)
serializer.save()
new_data = serializer.data
if old_data != new_data:
log_data = self.request.data
if 'answers' in log_data:
for a in new_data['answers']:
log_data[f'question_{a["question"]}'] = a["answer"]
log_data.pop('answers', None)
serializer.instance.order.log_action(
'pretix.event.order.modified',
user=self.request.user,
auth=self.request.auth,
data={
'data': [
dict(
position=serializer.instance.pk,
**log_data
)
]
}
)
tickets.invalidate_cache.apply_async(
kwargs={'event': serializer.instance.order.event.pk, 'order': serializer.instance.order.pk})
order_modified.send(sender=serializer.instance.order.event, order=serializer.instance.order)
return Response(
OrderPositionSerializer(serializer.instance, context=self.get_serializer_context()).data,
status=status.HTTP_201_CREATED,
)
def update(self, request, *args, **kwargs):
partial = kwargs.get('partial', False)
if not partial:
@@ -1237,36 +1082,11 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
{"detail": "Method \"PUT\" not allowed."},
status=status.HTTP_405_METHOD_NOT_ALLOWED,
)
return super().update(request, *args, **kwargs)
def perform_update(self, serializer):
with transaction.atomic():
instance = self.get_object()
ocm = OrderChangeManager(
order=instance.order,
user=self.request.user if self.request.user.is_authenticated else None,
auth=request.auth,
notify=False,
reissue_invoice=False,
)
# Field that need to go through OrderChangeManager
serializer = OrderPositionChangeSerializer(
instance=instance,
context={'ocm': ocm, **self.get_serializer_context()},
partial=True,
data=request.data
)
serializer.is_valid(raise_exception=True)
serializer.save()
# Fields that can be easily patched
old_data = OrderPositionInfoPatchSerializer(instance=instance, context=self.get_serializer_context()).data
serializer = OrderPositionInfoPatchSerializer(
instance=instance,
context=self.get_serializer_context(),
partial=True,
data=request.data
)
serializer.is_valid(raise_exception=True)
old_data = self.get_serializer_class()(instance=serializer.instance, context=self.get_serializer_context()).data
serializer.save()
new_data = serializer.data
@@ -1289,10 +1109,9 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
]
}
)
tickets.invalidate_cache.apply_async(kwargs={'event': serializer.instance.order.event.pk, 'order': serializer.instance.order.pk})
order_modified.send(sender=serializer.instance.order.event, order=serializer.instance.order)
return Response(self.get_serializer_class()(instance=serializer.instance, context=self.get_serializer_context()).data)
tickets.invalidate_cache.apply_async(kwargs={'event': serializer.instance.order.event.pk, 'order': serializer.instance.order.pk})
order_modified.send(sender=serializer.instance.order.event, order=serializer.instance.order)
class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet):
+5 -50
View File
@@ -49,7 +49,6 @@ from arabic_reshaper import ArabicReshaper
from bidi.algorithm import get_display
from django.conf import settings
from django.contrib.staticfiles import finders
from django.db.models import Max, Min
from django.dispatch import receiver
from django.utils.formats import date_format
from django.utils.functional import SimpleLazyObject
@@ -395,41 +394,30 @@ DEFAULT_VARIABLES = OrderedDict((
("seat", {
"label": _("Seat: Full name"),
"editor_sample": _("Ground floor, Row 3, Seat 4"),
"evaluate": lambda op, order, ev: str(get_seat(op) if get_seat(op) else
"evaluate": lambda op, order, ev: str(op.seat if op.seat else
_('General admission') if ev.seating_plan_id is not None else "")
}),
("seat_zone", {
"label": _("Seat: zone"),
"editor_sample": _("Ground floor"),
"evaluate": lambda op, order, ev: str(get_seat(op).zone_name if get_seat(op) else
"evaluate": lambda op, order, ev: str(op.seat.zone_name if op.seat else
_('General admission') if ev.seating_plan_id is not None else "")
}),
("seat_row", {
"label": _("Seat: row"),
"editor_sample": "3",
"evaluate": lambda op, order, ev: str(get_seat(op).row_name if get_seat(op) else "")
"evaluate": lambda op, order, ev: str(op.seat.row_name if op.seat else "")
}),
("seat_number", {
"label": _("Seat: seat number"),
"editor_sample": 4,
"evaluate": lambda op, order, ev: str(get_seat(op).seat_number if get_seat(op) else "")
"evaluate": lambda op, order, ev: str(op.seat.seat_number if op.seat else "")
}),
("first_scan", {
"label": _("Date and time of first scan"),
"editor_sample": _("2017-05-31 19:00"),
"evaluate": lambda op, order, ev: get_first_scan(op)
}),
("giftcard_issuance_date", {
"label": _("Gift card: Issuance date"),
"editor_sample": _("2017-05-31"),
"evaluate": lambda op, order, ev: get_giftcard_issuance(op, ev)
}),
("giftcard_expiry_date", {
"label": _("Gift card: Expiration date"),
"editor_sample": _("2017-05-31"),
"evaluate": lambda op, order, ev: get_giftcard_expiry(op, ev)
}),
))
DEFAULT_IMAGES = OrderedDict([])
@@ -504,17 +492,10 @@ def variables_from_questions(sender, *args, **kwargs):
for q in sender.questions.all():
if q.type == Question.TYPE_FILE:
continue
d['question_{}'.format(q.identifier)] = {
'label': _('Question: {question}').format(question=q.question),
'editor_sample': _('<Answer: {question}>').format(question=q.question),
'evaluate': partial(get_answer, question_id=q.pk),
'migrate_from': 'question_{}'.format(q.pk)
}
d['question_{}'.format(q.pk)] = {
'label': _('Question: {question}').format(question=q.question),
'editor_sample': _('<Answer: {question}>').format(question=q.question),
'evaluate': partial(get_answer, question_id=q.pk),
'hidden': True,
'evaluate': partial(get_answer, question_id=q.pk)
}
return d
@@ -572,24 +553,6 @@ def get_variables(event):
return v
def get_giftcard_expiry(op: OrderPosition, ev):
if not op.item.issue_giftcard:
return "" # performance optimization
m = op.issued_gift_cards.aggregate(m=Min('expires'))['m']
if not m:
return ""
return date_format(m.astimezone(ev.timezone), "SHORT_DATE_FORMAT")
def get_giftcard_issuance(op: OrderPosition, ev):
if not op.item.issue_giftcard:
return "" # performance optimization
m = op.issued_gift_cards.aggregate(m=Max('issuance'))['m']
if not m:
return ""
return date_format(m.astimezone(ev.timezone), "SHORT_DATE_FORMAT")
def get_first_scan(op: OrderPosition):
scans = list(op.checkins.all())
@@ -601,14 +564,6 @@ def get_first_scan(op: OrderPosition):
return ""
def get_seat(op: OrderPosition):
if op.seat_id:
return op.seat
if op.addon_to_id:
return op.addon_to.seat
return None
reshaper = SimpleLazyObject(lambda: ArabicReshaper(configuration={
'delete_harakat': True,
'support_ligatures': False,
+1 -3
View File
@@ -1467,7 +1467,7 @@ class OrderChangeManager:
if self.order.event.settings.invoice_include_free or position.price != Decimal('0.00'):
self._invoice_dirty = True
def add_position(self, item: Item, variation: ItemVariation, price: Decimal, addon_to: OrderPosition = None,
def add_position(self, item: Item, variation: ItemVariation, price: Decimal, addon_to: Order = None,
subevent: SubEvent = None, seat: Seat = None, membership: Membership = None):
if isinstance(seat, str):
if not seat:
@@ -1492,8 +1492,6 @@ class OrderChangeManager:
if price is None:
raise OrderError(self.error_messages['product_invalid'])
if item.variations.exists() and not variation:
raise OrderError(self.error_messages['product_without_variation'])
if not addon_to and item.category and item.category.is_addon:
raise OrderError(self.error_messages['addon_to_required'])
if addon_to:
+1 -14
View File
@@ -1195,20 +1195,7 @@ DEFAULTS = {
help_text=_("If you ask for a phone number, explain why you do so and what you will use the phone number for.")
)
},
'show_checkin_number_user': {
'default': 'False',
'type': bool,
'serializer_class': serializers.BooleanField,
'form_class': forms.BooleanField,
'form_kwargs': dict(
label=_("Show number of check-ins to customer"),
help_text=_('With this option enabled, your customers will be able how many times they entered '
'the event. This is usually not necessary, but might be useful in combination with tickets '
'that are usable a specific number of times, so customers can see how many times they have '
'already been used. Exits or failed scans will not be counted, and the user will not see '
'the different check-in lists.'),
)
},
'ticket_download': {
'default': 'False',
'type': bool,
-1
View File
@@ -523,7 +523,6 @@ class EventSettingsForm(SettingsForm):
'last_order_modification_date',
'allow_modifications_after_checkin',
'checkout_show_copy_answers_button',
'show_checkin_number_user',
'primary_color',
'theme_color_success',
'theme_color_danger',
@@ -221,7 +221,6 @@
{% bootstrap_field sform.show_items_outside_presale_period layout="control" %}
{% bootstrap_field sform.last_order_modification_date layout="control" %}
{% bootstrap_field sform.allow_modifications_after_checkin layout="control" %}
{% bootstrap_field sform.show_checkin_number_user layout="control" %}
</fieldset>
<fieldset>
<legend>{% trans "Display" %}</legend>
@@ -372,9 +372,7 @@
<label>{% trans "Content" %}</label><br>
<select class="input-block-level form-control" id="toolbox-content">
{% for varname, var in variables.items %}
{% if not var.hidden %}
<option data-sample="{{ var.editor_sample }}" {% if var.migrate_from %}data-old-value="{{ var.migrate_from }}"{% endif %} value="{{ varname }}">{{ var.label }}</option>
{% endif %}
<option data-sample="{{ var.editor_sample }}" value="{{ varname }}">{{ var.label }}</option>
{% endfor %}
{% for p in request.organizer.meta_properties.all %}
<option value="meta:{{ p.name }}">
@@ -396,9 +394,6 @@
<textarea id="toolbox-content-other-{{ l }}" rows="3" class="input-block-level form-control" title="{{ l }}" lang="{{ l }}"></textarea>
{% endfor %}
</div>
<p class="help-block" id="toolbox-content-other-help">
<a href="?placeholders=true" target="_blank">{% trans "Show available placeholders" %}</a>
</p>
</div>
</div>
</div>
@@ -1,68 +0,0 @@
{% extends "pretixcontrol/event/base.html" %}
{% load i18n %}
{% load static %}
{% load compress %}
{% block title %}{% trans "PDF Editor" %}{% endblock %}
{% block custom_header %}
{{ block.super }}
{% compress css %}
<link type="text/css" rel="stylesheet" href="{% static "pretixcontrol/scss/pdfeditor.css" %}">
{% endcompress %}
<link type="text/css" rel="stylesheet" href="{% url "control:pdf.css" %}">
{% endblock %}
{% block content %}
<h1>
{% trans "PDF Editor" %}
<small>{% trans "Available placeholders" %}</small>
</h1>
<p>
{% blocktrans trimmed %}
You can use placeholders in custom texts on tickets to enrich your text with individual data. Which
placeholders are available depends on your event settings, activated plugins, the selected product,
as well as user input.
This page lists all placeholders technically available for your event, however most of them can also
be empty in some cases depending on configuration.
{% endblocktrans %}
</p>
<div class="table-responsive">
<table class="table table-hover table-condensed">
<thead>
<tr>
<th>{% trans "Placeholder" %}</th>
<th>{% trans "Description" %}</th>
<th>{% trans "Formatting example" %}</th>
</tr>
</thead>
<tbody>
{% for varname, var in variables.items %}
{% if not var.hidden %}
<tr>
<td><code>{{ "{" }}{{ varname }}{{ "}" }}</code></td>
<td>{{ var.label }}</td>
<td>{{ var.editor_sample }}</td>
</tr>
{% endif %}
{% endfor %}
{% for p in request.organizer.meta_properties.all %}
<tr>
<td><code>{{ "{" }}meta:{{ p.name }}{{ "}" }}</code></td>
<td>
{% trans "Event attribute:" %} {{ p.name }}
</td>
<td></td>
</tr>
{% endfor %}
{% for p in request.event.item_meta_properties.all %}
<tr>
<td><code>{{ "{" }}itemmeta:{{ p.name }}{{ "}" }}</code></td>
<td>
{% trans "Item attribute:" %} {{ p.name }}
</td>
<td></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
+1 -1
View File
@@ -102,7 +102,7 @@ class ItemList(ListView):
).annotate(
var_count=Count('variations')
).prefetch_related("category").order_by(
F('category__position').asc(nulls_first=True),
F('category__position').desc(nulls_first=True),
'category', 'position'
)
+1 -8
View File
@@ -33,7 +33,7 @@ from django.core.files.storage import default_storage
from django.http import (
FileResponse, HttpResponse, HttpResponseBadRequest, JsonResponse,
)
from django.shortcuts import get_object_or_404, render
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.utils.crypto import get_random_string
from django.utils.timezone import now
@@ -65,17 +65,10 @@ class BaseEditorView(EventPermissionRequiredMixin, TemplateView):
title = None
def get(self, request, *args, **kwargs):
if 'placeholders' in request.GET:
return self.get_placeholders_help(request)
resp = super().get(request, *args, **kwargs)
resp._csp_ignore = True
return resp
def get_placeholders_help(self, request):
ctx = {}
ctx['variables'] = self.get_variables()
return render(request, 'pretixcontrol/pdf/placeholders.html', ctx)
def process_upload(self):
f = self.request.FILES.get('background')
error = False
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-09-15 11:22+0000\n"
"Last-Translator: Mohamed Tawfiq <mtawfiq@wafyapp.com>\n"
"Language-Team: Arabic <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -366,44 +366,44 @@ msgstr "QR الدخول"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "لا يمكن تحميل ملف PDF الخلفية للأسباب التالية:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "مجموعة من العناصر"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "عنصر نص"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "منطقة باركود"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "منطقة صورة"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "مدعوم من pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "عنصر"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "تصميم التذكرة"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "فشلت عملية الحفظ."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "حصل خطأ أثناء رفع ملف PDF الخاص بك، يرجى المحاولة مرة أخرى."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "هل تريد أن تغادر المحرر دون حفظ التعديلات؟"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2020-12-19 07:00+0000\n"
"Last-Translator: albert <albert.serra.monner@gmail.com>\n"
"Language-Team: Catalan <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -351,44 +351,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Disseny del tiquet"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-12-06 23:00+0000\n"
"Last-Translator: Ondřej Sokol <osokol@treesoft.cz>\n"
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -363,44 +363,44 @@ msgstr "Check-in QR kód"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Pozadí PDF nemohl být načten:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Skupina objektů"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Textový objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Oblast s QR kódem"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Oblast obrazu"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Poháněno společností pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Design vstupenky"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Uložení se nepodařilo."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Při nahrávání souboru PDF došlo k problému, zkuste to prosím znovu."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Opravdu chcete opustit editor bez uložení změn?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-09-13 09:48+0000\n"
"Last-Translator: Mie Frydensbjerg <mif@aarhus.dk>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -391,46 +391,46 @@ msgstr "Check-in QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Baggrunds-pdf'en kunne ikke hentes af følgende grund:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Gruppe af objekter"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Tekstobjekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "QR-kode-område"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "QR-kode-område"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Drevet af pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Billetdesign"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Gem fejlede."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Fejl under upload af pdf. Prøv venligt igen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Er du sikker på at du vil forlade editoren uden at gemme dine ændringer?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-10-25 15:40+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -366,45 +366,45 @@ msgstr "Check-in-QR-Code"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Die Hintergrund-PDF-Datei konnte nicht geladen werden:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Gruppe von Objekten"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Text-Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "QR-Code-Bereich"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Bildbereich"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Event-Ticketshop von pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Ticket-Design"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Speichern fehlgeschlagen."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Es gab ein Problem beim Hochladen der PDF-Datei, bitte erneut versuchen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Möchten Sie den Editor wirklich schließen ohne Ihre Änderungen zu speichern?"
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-10-25 15:40+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
@@ -365,45 +365,45 @@ msgstr "Check-in-QR-Code"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Die Hintergrund-PDF-Datei konnte nicht geladen werden:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Gruppe von Objekten"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Text-Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "QR-Code-Bereich"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Bildbereich"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Event-Ticketshop von pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Ticket-Design"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Speichern fehlgeschlagen."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Es gab ein Problem beim Hochladen der PDF-Datei, bitte erneut versuchen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Möchtest du den Editor wirklich schließen ohne Ihre Änderungen zu speichern?"
+975 -1051
View File
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -350,44 +350,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2019-10-03 19:00+0000\n"
"Last-Translator: Chris Spy <chrispiropoulou@hotmail.com>\n"
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -399,46 +399,46 @@ msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
"Το αρχείο φόντου PDF δεν ήταν δυνατό να φορτωθεί για τον ακόλουθο λόγο:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Ομάδα αντικειμένων"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Αντικείμενο κειμένου"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Περιοχή Barcode"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Περιοχή Barcode"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Υποστηρίζεται από το Pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Αντικείμενο"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Σχεδιασμός εισιτηρίων"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Η αποθήκευση απέτυχε."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Σφάλμα κατά τη μεταφόρτωση του αρχείου PDF, δοκιμάστε ξανά."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Θέλετε πραγματικά να αφήσετε τον επεξεργαστή χωρίς να αποθηκεύσετε τις "
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-11-25 21:00+0000\n"
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -364,46 +364,46 @@ msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
"El archivo PDF de fondo no ha podido ser cargado debido al siguiente motivo:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupo de objetos"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Objeto de texto"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Área para código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Área de imagen"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Proveído por pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objeto"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Diseño del ticket"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "El guardado falló."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Ha habido un error mientras se cargaba el archivo PDF, por favor, intente de "
"nuevo."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "¿Realmente desea salir del editor sin haber guardado sus cambios?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-11-10 05:00+0000\n"
"Last-Translator: Jaakko Rinta-Filppula <jaakko@r-f.fi>\n"
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -367,46 +367,46 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Tekstiobjekti"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Viivakoodialue"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Viivakoodialue"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Tallennus epäonnistui."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: French\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-12-04 01:00+0000\n"
"Last-Translator: Eva-Maria Obermann <obermann@rami.io>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -393,47 +393,47 @@ msgstr ""
"Le fichier PDF généré en arrière-plan n'a pas pu être chargé pour la raison "
"suivante :"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Groupe d'objets"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Objet texte"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Zone de code-barres"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Zone de code-barres"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Propulsé par pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objet"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Conception des billets"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "L'enregistrement a échoué."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Erreur lors du téléchargement de votre fichier PDF, veuillez réessayer."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Voulez-vous vraiment quitter l'éditeur sans sauvegarder vos modifications ?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2022-02-22 22:00+0000\n"
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -363,45 +363,45 @@ msgstr "QR de validación"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "O arquivo PDF de fondo non se puido cargar polo motivo seguinte:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupo de obxectos"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Obxecto de texto"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Área para código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Área de imaxe"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Desenvolto por Pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Obxecto"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Deseño do tícket"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "O gardado fallou."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Houbo un erro mentres se cargaba o arquivo PDF. Por favor, inténteo de novo."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Realmente desexa saír do editor sen gardar os cambios?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-09-24 13:54+0000\n"
"Last-Translator: ofirtro <ofir.tro@gmail.com>\n"
"Language-Team: Hebrew <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -354,44 +354,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2020-01-24 08:00+0000\n"
"Last-Translator: Prokaj Miklós <mixolid0@gmail.com>\n"
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -391,46 +391,46 @@ msgstr "Check in QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "A PDF háttér fájl nem tölthető be a következők miatt:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "tárgy csoport"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Szöveg"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Vonalkód terület"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Vonalkód terület"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "pretix által működtetett"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "objektum"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Jegy design"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Mentés sikertelen."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Hiba a PDF fájl feltöltése közben, próbálja újra."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Biztosan ki akar lépni a szerkesztőből a változtatások mentése nélkül?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2022-02-28 23:00+0000\n"
"Last-Translator: Emanuele Signoretta <signorettae@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -363,44 +363,44 @@ msgstr "Check-in con QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Il file PDF di sfondo non può essere caricato per le seguenti ragioni:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Gruppo di oggetti"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Oggetto testo"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Area codice a barra"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Area immagini"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Powered by Pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Oggetto"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Design biglietto"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Salvataggio fallito."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Errore durante il caricamento del tuo file PDF, prova di nuovo."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Vuoi davvero abbandonare l'editor senza salvare le modifiche?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2022-03-15 00:00+0000\n"
"Last-Translator: Yuriko Matsunami <y.matsunami@enobyte.com>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -362,44 +362,44 @@ msgstr "チェックイン用QRコード"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "以下の理由によりPDFファイルの読み込みに失敗しました:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "オブジェクトグループ"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "テキストオブジェクト"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "バーコードエリア"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "画像エリア"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Pretixのイベントチケット売り場"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "オブジェクト"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "チケットのデザイン"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "保存できませんでした。"
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "PDFのアップロード中に問題が発生しました。再試行してください。"
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "変更内容を保存せずに編集を終了しますか?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-12-09 15:49+0000\n"
"Last-Translator: Ilona Zilgalve <i.zilgalve@riga-jurmala.com>\n"
"Language-Team: Latvian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -364,45 +364,45 @@ msgstr "Reģistrācijas QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Fona PDF fails nevarēja ielādēties sekojoša iemesla dēļ:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Objektu grupa"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Teksta objekts"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Svītru koda lauks"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Attēla lauks"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Pretix atbalstīts"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekts"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Biļetes dizains"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Saglabāšana neizdevās."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Radusies kļūda augšupielādējot jūsu PDF failu, lūdzu, mēģiniet vēlreiz."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Vai jūs tiešām vēlaties iziet no rediģēšanas lauka bez veikto izmaiņu "
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-05-31 11:26+0000\n"
"Last-Translator: zackern <zacker@zacker.no>\n"
"Language-Team: Norwegian Bokmål <https://translate.pretix.eu/projects/pretix/"
@@ -362,44 +362,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-10-29 02:00+0000\n"
"Last-Translator: Maarten van den Berg <maartenberg1@gmail.com>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -361,44 +361,44 @@ msgstr "QR-code voor check-in"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Het PDF-achtergrondbestand kon niet geladen worden met als reden:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Groep van objecten"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Tekstobject"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Barcode gebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Afbeeldingsgebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Mogelijk gemaakt door pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Object"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Ticketontwerp"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Opslaan mislukt."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Probleem bij het uploaden van het PDF-bestand, probeer het opnieuw."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Wilt u de editor verlaten zonder uw wijzigingen op te slaan?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -349,44 +349,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-08-05 04:00+0000\n"
"Last-Translator: Maarten van den Berg <maartenberg1@gmail.com>\n"
"Language-Team: Dutch (informal) <https://translate.pretix.eu/projects/pretix/"
@@ -366,44 +366,44 @@ msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
"Het PDF-achtergrondbestand kon niet geladen worden om de volgende reden:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Groep van objecten"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Tekstobject"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Barcodegebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Afbeeldingsgebied"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Mogelijk gemaakt door pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Object"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Kaartjesontwerp"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Opslaan mislukt."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Probleem bij het uploaden van het PDF-bestand, probeer het opnieuw."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Wil je de editor verlaten zonder je wijzigingen op te slaan?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2019-09-24 19:00+0000\n"
"Last-Translator: Serge Bazanski <q3k@hackerspace.pl>\n"
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -396,46 +396,46 @@ msgstr "QR zameldowania"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Błąd ładowania pliku PDF tła:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupa obiektów"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Obiekt tekstowy"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Miejsce na kod kreskowy"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Miejsce na kod kreskowy"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Wygenerowane przez pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Obiekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Projekt biletu"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Błąd zapisu."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Błąd uploadu pliku PDF, prosimy spróbować ponownie."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Czy na pewno opuścić edytor bez zapisania zmian?"
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -350,44 +350,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -350,44 +350,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2019-03-19 09:00+0000\n"
"Last-Translator: Vitor Reis <vitor.reis7@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
@@ -401,46 +401,46 @@ msgstr "QR Check-in"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "O arquivo de fundo PDF não pôde ser carregado pelo seguinte motivo:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupo de objetos"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Objeto de texto"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Área de código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Área de código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Distribuído por pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objeto"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Design de bilhetes"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Erro ao salvar."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Erro durante o upload do seu arquivo PDF, tente novamente."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Você realmente quer deixar o editor sem salvar suas mudanças?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2020-10-27 06:00+0000\n"
"Last-Translator: David Vaz <davidmgvaz@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
@@ -381,46 +381,46 @@ msgstr "Check-in QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "O ficheiro de fundo PDF não pôde ser carregado pela seguinte razão:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupo de objectos"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Objecto de texto"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Área do código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Área do código de barras"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Powered by pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objecto"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Design do Bilhete"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Salvar falhou."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Erro ao carregar o seu ficheiro PDF, por favor tente novamente."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Quer mesmo deixar o editor sem guardar as suas alterações?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -350,44 +350,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-08-09 13:10+0000\n"
"Last-Translator: Svyatoslav <slava@digitalarthouse.eu>\n"
"Language-Team: Russian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -394,46 +394,46 @@ msgstr "QR-код для регистрации"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Не удалось загрузить фоновый файл PDF по следующей причине:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Группа объектов"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Текстовый объект"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Область штрих-кода"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Область штрих-кода"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "На базе pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Объект"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Дизайн билета"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Сохранить не удалось."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Ошибка при загрузке файла PDF, попробуйте ещё раз."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Вы действительно хотите выйти из редактора без сохранения изменений?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -349,44 +349,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2019-08-27 08:00+0000\n"
"Last-Translator: Bostjan Marusic <bostjan@brokenbones.si>\n"
"Language-Team: Slovenian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -393,46 +393,46 @@ msgstr "QR koda za check-in"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Ozadja PDF ni bilo mogoče naložiti zaradi naslednjega razloga:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Skupina objektov"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Tekstovni objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Področje za črtno kodo"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Področje za črtno kodo"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Powered by pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Oblikovanje vstopnice"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Shranjevanje ni bilo uspešno."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Napaka pri nalaganju datoteke PDF. Poskusite ponovno."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Ali zares želite zapustiti urejevalnik ne da bi shranili spremembe?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2022-03-03 07:00+0000\n"
"Last-Translator: MaLund13 <mart.lund13@gmail.com>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -361,44 +361,44 @@ msgstr "QR-kod för att Checka in"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "Bakgrunds-filen till PDFen kunde inte laddas av följande orsak:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Grupp av objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Textobjekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "QR-kod-område"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr "Bildområde"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Drivs av pretix"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Objekt"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Biljettdesign"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Misslyckades att spara."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "Ett fel uppstod när du laddade upp din PDF-fil, vänligen försök igen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Vill du verkligen lämna editorn utan att spara dina ändringar?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2018-09-03 06:36+0000\n"
"Last-Translator: Yunus Fırat Pişkin <firat.piskin@idvlabs.com>\n"
"Language-Team: Turkish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -400,46 +400,46 @@ msgstr "Giriş QR"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "PDF arka plan dosyası aşağıdaki nedenden dolayı yüklenemedi:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "Nesne grubu"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "Metin nesnesi"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "Barkod alanı"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "Barkod alanı"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "Pretix tarafından desteklenmektedir"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "Nesne"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "Bilet tasarımı"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "Kaydetme başarısız oldu."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "PDF dosyanızı yüklerken hata oluştu, lütfen tekrar deneyin."
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Değişiklikleri kaydetmeden editörden gerçekten ayrılmak istiyor musunuz?"
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -353,44 +353,44 @@ msgstr ""
msgid "The PDF background file could not be loaded for the following reason:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
msgid "Image area"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-31 12:36+0000\n"
"POT-Creation-Date: 2022-03-21 15:59+0000\n"
"PO-Revision-Date: 2021-12-03 08:37+0000\n"
"Last-Translator: ExtremeX-BB <qq754163444@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.pretix.eu/projects/"
@@ -366,46 +366,46 @@ msgstr "签到QR码"
msgid "The PDF background file could not be loaded for the following reason:"
msgstr "由于以下原因无法加载PDF背景文件:"
#: pretix/static/pretixcontrol/js/ui/editor.js:624
#: pretix/static/pretixcontrol/js/ui/editor.js:615
msgid "Group of objects"
msgstr "对象组"
#: pretix/static/pretixcontrol/js/ui/editor.js:630
#: pretix/static/pretixcontrol/js/ui/editor.js:621
msgid "Text object"
msgstr "文本对象"
#: pretix/static/pretixcontrol/js/ui/editor.js:632
#: pretix/static/pretixcontrol/js/ui/editor.js:623
msgid "Barcode area"
msgstr "条码区"
#: pretix/static/pretixcontrol/js/ui/editor.js:634
#: pretix/static/pretixcontrol/js/ui/editor.js:625
#, fuzzy
#| msgid "Barcode area"
msgid "Image area"
msgstr "条码区"
#: pretix/static/pretixcontrol/js/ui/editor.js:636
#: pretix/static/pretixcontrol/js/ui/editor.js:627
msgid "Powered by pretix"
msgstr "由pretix驱动"
#: pretix/static/pretixcontrol/js/ui/editor.js:638
#: pretix/static/pretixcontrol/js/ui/editor.js:629
msgid "Object"
msgstr "对象"
#: pretix/static/pretixcontrol/js/ui/editor.js:642
#: pretix/static/pretixcontrol/js/ui/editor.js:633
msgid "Ticket design"
msgstr "门票设计"
#: pretix/static/pretixcontrol/js/ui/editor.js:932
#: pretix/static/pretixcontrol/js/ui/editor.js:923
msgid "Saving failed."
msgstr "保存失败."
#: pretix/static/pretixcontrol/js/ui/editor.js:982
#: pretix/static/pretixcontrol/js/ui/editor.js:1021
#: pretix/static/pretixcontrol/js/ui/editor.js:973
#: pretix/static/pretixcontrol/js/ui/editor.js:1012
msgid "Error while uploading your PDF file, please try again."
msgstr "上传PDF文件时出错,请重试。"
#: pretix/static/pretixcontrol/js/ui/editor.js:1006
#: pretix/static/pretixcontrol/js/ui/editor.js:997
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "你真的想离开编辑器而不保存你的更改吗?"
-1
View File
@@ -260,7 +260,6 @@ class RegistrationForm(forms.Form):
customer = self.request.organizer.customers.create(
email=self.cleaned_data['email'],
name_parts=self.cleaned_data['name_parts'],
phone=self.cleaned_data.get('phone'),
is_active=True,
is_verified=False,
locale=get_language_without_region(),
@@ -31,8 +31,6 @@
</p>
{% if line.seat or line.voucher or line.subevent or line.used_membership%}
<dl class="dl-inline">
{% elif event.settings.show_checkin_number_user and line.checkin_count %}
<dl class="dl-inline">
{% endif %}
{% if line.seat %}
<div class="cart-icon-details">
@@ -96,25 +94,8 @@
</dd>
</div>
{% endif %}
{% if event.settings.show_checkin_number_user and line.checkin_count %}
<div class="cart-icon-details">
<dt class="sr-only">{% trans "Usage:" context "ticket_checkins" %}</dt>
<dd class="text-success">
<span class="fa fa-check-circle fa-fw text-success" aria-hidden="true"></span>
<strong>
{% blocktrans trimmed count count=line.checkin_count %}
This ticket has been used once.
{% plural %}
This ticket has been used {{ count }} times.
{% endblocktrans %}
</strong>
</dd>
</div>
{% endif %}
{% if line.seat or line.voucher or line.subevent or line.used_membership%}
</dl>
{% elif event.settings.show_checkin_number_user and line.checkin_count %}
</dl>
{% endif %}
{% if line.issued_gift_cards.exists %}
+9 -32
View File
@@ -47,7 +47,7 @@ from django.contrib import messages
from django.core.exceptions import ValidationError
from django.core.files import File
from django.db import transaction
from django.db.models import Count, Exists, OuterRef, Q, Subquery, Sum
from django.db.models import Exists, OuterRef, Q, Sum
from django.http import (
FileResponse, Http404, HttpResponseRedirect, JsonResponse,
)
@@ -60,8 +60,7 @@ from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import TemplateView, View
from pretix.base.models import (
CachedTicket, Checkin, GiftCard, Invoice, Order, OrderPosition, Quota,
TaxRule,
CachedTicket, GiftCard, Invoice, Order, OrderPosition, Quota, TaxRule,
)
from pretix.base.models.orders import (
CachedCombinedTicket, InvoiceAddress, OrderFee, OrderPayment, OrderRefund,
@@ -125,13 +124,12 @@ class OrderDetailMixin(NoSearchIndexViewMixin):
class OrderPositionDetailMixin(NoSearchIndexViewMixin):
@cached_property
def position(self):
qs = OrderPosition.objects.filter(
p = OrderPosition.objects.filter(
order__event=self.request.event,
addon_to__isnull=True,
order__code=self.kwargs['order'],
positionid=self.kwargs['position']
).select_related('order', 'order__event')
p = qs.first()
).select_related('order', 'order__event').first()
if p:
if p.web_secret.lower() == self.kwargs['secret'].lower():
return p
@@ -231,21 +229,9 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TicketPageMixin,
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
qs = self.order.positions.prefetch_related('issued_gift_cards').select_related('tax_rule')
if self.request.event.settings.show_checkin_number_user:
qs = qs.annotate(
checkin_count=Subquery(
Checkin.objects.filter(
successful=True, type=Checkin.TYPE_ENTRY, position_id=OuterRef('pk')
).order_by().values('position').annotate(c=Count('*')).values('c')
)
)
ctx['cart'] = self.get_cart(
answers=True,
downloads=ctx['can_download'],
queryset=qs,
answers=True, downloads=ctx['can_download'],
queryset=self.order.positions.prefetch_related('issued_gift_cards').select_related('tax_rule'),
order=self.order
)
ctx['tickets_with_download'] = [p for p in ctx['cart']['positions'] if p.generate_ticket]
@@ -342,23 +328,14 @@ class OrderPositionDetails(EventViewMixin, OrderPositionDetailMixin, CartMixin,
return buttons
def get_context_data(self, **kwargs):
qs = self.order.positions.select_related('tax_rule').filter(
Q(pk=self.position.pk) | Q(addon_to__id=self.position.pk)
)
if self.request.event.settings.show_checkin_number_user:
qs = qs.annotate(
checkin_count=Subquery(
Checkin.objects.filter(
successful=True, type=Checkin.TYPE_ENTRY, position_id=OuterRef('pk')
).order_by().values('position').annotate(c=Count('*')).values('c')
)
)
ctx = super().get_context_data(**kwargs)
ctx['can_download_multi'] = False
ctx['position'] = self.position
ctx['cart'] = self.get_cart(
answers=True, downloads=ctx['can_download'],
queryset=qs,
queryset=self.order.positions.select_related('tax_rule').filter(
Q(pk=self.position.pk) | Q(addon_to__id=self.position.pk)
),
order=self.order
)
ctx['tickets_with_download'] = [p for p in ctx['cart']['positions'] if p.generate_ticket]
+3 -3
View File
@@ -2746,9 +2746,9 @@
}
},
"minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"mkdirp": {
"version": "1.0.4",
@@ -286,7 +286,7 @@ var editor = {
} else if (key.startsWith('meta:')) {
return key.substr(5);
}
return $('#toolbox-content option[value='+key+'], #toolbox-content option[data-old-value='+key+']').attr('data-sample') || '';
return $('#toolbox-content option[value='+key+']').attr('data-sample') || '';
},
_load_page: function (page_number, dump) {
@@ -396,7 +396,6 @@ var editor = {
$("#toolbox-content-other").hide();
$("#toolbox-content-other-i18n").hide();
$("#toolbox-content-other-help").hide();
$(".add-buttons button").prop('disabled', false);
if (dump) {
@@ -493,15 +492,9 @@ var editor = {
if (!o.content && o.type == "barcodearea") {
o.content = "secret";
}
var $migrate_to = $("#toolbox-content option[data-old-value='" + o.content + "']");
if ($migrate_to.length > 0) {
$("#toolbox-content").val($migrate_to.val());
} else {
$("#toolbox-content").val(o.content);
}
$("#toolbox-content").val(o.content);
$("#toolbox-content-other").toggle($("#toolbox-content").val() === "other");
$("#toolbox-content-other-i18n").toggle($("#toolbox-content").val() === "other_i18n");
$("#toolbox-content-other-help").toggle($("#toolbox-content").val() === "other" || $("#toolbox-content").val() === "other_i18n");
if (o.content === "other") {
$("#toolbox-content-other").val(o.text);
} else if (o.content === "other_i18n") {
@@ -544,7 +537,6 @@ var editor = {
$("#toolbox-content-other").toggle($("#toolbox-content").val() === "other");
$("#toolbox-content-other-i18n").toggle($("#toolbox-content").val() === "other_i18n");
$("#toolbox-content-other-help").toggle($("#toolbox-content").val() === "other" || $("#toolbox-content").val() === "other_i18n");
o.content = $("#toolbox-content").val();
if ($("#toolbox-content").val() === "other") {
o.text = $("#toolbox-content-other").val();
@@ -599,7 +591,6 @@ var editor = {
o.rotate(parseFloat($("#toolbox-textrotation").val()));
$("#toolbox-content-other").toggle($("#toolbox-content").val() === "other");
$("#toolbox-content-other-i18n").toggle($("#toolbox-content").val() === "other_i18n");
$("#toolbox-content-other-help").toggle($("#toolbox-content").val() === "other" || $("#toolbox-content").val() === "other_i18n");
o.content = $("#toolbox-content").val();
if ($("#toolbox-content").val() === "other") {
o.setText($("#toolbox-content-other").val());
-311
View File
@@ -1,311 +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/>.
#
import datetime
from decimal import Decimal
from unittest import mock
import freezegun
import pytest
from django_countries.fields import Country
from django_scopes import scopes_disabled
from pytz import UTC
from pretix.base.models import InvoiceAddress, Order, OrderPosition
from pretix.base.models.orders import OrderFee
from pretix.base.services.invoices import (
generate_cancellation, generate_invoice,
)
@pytest.fixture
def item(event):
return event.items.create(name="Budget Ticket", default_price=23)
@pytest.fixture
def item2(event2):
return event2.items.create(name="Budget Ticket", default_price=23)
@pytest.fixture
def taxrule(event):
return event.tax_rules.create(rate=Decimal('19.00'))
@pytest.fixture
def question(event, item):
q = event.questions.create(question="T-Shirt size", type="S", identifier="ABC")
q.items.add(item)
q.options.create(answer="XL", identifier="LVETRWVU")
return q
@pytest.fixture
def question2(event2, item2):
q = event2.questions.create(question="T-Shirt size", type="S", identifier="ABC")
q.items.add(item2)
return q
@pytest.fixture
def quota(event, item):
q = event.quotas.create(name="Budget Quota", size=200)
q.items.add(item)
return q
@pytest.fixture
def order(event, item, taxrule, question):
testtime = datetime.datetime(2017, 12, 1, 10, 0, 0, tzinfo=UTC)
event.plugins += ",pretix.plugins.stripe"
event.save()
with mock.patch('django.utils.timezone.now') as mock_now:
mock_now.return_value = testtime
o = Order.objects.create(
code='FOO', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING, secret="k24fiuwvu8kxz3y1",
datetime=datetime.datetime(2017, 12, 1, 10, 0, 0, tzinfo=UTC),
expires=datetime.datetime(2017, 12, 10, 10, 0, 0, tzinfo=UTC),
total=23, locale='en'
)
p1 = o.payments.create(
provider='stripe',
state='refunded',
amount=Decimal('23.00'),
payment_date=testtime,
)
o.refunds.create(
provider='stripe',
state='done',
source='admin',
amount=Decimal('23.00'),
execution_date=testtime,
payment=p1,
)
o.payments.create(
provider='banktransfer',
state='pending',
amount=Decimal('23.00'),
)
o.fees.create(fee_type=OrderFee.FEE_TYPE_PAYMENT, value=Decimal('0.25'), tax_rate=Decimal('19.00'),
tax_value=Decimal('0.05'), tax_rule=taxrule)
o.fees.create(fee_type=OrderFee.FEE_TYPE_PAYMENT, value=Decimal('0.25'), tax_rate=Decimal('19.00'),
tax_value=Decimal('0.05'), tax_rule=taxrule, canceled=True)
InvoiceAddress.objects.create(order=o, company="Sample company", country=Country('NZ'),
vat_id="DE123", vat_id_validated=True)
op = OrderPosition.objects.create(
order=o,
item=item,
variation=None,
price=Decimal("23"),
attendee_name_parts={"full_name": "Peter", "_scheme": "full"},
secret="z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
pseudonymization_id="ABCDEFGHKL",
positionid=1,
)
OrderPosition.objects.create(
order=o,
item=item,
variation=None,
price=Decimal("23"),
attendee_name_parts={"full_name": "Peter", "_scheme": "full"},
secret="YBiYJrmF5ufiTLdV1iDf",
pseudonymization_id="JKLM",
canceled=True,
positionid=2,
)
op.answers.create(question=question, answer='S')
return o
@pytest.fixture
def invoice(order):
testtime = datetime.datetime(2017, 12, 10, 10, 0, 0, tzinfo=UTC)
with mock.patch('django.utils.timezone.now') as mock_now:
mock_now.return_value = testtime
return generate_invoice(order)
TEST_INVOICE_RES = {
"order": "FOO",
"number": "DUMMY-00001",
"is_cancellation": False,
"invoice_from_name": "",
"invoice_from": "",
"invoice_from_zipcode": "",
"invoice_from_city": "",
"invoice_from_country": None,
"invoice_from_tax_id": "",
"invoice_from_vat_id": "",
"invoice_to": "Sample company\nNew Zealand\nVAT-ID: DE123",
"invoice_to_company": "Sample company",
"invoice_to_name": "",
"invoice_to_street": "",
"invoice_to_zipcode": "",
"invoice_to_city": "",
"invoice_to_state": "",
"invoice_to_country": "NZ",
"invoice_to_vat_id": "DE123",
"invoice_to_beneficiary": "",
"custom_field": None,
"date": "2017-12-10",
"refers": None,
"locale": "en",
"introductory_text": "",
"internal_reference": "",
"additional_text": "",
"payment_provider_text": "",
"footer_text": "",
"foreign_currency_display": None,
"foreign_currency_rate": None,
"foreign_currency_rate_date": None,
"lines": [
{
"position": 1,
"description": "Budget Ticket<br />Attendee: Peter",
'subevent': None,
'event_date_from': '2017-12-27T10:00:00Z',
'event_date_to': None,
'event_location': None,
'attendee_name': 'Peter',
'item': None,
'variation': None,
'fee_type': None,
'fee_internal_type': None,
"gross_value": "23.00",
"tax_value": "0.00",
"tax_name": "",
"tax_rate": "0.00"
},
{
"position": 2,
"description": "Payment fee",
'subevent': None,
'event_date_from': '2017-12-27T10:00:00Z',
'event_date_to': None,
'event_location': None,
'attendee_name': None,
'fee_type': "payment",
'fee_internal_type': None,
'item': None,
'variation': None,
"gross_value": "0.25",
"tax_value": "0.05",
"tax_name": "",
"tax_rate": "19.00"
}
]
}
@pytest.mark.django_db
def test_invoice_list(token_client, organizer, event, order, item, invoice):
res = dict(TEST_INVOICE_RES)
res['lines'][0]['item'] = item.pk
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/'.format(organizer.slug, event.slug))
assert resp.status_code == 200
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?order=FOO'.format(organizer.slug, event.slug))
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?order=BAR'.format(organizer.slug, event.slug))
assert [] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?number={}'.format(
organizer.slug, event.slug, invoice.number))
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?number=XXX'.format(
organizer.slug, event.slug))
assert [] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?locale=en'.format(
organizer.slug, event.slug))
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?locale=de'.format(
organizer.slug, event.slug))
assert [] == resp.data['results']
with scopes_disabled():
ic = generate_cancellation(invoice)
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?is_cancellation=false'.format(
organizer.slug, event.slug))
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?is_cancellation=true'.format(
organizer.slug, event.slug))
assert len(resp.data['results']) == 1
assert resp.data['results'][0]['number'] == ic.number
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?refers={}'.format(
organizer.slug, event.slug, invoice.number))
assert len(resp.data['results']) == 1
assert resp.data['results'][0]['number'] == ic.number
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?refers={}'.format(
organizer.slug, event.slug, ic.number))
assert [] == resp.data['results']
@pytest.mark.django_db
def test_invoice_detail(token_client, organizer, event, item, invoice):
res = dict(TEST_INVOICE_RES)
res['lines'][0]['item'] = item.pk
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/{}/'.format(organizer.slug, event.slug,
invoice.number))
assert resp.status_code == 200
assert res == resp.data
@pytest.mark.django_db
def test_invoice_regenerate(token_client, organizer, event, invoice):
organizer.settings.invoice_regenerate_allowed = True
with scopes_disabled():
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
with freezegun.freeze_time("2017-12-10"):
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/regenerate/'.format(
organizer.slug, event.slug, invoice.number
))
assert resp.status_code == 204
invoice.refresh_from_db()
assert "ACME Ltd" in invoice.invoice_to
@pytest.mark.django_db
def test_invoice_reissue(token_client, organizer, event, invoice):
with scopes_disabled():
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/reissue/'.format(
organizer.slug, event.slug, invoice.number
))
assert resp.status_code == 204
invoice.refresh_from_db()
assert "ACME Ltd" not in invoice.invoice_to
with scopes_disabled():
assert invoice.order.invoices.count() == 3
invoice = invoice.order.invoices.last()
assert "ACME Ltd" in invoice.invoice_to
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+21 -13
View File
@@ -207,6 +207,7 @@ class PaymentSearchTest(SoupTest):
attendee_email="att@att.com"
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_CONFIRMED,
amount=Decimal("14"),
order=o1,
@@ -214,6 +215,7 @@ class PaymentSearchTest(SoupTest):
info="{test payment order 1}"
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_REFUNDED,
amount=Decimal("14"),
order=o1,
@@ -221,6 +223,7 @@ class PaymentSearchTest(SoupTest):
info="{refunded payment}"
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_CANCELED,
amount=Decimal("14"),
order=o1,
@@ -228,6 +231,7 @@ class PaymentSearchTest(SoupTest):
info="{canceled payment}"
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_FAILED,
amount=Decimal("14"),
order=o1,
@@ -235,6 +239,7 @@ class PaymentSearchTest(SoupTest):
info="{failed payment}"
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_PENDING,
amount=Decimal("14"),
order=o1,
@@ -259,6 +264,7 @@ class PaymentSearchTest(SoupTest):
attendee_name_parts={'full_name': "Mark", "_scheme": "full"}
)
OrderPayment.objects.create(
local_id=1,
state=OrderPayment.PAYMENT_STATE_CREATED,
amount=Decimal("15"),
order=o2,
@@ -373,10 +379,12 @@ class PaymentSearchTest(SoupTest):
b = str(self.orga1.pk)
resp = self.client.get('/control/search/payments/?organizer=' + b).content.decode()
print(resp)
assert "FO1" in resp
b = str(self.orga2.pk)
resp = self.client.get('/control/search/payments/?organizer=' + b).content.decode()
print(resp)
assert "FO1" not in resp
def test_filter_state(self):
@@ -386,18 +394,18 @@ class PaymentSearchTest(SoupTest):
confirmed = OrderPayment.PAYMENT_STATE_CONFIRMED
resp = self.client.get('/control/search/payments/?state=' + confirmed).content.decode()
assert "FO1A-P-1" in resp
assert "FO1A-P-2" not in resp
assert "FO1A-P-3" not in resp
assert "FO1A-P-4" not in resp
assert "FO1A-P-5" not in resp
assert "FO1A-P-6" not in resp
assert "P-1" in resp
assert "P-2" not in resp
assert "P-3" not in resp
assert "P-4" not in resp
assert "P-5" not in resp
assert "P-6" not in resp
def test_filter_provider(self):
resp = self.client.get('/control/search/payments/?provider=giftcard').content.decode()
assert "FO1A-P-1" in resp
assert "FO1A-P-2" not in resp
assert "FO1A-P-3" not in resp
assert "FO1A-P-4" not in resp
assert "FO1A-P-5" not in resp
assert "FO1A-P-6" not in resp
resp = self.client.get('/control/search/payments/?state=giftcard').content.decode()
assert "P-1" in resp
assert "P-2" not in resp
assert "P-3" not in resp
assert "P-4" not in resp
assert "P-5" not in resp
assert "P-6" not in resp