forked from CGM_Public/pretix_original
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d97648802e |
@@ -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*:
|
||||
|
||||
|
||||
@@ -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
|
||||
-----------------------
|
||||
|
||||
@@ -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 *
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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'
|
||||
)
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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?"
|
||||
|
||||
|
||||
+1242
-1201
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 ?"
|
||||
|
||||
+1108
-1160
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: 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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?"
|
||||
|
||||
|
||||
+1049
-1127
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
@@ -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
@@ -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: 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
@@ -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
@@ -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
@@ -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 "你真的想离开编辑器而不保存你的更改吗?"
|
||||
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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
@@ -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());
|
||||
|
||||
@@ -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
+3466
-9
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user