Compare commits

...
Author SHA1 Message Date
Mira Weller 4a59b5ab34 Make link to order work, even if the order is in a different event 2025-02-25 15:13:53 +01:00
Mira Weller e08a1551ee specify only checkinlist-ID, infer events 2025-02-25 14:53:57 +01:00
Mira Weller 65abae9cbc Add test cases 2025-02-07 13:37:21 +01:00
Mira Weller 97da945fe4 Keep pre-existing behaviour in case the specified checkinlist matches, even without the new parameter 2025-02-07 13:34:31 +01:00
Mira Weller faf50623d0 failed checkin: only add ticket info if it belongs to an event active on the scanner 2025-02-07 13:16:33 +01:00
Mira Weller cacc051437 Explicitly search secret only in current organizer's OrderPositions 2025-02-07 12:59:16 +01:00
Raphael MichelandGitHub c4436ca319 Change wording for "show_dates_on_frontpage" setting (#4798) 2025-02-06 14:55:15 +01:00
Martin GrossandGitHub c87401ef5d Widget: Prefill email_repeat with data-email attribute (Z#23181657) (#4813) 2025-02-06 12:07:43 +01:00
Raphael MichelandGitHub a53def0947 Fix CSRF token of admin mode button being removed if e.g. support menu is clicked (#4812) 2025-02-06 12:07:10 +01:00
MiraandGitHub 64effc84a3 Hide "Optional" label on conditionally required "Cross-selling condition" field (#4809) 2025-02-06 11:52:27 +01:00
Hannu KaakinenandRaphael Michel 867ae8c61a Translations: Update Finnish
Currently translated at 34.2% (2004 of 5846 strings)

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

powered by weblate
2025-02-06 11:51:59 +01:00
조정화andRaphael Michel 8d8a4c4417 Translations: Update Korean
Currently translated at 1.9% (114 of 5846 strings)

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

powered by weblate
2025-02-06 11:51:59 +01:00
Hannu KaakinenandRaphael Michel 1985f1d2de Translations: Update Finnish
Currently translated at 33.6% (1965 of 5846 strings)

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

powered by weblate
2025-02-06 11:51:59 +01:00
b6c903a7ba Invoice renderer: Group invoice lines even with addons (Z#23173618) (#4744)
* Invoice renderer: Group invoice lines even with addons (Z#23173618)

* Add unit test

* Update src/pretix/base/invoice.py

Co-authored-by: Mira <weller@rami.io>

---------

Co-authored-by: Mira Weller <weller@rami.io>
2025-02-06 10:55:09 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9df86b9339 Bump @babel/core from 7.26.0 to 7.26.7 in /src/pretix/static/npm_dir (#4800)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.26.0 to 7.26.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.7/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 17:40:14 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Raphael Michel
4e4e187a84 Update beautifulsoup4 requirement from ==4.12.* to ==4.13.* (#4804)
* Update beautifulsoup4 requirement from ==4.12.* to ==4.13.*

Updates the requirements on [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Replace findAll with find_all

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raphael Michel <michel@rami.io>
2025-02-05 17:39:23 +01:00
Raphael MichelandGitHub 5d56cd3917 Fix missing atomicity for handling forms and logs (might be the reason for Z#23178997) (#4755) 2025-02-05 16:56:38 +01:00
Kian CrossandGitHub 5d4b218aa6 Banktransfer: Handle trailing commas in headers for Lloyds Bank CSV files (#4782)
Lloyds Bank (UK) CSV files include a trailing comma in the header row
but not in the data rows, causing the `csvimport.parse` function to
skip the data rows. This occurs because the header length exceeds the
row length, making them unequal to `hint.cols`.

This commit adjusts the length check to allow a range of acceptable row
lengths, from the index of the last non-empty column in the header to
`hint.cols`. This ensures compatibility with headers containing one or
more trailing commas without affecting rows with correctly labelled columns.

The solution avoids breaking changes by leaving underlying data structures
untouched. Alternative approaches, such as dropping trailing commas before
parsing or removing empty elements after parsing, were avoided due to
potential risks. Specifically, trailing columns might contain data that
banks provide but fail to label in the header row.
2025-02-05 16:56:28 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
03d3879787 Update isort requirement from ==5.13.* to ==6.0.* (#4789)
Updates the requirements on [isort](https://github.com/pycqa/isort) to permit the latest version.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.13.0...6.0.0)

---
updated-dependencies:
- dependency-name: isort
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 16:53:10 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c3db1dfb09 Update geoip2 requirement from ==4.* to ==5.* (#4792)
Updates the requirements on [geoip2](https://github.com/maxmind/GeoIP2-python) to permit the latest version.
- [Release notes](https://github.com/maxmind/GeoIP2-python/releases)
- [Changelog](https://github.com/maxmind/GeoIP2-python/blob/main/HISTORY.rst)
- [Commits](https://github.com/maxmind/GeoIP2-python/compare/v4.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: geoip2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 16:52:53 +01:00
MiraandGitHub 026a5e2941 Log automatic team creation in event create wizard (#4802) 2025-02-05 16:52:36 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
59d4673dde Bump @babel/preset-env in /src/pretix/static/npm_dir (#4801)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.26.0 to 7.26.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.7/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 16:52:16 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
30f11deb19 Update reportlab requirement from ==4.2.* to ==4.3.* (#4805)
Updates the requirements on [reportlab](https://www.reportlab.com/) to permit the latest version.

---
updated-dependencies:
- dependency-name: reportlab
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 16:51:22 +01:00
조정화andRaphael Michel 97c456db34 Translations: Update Korean
Currently translated at 1.3% (81 of 5846 strings)

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

powered by weblate
2025-02-05 12:51:33 +01:00
Antti NironenandRaphael Michel cf9c85c60b Translations: Update Finnish
Currently translated at 29.2% (1711 of 5846 strings)

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

powered by weblate
2025-02-05 12:51:33 +01:00
Wiktor PrzybylskiandRaphael Michel 308a6acfe3 Translations: Update Polish
Currently translated at 98.5% (5764 of 5846 strings)

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

powered by weblate
2025-02-05 12:51:33 +01:00
Hijiri UmemotoandRaphael Michel 388a5f6a1e Translations: Update Japanese
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-02-05 12:51:33 +01:00
Hannu KaakinenandRaphael Michel 25ee4a747f Translations: Update Finnish
Currently translated at 28.8% (1684 of 5846 strings)

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

powered by weblate
2025-02-05 12:51:33 +01:00
Raphael Michel f6b0e35e40 VAT ID check: Include response in error log 2025-02-05 12:50:20 +01:00
Raphael Michel 85cba253a8 Translations: Remove obvious ChatGPT responses from nb_NO 2025-02-05 12:29:12 +01:00
Raphael MichelandGitHub c820d742d4 Generate invoice earlier in payment method change process (Z#23179304) (#4763)
* Generate invoice earlier in payment method change process (Z##23179304)

* Resolve review note
2025-02-03 17:39:46 +01:00
Raphael MichelandGitHub 2a3cdd85e8 Prevent order changes that interfer with a pending payment that can't be aborted (Z#23179178) (#4765) 2025-02-03 17:09:17 +01:00
0b840f8133 Update translations (#4799)
* Translations: Update Portuguese (Portugal)

Currently translated at 85.2% (4986 of 5846 strings)

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

powered by weblate

* Translations: Update Portuguese

Currently translated at 3.0% (178 of 5846 strings)

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

powered by weblate

* Translations: Update Korean

Currently translated at 1.3% (76 of 5846 strings)

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

powered by weblate

---------

Co-authored-by: Vasco Baleia <vb2003.12@gmail.com>
Co-authored-by: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>
Co-authored-by: 조정화 <junghwa.jo@om.org>
2025-02-03 17:08:21 +01:00
Raphael MichelandGitHub 58db550e23 Do not allow to cancel pending payments by default (Z#23179178) 2025-02-03 17:07:19 +01:00
Raphael Michel 34da20972e Bump version to 2025.2.0.dev0 2025-01-31 16:21:06 +01:00
Raphael Michel 09440a96f8 Bump version to 2025.1.0 2025-01-31 16:19:48 +01:00
Raphael Michel 88d9d05879 Bump version to 2025.1.0 2025-01-31 16:17:58 +01:00
Raphael MichelandRaphael Michel cf589bf30c Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Raphael MichelandRaphael Michel 22e530bc62 Translations: Update German
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
조정화andRaphael Michel 4553f4a0cd Translations: Update Korean
Currently translated at 1.2% (75 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
ChislonandRaphael Michel 666a6f9b93 Translations: Update Chinese (Traditional Han script)
Currently translated at 100.0% (235 of 235 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
ChislonandRaphael Michel 1491420346 Translations: Update Chinese (Traditional Han script)
Currently translated at 97.0% (5672 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Lorhan SohakyandRaphael Michel c8156a56ef Translations: Update Portuguese (Brazil)
Currently translated at 18.2% (1069 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Cornelius KibelkaandRaphael Michel 9a4b0681b4 Translations: Update Portuguese (Brazil)
Currently translated at 18.2% (1069 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Linnea ThelanderandRaphael Michel 45c30cd59d Translations: Update Swedish
Currently translated at 96.5% (5646 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
CVZ-esandRaphael Michel 97ce34625a Translations: Update Spanish
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
CVZ-esandRaphael Michel 680521d8f2 Translations: Update French
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Cornelius KibelkaandRaphael Michel 7ee14a12f8 Translations: Update Portuguese (Brazil)
Currently translated at 17.4% (1021 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
a1100412ff OIDC: Allow to add query parameters to Authorization URL (#4791)
Co-authored-by: Mira <weller@rami.io>
2025-01-30 13:39:31 +01:00
46 changed files with 1889 additions and 2169 deletions
+4 -4
View File
@@ -28,7 +28,7 @@ classifiers = [
dependencies = [
"arabic-reshaper==3.0.0", # Support for Arabic in reportlab
"babel",
"BeautifulSoup4==4.12.*",
"BeautifulSoup4==4.13.*",
"bleach==6.2.*",
"celery==5.4.*",
"chardet==5.2.*",
@@ -57,7 +57,7 @@ dependencies = [
"djangorestframework==3.15.*",
"dnspython==2.7.*",
"drf_ujson2==1.7.*",
"geoip2==4.*",
"geoip2==5.*",
"importlib_metadata==8.*", # Polyfill, we can probably drop this once we require Python 3.10+
"isoweek",
"jsonschema",
@@ -89,7 +89,7 @@ dependencies = [
"pyuca",
"qrcode==8.0",
"redis==5.2.*",
"reportlab==4.2.*",
"reportlab==4.3.*",
"requests==2.31.*",
"sentry-sdk==2.20.*",
"sepaxml==2.6.*",
@@ -113,7 +113,7 @@ dev = [
"fakeredis==2.26.*",
"flake8==7.1.*",
"freezegun",
"isort==5.13.*",
"isort==6.0.*",
"pep8-naming==0.14.*",
"potypo",
"pytest-asyncio>=0.24",
+1 -1
View File
@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
__version__ = "2024.12.0.dev0"
__version__ = "2025.2.0.dev0"
+20 -5
View File
@@ -163,12 +163,27 @@ class CheckinListViewSet(viewsets.ModelViewSet):
serializer.is_valid(raise_exception=True)
kwargs = {}
if not serializer.validated_data.get('position'):
kwargs['position'] = OrderPosition.all.filter(
secret=serializer.validated_data['raw_barcode']
).first()
clist = self.get_object()
if not serializer.validated_data.get('position'):
# an offline checkin failed, let's see whether a ticket with the given secret actually exists and just
# was not synced in time, so we can enrich the log message
try:
candidate_position = OrderPosition.all.get(
organizer=self.request.organizer,
secret=serializer.validated_data['raw_barcode']
)
except (OrderPosition.DoesNotExist, OrderPosition.MultipleObjectsReturned):
pass
else:
if candidate_position.event.pk != clist.event.pk and 'candidate_checkin_lists' in self.request.data:
try:
clist = candidate_position.event.checkin_lists.get(pk__in=self.request.data['candidate_checkin_lists'])
except CheckinList.DoesNotExist:
pass # ignore if candidate position's event was not active on device, if list was deleted in between
if candidate_position.event.pk == clist.event.pk:
kwargs['position'] = candidate_position
if serializer.validated_data.get('nonce'):
if kwargs.get('position'):
prev = kwargs['position'].all_checkins.filter(nonce=serializer.validated_data['nonce']).first()
+10 -1
View File
@@ -24,7 +24,7 @@ import hashlib
import logging
import time
from datetime import datetime
from urllib.parse import urlencode, urljoin
from urllib.parse import parse_qsl, urlencode, urljoin
import jwt
import requests
@@ -139,6 +139,11 @@ def oidc_validate_and_complete_config(config):
)
)
if "query_parameters" in config and config["query_parameters"]:
config["query_parameters"] = urlencode(
parse_qsl(config["query_parameters"])
)
config['provider_config'] = provider_config
return config
@@ -154,6 +159,10 @@ def oidc_authorize_url(provider, state, redirect_uri):
'state': state,
'redirect_uri': redirect_uri,
}
if "query_parameters" in provider.configuration and provider.configuration["query_parameters"]:
params.update(parse_qsl(provider.configuration["query_parameters"]))
return endpoint + '?' + urlencode(params)
+57 -1
View File
@@ -62,6 +62,58 @@ from pretix.presale.style import get_fonts
logger = logging.getLogger(__name__)
def addon_aware_groupby(iterable, key, is_addon):
"""
We use groupby() to visually group identical lines on an invoice. For example, instead of
Product 1 5.00 EUR
Product 1 5.00 EUR
Product 1 5.00 EUR
Product 2 7.00 EUR
We want to print
3x Product 1 5.00 EUR = 15.00 EUR
Product 2 7.00 EUR
However, this fails for setups with addon-products since groupby() only groups consecutive
lines with the same identity. So in
Product 1 5.00 EUR
+ Addon 1 2.00 EUR
Product 1 5.00 EUR
+ Addon 1 2.00 EUR
Product 1 5.00 EUR
+ Addon 2 3.00 EUR
There is no consecutive repetition of the same entity. This function provides a specialised groupby which
understands the product/addon relationship and packs groups of these addons together if they are, in fact,
identical groups:
2x Product 1 5.00 EUR = 10.00 EUR
+ 2x Addon 1 2.00 EUR = 4.00 EUR
Product 1 5.00 EUR
+ Addon 2 3.00 EUR
"""
packed_groups = []
for i in iterable:
if is_addon(i):
packed_groups[-1].append(i)
else:
packed_groups.append([i])
# Each packed_groups element contains a list with the parent product as first element, and any addon products following
def _reorder(packed_groups):
# Emit the products as individual products again, reordered by "all parent products, then all addon products"
# within each group.
for _, repeated_groups in groupby(packed_groups, key=lambda g: tuple(key(a) for a in g)):
for repeated_items in zip(*repeated_groups):
yield from repeated_items
return groupby(_reorder(packed_groups), key)
class NumberedCanvas(Canvas):
def __init__(self, *args, **kwargs):
self.font_regular = kwargs.pop('font_regular')
@@ -644,7 +696,11 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
line.event_date_from, line.event_date_to)
total = Decimal('0.00')
for (description, tax_rate, tax_name, net_value, gross_value, *ignored), lines in groupby(self.invoice.lines.all(), key=_group_key):
for (description, tax_rate, tax_name, net_value, gross_value, *ignored), lines in addon_aware_groupby(
self.invoice.lines.all(),
key=_group_key,
is_addon=lambda l: l.description.startswith(" +"),
):
lines = list(lines)
if has_taxes:
if len(lines) > 1:
+1 -1
View File
@@ -80,7 +80,7 @@ class OrderLogEntryType(EventLogEntryType):
content_type = Order
def object_link_args(self, order):
return {'code': order.code}
return {'event': order.event.slug, 'code': order.code}
def object_link_display_name(self, order):
return order.code
+9 -2
View File
@@ -957,12 +957,19 @@ class BasePaymentProvider:
def cancel_payment(self, payment: OrderPayment):
"""
Will be called to cancel a payment. The default implementation just sets the payment state to canceled,
but in some cases you might want to notify an external provider.
Will be called to cancel a payment. The default implementation fails if the payment is
``OrderPayment.PAYMENT_STATE_PENDING`` and ``abort_pending_allowed`` is false. Otherwise, it just sets the
payment state to canceled. In some cases you might want to modify this behaviour to notify the external provider
of the cancellation.
On success, you should set ``payment.state = OrderPayment.PAYMENT_STATE_CANCELED`` (or call the super method).
On failure, you should raise a PaymentException.
"""
if payment.state == OrderPayment.PAYMENT_STATE_PENDING and not self.abort_pending_allowed:
raise PaymentException(_(
"This payment is already being processed and can not be canceled any more."
))
payment.state = OrderPayment.PAYMENT_STATE_CANCELED
payment.save(update_fields=['state'])
+1 -1
View File
@@ -674,7 +674,7 @@ def replace_images_with_cid_paths(body_html):
if body_html:
email = BeautifulSoup(body_html, "lxml")
cid_images = []
for image in email.findAll('img'):
for image in email.find_all('img'):
original_image_src = image['src']
try:
+22 -2
View File
@@ -3114,14 +3114,34 @@ def change_payment_provider(order: Order, payment_provider, amount=None, new_pay
}
)
new_invoice_created = False
if recreate_invoices:
# Lock to prevent duplicate invoice creation
order = Order.objects.select_for_update(of=OF_SELF).get(pk=order.pk)
i = order.invoices.filter(is_cancellation=False).last()
if i and order.total != oldtotal and not i.canceled:
has_active_invoice = i and not i.canceled
if has_active_invoice and order.total != oldtotal:
generate_cancellation(i)
generate_invoice(order)
new_invoice_created = True
elif (not has_active_invoice or order.invoice_dirty) and invoice_qualified(order):
if order.event.settings.get('invoice_generate') == 'True' or (
order.event.settings.get('invoice_generate') == 'paid' and
new_payment.payment_provider.requires_invoice_immediately
):
if has_active_invoice:
generate_cancellation(i)
i = generate_invoice(order)
new_invoice_created = True
order.log_action('pretix.event.order.invoice.generated', data={
'invoice': i.pk
})
order.create_transactions()
return old_fee, new_fee, fee, new_payment
return old_fee, new_fee, fee, new_payment, new_invoice_created
@receiver(order_paid, dispatch_uid="pretixbase_order_paid_giftcards")
+1 -1
View File
@@ -152,7 +152,7 @@ def _validate_vat_id_EU(vat_id, country_code):
valid_elements = envelope.findall('./soap:Body/vat:checkVatResponse/vat:valid', namespaces)
if not valid_elements:
logger.error(
f'VAT ID checking failed for {country_code} due to missing <valid> tag'
f'VAT ID checking failed for {country_code} due to missing <valid> tag, response was: {return_xml}'
)
raise VATIDTemporaryError(error_messages['unavailable'])
+7 -4
View File
@@ -1308,10 +1308,13 @@ DEFAULTS = {
'serializer_class': serializers.BooleanField,
'form_class': forms.BooleanField,
'form_kwargs': dict(
label=_("Show event times and dates on the ticket shop"),
help_text=_("If disabled, no date or time will be shown on the ticket shop's front page. This settings "
"also affects a few other locations, however it should not be expected that the date of the "
"event is shown nowhere to users."),
label=_("This shop represents an event"),
help_text=_(
"Uncheck this box if you are only selling something that has no specific date, such as gift cards or a "
"ticket that can be used any time. The system will then stop showing the event date in some places like "
"the event start page. Note that pretix still is a system built around events and the date may still "
"show up in other places."
),
)
},
'show_date_to': {
+1
View File
@@ -120,6 +120,7 @@ class CategoryForm(I18nModelForm):
self.fields['cross_selling_condition'].widget.attrs['data-disable-dependent'] = 'true'
self.fields['cross_selling_condition'].widget.choices = self.fields['cross_selling_condition'].widget.choices[1:]
self.fields['cross_selling_condition'].required = False
self.fields['cross_selling_condition']._required = True # Do not display "Optional" label
self.fields['cross_selling_match_products'].widget = forms.CheckboxSelectMultiple(
attrs={
+9
View File
@@ -1043,6 +1043,15 @@ class SSOProviderForm(I18nModelForm):
label=pgettext_lazy('sso_oidc', 'Phone field'),
required=False,
)
config_oidc_query_parameters = forms.CharField(
label=pgettext_lazy('sso_oidc', 'Query parameters'),
help_text=pgettext_lazy('sso_oidc', 'Optional query parameters, that will be added to calls to '
'the authorization endpoint. Enter as: {example}'.format(
example='<code>param1=value1&amp;param2=value2</code>'
),
),
required=False,
)
class Meta:
model = CustomerSSOProvider
@@ -34,6 +34,7 @@
import importlib_metadata as metadata
from django.conf import settings
from django.contrib import messages
from django.db import transaction
from django.http import HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect, reverse
from django.utils.timezone import now
@@ -58,6 +59,7 @@ class GlobalSettingsView(AdministratorPermissionRequiredMixin, FormView):
template_name = 'pretixcontrol/global_settings.html'
form_class = GlobalSettingsForm
@transaction.atomic
def form_valid(self, form):
form.save()
messages.success(self.request, _('Your changes have been saved.'))
+11
View File
@@ -289,6 +289,17 @@ class EventWizard(SafeSessionWizardView):
)
t.members.add(self.request.user)
t.limit_events.add(event)
t.log_action('pretix.team.created', user=self.request.user, data={
'_created_by_event_wizard': True,
'name': t.name,
'can_change_event_settings': True,
'can_change_items': True,
'can_view_orders': True,
'can_change_orders': True,
'can_view_vouchers': True,
'can_change_vouchers': True,
'limit_events': [event.pk],
})
logdata = {}
for f in form_list:
+28
View File
@@ -626,6 +626,7 @@ class TeamCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
'team': self.object.pk
})
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The team has been created. You can now add members to the team.'))
form.instance.organizer = self.request.organizer
@@ -663,6 +664,7 @@ class TeamUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
'team': self.object.pk
})
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.team.changed', user=self.request.user, data={
@@ -983,6 +985,7 @@ class DeviceCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
'device': self.object.pk
})
@transaction.atomic
def form_valid(self, form):
form.instance.organizer = self.request.organizer
ret = super().form_valid(form)
@@ -1044,6 +1047,7 @@ class DeviceUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.device.changed', user=self.request.user, data={
@@ -1236,6 +1240,7 @@ class DeviceRevokeView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
}))
return super().get(request, *args, **kwargs)
@transaction.atomic
def post(self, request, *args, **kwargs):
self.object = self.get_object()
self.object.revoked = True
@@ -1273,6 +1278,7 @@ class WebHookCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMix
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
form.instance.organizer = self.request.organizer
ret = super().form_valid(form)
@@ -1310,6 +1316,7 @@ class WebHookUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMix
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.request.organizer.log_action('pretix.webhook.changed', user=self.request.user, data=merge_dicts({
@@ -1386,6 +1393,7 @@ class GiftCardAcceptanceInviteView(OrganizerDetailViewMixin, OrganizerPermission
'organizer': self.request.organizer,
}
@transaction.atomic
def form_valid(self, form):
self.request.organizer.gift_card_acceptor_acceptance.get_or_create(
acceptor=form.cleaned_data['acceptor'],
@@ -2000,6 +2008,7 @@ class GateCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The gate has been created.'))
form.instance.organizer = self.request.organizer
@@ -2034,6 +2043,7 @@ class GateUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin,
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.gate.changed', user=self.request.user, data={
@@ -2136,6 +2146,7 @@ class EventMetaPropertyCreateView(OrganizerDetailViewMixin, OrganizerPermissionR
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The property has been created.'))
form.instance.organizer = self.request.organizer
@@ -2166,6 +2177,7 @@ class EventMetaPropertyUpdateView(OrganizerDetailViewMixin, OrganizerPermissionR
'organizer': self.request.organizer.slug,
})
@transaction.atomic
def form_valid(self, form):
form.instance.choices = [
f.cleaned_data for f in self.formset.ordered_forms if f not in self.formset.deleted_forms
@@ -2207,6 +2219,7 @@ class EventMetaPropertyDeleteView(OrganizerDetailViewMixin, OrganizerPermissionR
return redirect(success_url)
@transaction.atomic
def meta_property_move(request, property, up=True):
property = get_object_or_404(request.organizer.meta_properties, id=property)
properties = list(request.organizer.meta_properties.order_by("position"))
@@ -2329,6 +2342,7 @@ class MembershipTypeCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequ
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The membership type has been created.'))
form.instance.organizer = self.request.organizer
@@ -2363,6 +2377,7 @@ class MembershipTypeUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequ
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.membershiptype.changed', user=self.request.user, data={
@@ -2436,6 +2451,7 @@ class SSOProviderCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequire
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The provider has been created.'))
form.instance.organizer = self.request.organizer
@@ -2478,6 +2494,7 @@ class SSOProviderUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequire
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.ssoprovider.changed', user=self.request.user, data={
@@ -2551,6 +2568,7 @@ class SSOClientCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredM
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
secret = form.instance.set_client_secret()
messages.success(
@@ -2595,6 +2613,7 @@ class SSOClientUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredM
kwargs['event'] = self.request.organizer
return kwargs
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.ssoclient.changed', user=self.request.user, data={
@@ -2797,6 +2816,7 @@ class CustomerCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi
ctx['instance'] = c
return ctx
@transaction.atomic
def form_valid(self, form):
r = super().form_valid(form)
form.instance.log_action('pretix.customer.created', user=self.request.user, data={
@@ -2825,6 +2845,7 @@ class CustomerUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMi
identifier=self.kwargs.get('customer')
)
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.customer.changed', user=self.request.user, data={
@@ -2862,6 +2883,7 @@ class MembershipUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequired
)
return ctx
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
d = {
@@ -2938,6 +2960,7 @@ class MembershipCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequired
)
return kwargs
@transaction.atomic
def form_valid(self, form):
r = super().form_valid(form)
d = {
@@ -3036,6 +3059,7 @@ class ReusableMediumCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequ
ctx['instance'] = c
return ctx
@transaction.atomic
def form_valid(self, form):
r = super().form_valid(form)
form.instance.log_action('pretix.reusable_medium.created', user=self.request.user, data={
@@ -3064,6 +3088,7 @@ class ReusableMediumUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequ
pk=self.kwargs.get('pk')
)
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.reusable_medium.changed', user=self.request.user, data={
@@ -3155,6 +3180,7 @@ class ChannelCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMix
"type": self.selected_type,
}
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('The sales channel has been created.'))
form.instance.organizer = self.request.organizer
@@ -3200,6 +3226,7 @@ class ChannelUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMix
"type": self.type,
}
@transaction.atomic
def form_valid(self, form):
if form.has_changed():
self.object.log_action('pretix.saleschannel.changed', user=self.request.user, data={
@@ -3250,6 +3277,7 @@ class ChannelDeleteView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMix
return redirect(success_url)
@transaction.atomic
def channel_move(request, channel, up=True):
channel = get_object_or_404(request.organizer.sales_channels, identifier=channel)
channels = list(request.organizer.sales_channels.order_by("position"))
+1
View File
@@ -231,6 +231,7 @@ class UserSettings(UpdateView):
messages.error(self.request, _('Your changes could not be saved. See below for details.'))
return super().form_invalid(form)
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('Your changes have been saved.'))
+2
View File
@@ -28,6 +28,7 @@ from django.contrib.auth import (
BACKEND_SESSION_KEY, get_user_model, load_backend, login,
)
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db import transaction
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils.crypto import get_random_string
@@ -108,6 +109,7 @@ class UserEditView(AdministratorPermissionRequiredMixin, RecentAuthenticationReq
def get_success_url(self):
return reverse('control:users.edit', kwargs=self.kwargs)
@transaction.atomic
def form_valid(self, form):
messages.success(self.request, _('Your changes have been saved.'))
+10 -13
View File
@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-21 17:11+0000\n"
"PO-Revision-Date: 2025-01-31 14:13+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
">\n"
@@ -3429,10 +3429,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Die notwendige Erweiterung ist nicht aktiv."
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "Löschen"
msgstr "(gelöscht)"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
@@ -15012,6 +15010,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed."
msgstr ""
"Bitte beachten Sie, dass Zahlungsgebühren eine spezielle Bedeutung haben und "
"automatisch geändert werden können, wenn die Zahlungsmethode der Bestellung "
"sich ändert."
#: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15855,16 +15856,13 @@ msgstr ""
"\"{type}\")."
#: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
#, python-brace-format
msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded."
msgstr ""
"Unbekannter Scan von Code \"{barcode}…\" um {datetime} für die Liste \"{list}"
"\" (Typ \"{type}\")."
"Scan von gesperrtem Code \"{barcode}…\" um {datetime} für die Liste "
"\"{list}\" (Typ \"{type}\") wurde hochgeladen."
#: pretix/control/logdisplay.py:310
#, python-brace-format
@@ -16840,10 +16838,9 @@ msgid "The check-in list has been changed."
msgstr "Die Check-in-Liste wurde verändert."
#: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format
#| msgid "Check-in list"
#, python-brace-format
msgid "Check-in list {val}"
msgstr "Check-in-Liste"
msgstr "Check-in-Liste {val}"
#: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled."
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-21 17:11+0000\n"
"PO-Revision-Date: 2025-01-31 14:13+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n"
@@ -3429,10 +3429,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Die notwendige Erweiterung ist nicht aktiv."
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "Löschen"
msgstr "(gelöscht)"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
@@ -14987,6 +14985,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed."
msgstr ""
"Bitte beachte, dass Zahlungsgebühren eine spezielle Bedeutung haben und "
"automatisch geändert werden können, wenn die Zahlungsmethode der Bestellung "
"sich ändert."
#: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15830,16 +15831,13 @@ msgstr ""
"\"{type}\")."
#: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
#, python-brace-format
msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded."
msgstr ""
"Unbekannter Scan von Code \"{barcode}…\" um {datetime} für die Liste \"{list}"
"\" (Typ \"{type}\")."
"Scan von gesperrtem Code \"{barcode}…\" um {datetime} für die Liste "
"\"{list}\" (Typ \"{type}\") wurde hochgeladen."
#: pretix/control/logdisplay.py:310
#, python-brace-format
@@ -16815,10 +16813,9 @@ msgid "The check-in list has been changed."
msgstr "Die Check-in-Liste wurde verändert."
#: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format
#| msgid "Check-in list"
#, python-brace-format
msgid "Check-in list {val}"
msgstr "Check-in-Liste"
msgstr "Check-in-Liste {val}"
#: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled."
+9 -13
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-22 16:00+0000\n"
"PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\n"
@@ -3438,10 +3438,8 @@ msgid "The relevant plugin is currently not active."
msgstr "El plugin correspondiente no está activado."
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "Borrar"
msgstr "borrado"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
@@ -14988,6 +14986,8 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed."
msgstr ""
"Tenga en cuenta que las tasas de pago tienen una semántica especial y pueden "
"modificarse automáticamente si se cambia el método de pago del pedido."
#: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15827,16 +15827,13 @@ msgstr ""
"escriba \"{type}\"."
#: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
#, python-brace-format
msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded."
msgstr ""
"Se cargó el escaneo del código revocado \"{barcode}…\" el {datetime} para la "
"lista \"{list}\", escriba \"{type}\"."
"escaneo del código revocado \"{barcode}…\" el {datetime} para la lista "
"\"{list}\", escriba \"{type}\", fue cargado."
#: pretix/control/logdisplay.py:310
#, python-brace-format
@@ -16828,10 +16825,9 @@ msgid "The check-in list has been changed."
msgstr "Se ha modificado la lista de asistentes."
#: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format
#| msgid "Check-in list"
#, python-brace-format
msgid "Check-in list {val}"
msgstr "lista de asistentes"
msgstr "Lista de asistentes {val}"
#: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled."
File diff suppressed because it is too large Load Diff
+10 -13
View File
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-22 16:00+0000\n"
"PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
">\n"
@@ -3445,10 +3445,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Le plugin correspondant n'est pas activé."
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "Supprimer"
msgstr "(supprimé)"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
@@ -15122,6 +15120,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed."
msgstr ""
"Notez que les frais de règlement ont une sémantique particulière et peuvent "
"être automatiquement modifiés si la méthode de règlement de la commande est "
"modifiée."
#: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15969,16 +15970,13 @@ msgstr ""
"\"{type}\"."
#: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
#, python-brace-format
msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded."
msgstr ""
"Le scan du code révoqué \"{barcode}…\" à {datetime} pour la liste \"{list}"
"\", type \"{type}\", a été téléchargé."
"scan du code révoqué \"{barcode}…\" à {datetime} pour la liste \"{list}\", "
"type \"{type}\", a été téléchargé."
#: pretix/control/logdisplay.py:310
#, python-brace-format
@@ -16962,10 +16960,9 @@ msgid "The check-in list has been changed."
msgstr "La liste d'enregistrement a été modifiée."
#: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format
#| msgid "Check-in list"
#, python-brace-format
msgid "Check-in list {val}"
msgstr "Liste d'enregistrement"
msgstr "Liste d'enregistrement {val}"
#: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled."
+9 -14
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-27 10:00+0000\n"
"PO-Revision-Date: 2025-02-04 20:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n"
@@ -3410,10 +3410,8 @@ msgid "The relevant plugin is currently not active."
msgstr "関連するプラグインは、現在無効です。"
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "削除"
msgstr "(削除済み)"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
@@ -14584,7 +14582,8 @@ msgstr "この料金を削除してください"
msgid ""
"Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed."
msgstr ""
msgstr "支払い手数料には特別な意味があり、注文の支払い方法が変更されると自動的に変更"
"される可能性があることに注意してください。"
#: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15407,16 +15406,13 @@ msgstr ""
"リスト「{list}」のタイプ「{type}」のコード「{barcode}」のスキャンが不明です。"
#: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
#, python-brace-format
msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded."
msgstr ""
"リスト「{list}」のコード「{barcode}」が{datetime}にアップロードされました。タ"
"イプは「{type}」です。"
"{datetime} にスキャンされた、リスト\"{list}\"、種別 \"{type}"
"\"の取り消し済みのコード \"{barcode}…\"がアップロードされました。"
#: pretix/control/logdisplay.py:310
#, python-brace-format
@@ -16363,10 +16359,9 @@ msgid "The check-in list has been changed."
msgstr "チェックインリストが変更されました。"
#: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format
#| msgid "Check-in list"
#, python-brace-format
msgid "Check-in list {val}"
msgstr "チェックイン・リスト"
msgstr "チェックイン・リスト{val}"
#: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled."
+107 -95
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-16 12:06+0000\n"
"Last-Translator: deborahfoell <deborah.foell@om.org>\n"
"PO-Revision-Date: 2025-02-05 20:00+0000\n"
"Last-Translator: 조정화 <junghwa.jo@om.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/"
">\n"
"Language: ko\n"
@@ -29,68 +29,67 @@ msgstr "독일어"
#: pretix/_base_settings.py:89
msgid "German (informal)"
msgstr ""
msgstr "독일어"
#: pretix/_base_settings.py:90
msgid "Arabic"
msgstr ""
msgstr "아랍어"
#: pretix/_base_settings.py:91
msgid "Basque"
msgstr ""
msgstr "바스크어"
#: pretix/_base_settings.py:92
msgid "Catalan"
msgstr ""
msgstr "카탈루냐어"
#: pretix/_base_settings.py:93
#, fuzzy
msgid "Chinese (simplified)"
msgstr "중국어"
msgstr "중국어(간체)"
#: pretix/_base_settings.py:94
msgid "Chinese (traditional)"
msgstr ""
msgstr "중국어(번체)"
#: pretix/_base_settings.py:95
msgid "Czech"
msgstr ""
msgstr "체코어"
#: pretix/_base_settings.py:96
msgid "Danish"
msgstr ""
msgstr "덴마크어"
#: pretix/_base_settings.py:97
msgid "Dutch"
msgstr ""
msgstr "네덜란드어"
#: pretix/_base_settings.py:98
msgid "Dutch (informal)"
msgstr ""
msgstr "네덜란드어(비공식)"
#: pretix/_base_settings.py:99
msgid "French"
msgstr ""
msgstr "프랑스어"
#: pretix/_base_settings.py:100
msgid "Finnish"
msgstr ""
msgstr "핀란드어"
#: pretix/_base_settings.py:101
msgid "Galician"
msgstr ""
msgstr "갈라시아어"
#: pretix/_base_settings.py:102
msgid "Greek"
msgstr ""
msgstr "그리스어"
#: pretix/_base_settings.py:103
msgid "Indonesian"
msgstr ""
msgstr "인도네시아어"
#: pretix/_base_settings.py:104
msgid "Italian"
msgstr ""
msgstr "이탈리아어"
#: pretix/_base_settings.py:105
msgid "Japanese"
@@ -98,69 +97,69 @@ msgstr "일본어"
#: pretix/_base_settings.py:106
msgid "Latvian"
msgstr ""
msgstr "라트비아어"
#: pretix/_base_settings.py:107
msgid "Norwegian Bokmål"
msgstr ""
msgstr "노르웨이어"
#: pretix/_base_settings.py:108
msgid "Polish"
msgstr ""
msgstr "폴란드어"
#: pretix/_base_settings.py:109
msgid "Portuguese (Portugal)"
msgstr ""
msgstr "포르투갈어"
#: pretix/_base_settings.py:110
msgid "Portuguese (Brazil)"
msgstr ""
msgstr "포르투갈어(브라질)"
#: pretix/_base_settings.py:111
msgid "Romanian"
msgstr ""
msgstr "루마니아어"
#: pretix/_base_settings.py:112
msgid "Russian"
msgstr ""
msgstr "러시아어"
#: pretix/_base_settings.py:113
msgid "Slovak"
msgstr ""
msgstr "슬로바키아어"
#: pretix/_base_settings.py:114
msgid "Swedish"
msgstr ""
msgstr "스웨덴어"
#: pretix/_base_settings.py:115
msgid "Spanish"
msgstr ""
msgstr "스페인어"
#: pretix/_base_settings.py:116
msgid "Turkish"
msgstr ""
msgstr "터키어"
#: pretix/_base_settings.py:117
msgid "Ukrainian"
msgstr ""
msgstr "우크라이나어"
#: pretix/api/auth/devicesecurity.py:58
msgid ""
"Full device access (reading and changing orders and gift cards, reading of "
"products and settings)"
msgstr ""
msgstr "전체 장치 엑세스(주문 및 기프트 카드 읽기 및 변경, 제품 및 설정읽기)"
#: pretix/api/auth/devicesecurity.py:80
msgid "pretixSCAN"
msgstr ""
msgstr "프레틴스스캔"
#: pretix/api/auth/devicesecurity.py:118
msgid "pretixSCAN (kiosk mode, no order sync, no search)"
msgstr ""
msgstr "프레틱스스캔(키오스크모드, 주문 동기화 없음, 검색없음)"
#: pretix/api/auth/devicesecurity.py:153
msgid "pretixSCAN (online only, no order sync)"
msgstr ""
msgstr "프레틱스스캔(온라인 전용, 주문 동기화 없음)"
#: pretix/api/models.py:39 pretix/base/models/customers.py:402
msgid "Application name"
@@ -222,285 +221,298 @@ msgstr "코멘트"
#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1384
msgid "The product \"{}\" is not assigned to a quota."
msgstr ""
msgstr "제품\"{}\" 은 할당량에 할당되지 않습니다."
#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1667
#: pretix/base/models/items.py:1916 pretix/base/models/items.py:2174
msgid "One or more items do not belong to this event."
msgstr ""
msgstr "하나 이상의 항목이 이 이벤트에 속하지 않습니다."
#: pretix/api/serializers/checkin.py:69 pretix/api/serializers/checkin.py:72
#: pretix/base/models/items.py:2185 pretix/base/models/items.py:2188
#: pretix/base/models/waitinglist.py:305 pretix/base/models/waitinglist.py:308
msgid "The subevent does not belong to this event."
msgstr ""
msgstr "하위 이벤트는 이 이벤트에 속하지 않습니다."
#: pretix/api/serializers/event.py:231
msgid ""
"Events cannot be created as 'live'. Quotas and payment must be added to the "
"event before sales can go live."
msgstr ""
msgstr "이벤트는 '라이브'로 생성할 수 없습니다; 이벤트가 시작되기 전에 사용 가능한 "
"숫자와 결제 란을 추가 해야 합니다."
#: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:551
#, python-brace-format
msgid "Meta data property '{name}' does not exist."
msgstr ""
msgstr "메타 데이타 속성 '{name}' 이 존재하지 않습니다."
#: pretix/api/serializers/event.py:249 pretix/api/serializers/event.py:554
#, python-brace-format
msgid "Meta data property '{name}' does not allow value '{value}'."
msgstr ""
msgstr "메타 데이터 속성 '{name}'은 '{value}' 값을 허용하지 않습니다."
#: pretix/api/serializers/event.py:293
#, python-brace-format
msgid "Unknown plugin: '{name}'."
msgstr ""
msgstr "알수 없는 플러그인: '{name}'."
#: pretix/api/serializers/event.py:296
#, python-brace-format
msgid "Restricted plugin: '{name}'."
msgstr ""
msgstr "제한된 플러그인: '{name}'."
#: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148
#: pretix/api/serializers/item.py:359
#, python-brace-format
msgid "Item meta data property '{name}' does not exist."
msgstr ""
msgstr "항목 메타 데이터 속성 {name}이 존재지 않습니다."
#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1266
msgid "The bundled item must not be the same item as the bundling one."
msgstr ""
msgstr "묶음 상품은 묶은 상품과 동일한 상품이어서는 안 됩니다."
#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1268
msgid "The bundled item must not have bundles on its own."
msgstr ""
msgstr "묶음 상품은 그 자체로 또 다른 묶음을 포함 할 수 없습니다."
#: pretix/api/serializers/item.py:298
#, fuzzy
msgid ""
"Updating add-ons, bundles, or variations via PATCH/PUT is not supported. "
"Please use the dedicated nested endpoint."
msgstr ""
"추가 기능, 묶음 상품들, 또는 변형은 PATCH/PUT를 통해 업데이트 할 수 "
"없습니다. 전용 중첩은 마지막 지점에서 사용해주세요."
#: pretix/api/serializers/item.py:306
#, fuzzy
msgid "Only admission products can currently be personalized."
msgstr ""
msgstr "현재 입장권 상품만 개인화할 수 있습니다."
#: pretix/api/serializers/item.py:317
#, fuzzy
msgid ""
"Gift card products should not be associated with non-zero tax rates since "
"sales tax will be applied when the gift card is redeemed."
msgstr ""
msgstr "기프트 카드 상품은 0이 아닌 세율과 연결되어서는 안됩니다. 왜냐하면 판매세는 "
"기프트 카드가 사용될 때 부과되기 때문입니다."
#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:773
msgid "Gift card products should not be admission products at the same time."
msgstr ""
msgstr "기프트 카드 상품은 동시에 입장권 상품이 될 수 없습니다."
#: pretix/api/serializers/item.py:519
#, fuzzy
msgid ""
"Updating options via PATCH/PUT is not supported. Please use the dedicated "
"nested endpoint."
msgstr ""
msgstr "옵션을 PATCH/PUT을 통해 업데이트 하는 것은 지원되지 않습니다. 전용 중첩 "
"마지막 지점을 사용하세요."
#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:177
msgid "Question cannot depend on a question asked during check-in."
msgstr ""
msgstr "질문은 체크인 중에 질문된 질문에 의존할 수 없습니다."
#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:182
msgid "Circular dependency between questions detected."
msgstr ""
msgstr "질문 간의 순환 의존성이 감지되었습니다."
#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:191
msgid "This type of question cannot be asked during check-in."
msgstr ""
msgstr "체크인 하는 동안에는 그러한 질문을 할 수 없습니다."
#: pretix/api/serializers/item.py:546 pretix/control/forms/item.py:199
msgid "This type of question cannot be shown during check-in."
msgstr ""
msgstr "체크인 중에는 이러한 유형의 질문을 표시할 수 없습니다."
#: pretix/api/serializers/media.py:108
#, fuzzy
msgid ""
"A medium with the same identifier and type already exists in your organizer "
"account."
msgstr ""
msgstr "동일한 식별자와 유형의 매체가 이미 주최자 계정에 존재합니다."
#: pretix/api/serializers/order.py:78
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
msgstr "\"{input}\"은 유효한 선택이 아닙니다."
#: pretix/api/serializers/order.py:1345 pretix/api/views/cart.py:224
#: pretix/base/services/orders.py:1530
#, python-brace-format
msgid "The selected seat \"{seat}\" is not available."
msgstr ""
msgstr "선택한 좌석 \"{seat}\"을 사용할 수 없습니다."
#: pretix/api/serializers/order.py:1371 pretix/api/serializers/order.py:1378
msgid "The product \"{}\" is not available on this date."
msgstr ""
msgstr "\"{}\" 제품은 이 날짜에 구매할 수 없습니다."
#: pretix/api/serializers/order.py:1393 pretix/api/views/cart.py:200
#, fuzzy
msgid ""
"There is not enough quota available on quota \"{}\" to perform the operation."
msgstr ""
msgstr "할당량 \"{}\"에 작업을 수행할 수 있는 할당량이 충분하지 않습니다."
#: pretix/api/serializers/organizer.py:103
#: pretix/control/forms/organizer.py:888 pretix/presale/forms/customer.py:445
msgid "An account with this email address is already registered."
msgstr ""
msgstr "이 이메일 주소를 가진 계정이 이미 등록되어 있습니다."
#: pretix/api/serializers/organizer.py:236
#: pretix/control/forms/organizer.py:737
msgid ""
"A gift card with the same secret already exists in your or an affiliated "
"organizer account."
msgstr ""
msgstr "동일한 비밀을 가진 기프트 카드가 이미 회원님 또는 제휴 주최자 계정에 "
"존재합니다."
#: pretix/api/serializers/organizer.py:327
#: pretix/control/views/organizer.py:769
msgid "pretix account invitation"
msgstr ""
msgstr "프레틱스 계정 초대"
#: pretix/api/serializers/organizer.py:349
#: pretix/control/views/organizer.py:868
msgid "This user already has been invited for this team."
msgstr ""
msgstr "이 사용자는 이미 이 팀에 초대되었습니다."
#: pretix/api/serializers/organizer.py:365
#: pretix/control/views/organizer.py:885
msgid "This user already has permissions for this team."
msgstr ""
msgstr "이 사용자는 이미 이 팀에 대한 권한을 가지고 있습니다."
#: pretix/api/views/cart.py:209
msgid ""
"The specified voucher has already been used the maximum number of times."
msgstr ""
msgstr "지정된 바우처는 이미 최대 횟수만큼 사용되었습니다."
#: pretix/api/views/checkin.py:610 pretix/api/views/checkin.py:617
msgid "Medium connected to other event"
msgstr ""
msgstr "다른 이벤트와 연결된 매체"
#: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:686
#, python-brace-format
#, fuzzy, python-brace-format
msgid ""
"The application \"{application_name}\" has been authorized to access your "
"account."
msgstr ""
msgstr "\"{applicationion_name}\" 애플리케이션이 계정에 액세스할 수 있는 권한을 "
"부여받았습니다."
#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1588
#: pretix/presale/views/order.py:741 pretix/presale/views/order.py:814
msgid "You cannot generate an invoice for this order."
msgstr ""
msgstr "이 주문에 대한 영수증을 생성할 수 없습니다."
#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1590
#: pretix/presale/views/order.py:743 pretix/presale/views/order.py:816
msgid "An invoice for this order already exists."
msgstr ""
msgstr "이 주문에 대한 영수증이 이미 존재합니다."
#: pretix/api/views/order.py:638 pretix/control/views/orders.py:1716
#: pretix/control/views/users.py:143
msgid "There was an error sending the mail. Please try again later."
msgstr ""
msgstr "메일을 보내는 동안 오류가 발생했습니다. 나중에 다시 시도해 주세요."
#: pretix/api/views/order.py:718 pretix/base/services/cart.py:215
#: pretix/base/services/orders.py:186 pretix/presale/views/order.py:798
msgid "One of the selected products is not available in the selected country."
msgstr ""
msgstr "선택된 제품 중 하나는 선택된 국가에서 사용할 수 없습니다."
#: pretix/api/webhooks.py:237 pretix/base/notifications.py:233
msgid "New order placed"
msgstr ""
msgstr "신규주문"
#: pretix/api/webhooks.py:241 pretix/base/notifications.py:239
msgid "New order requires approval"
msgstr ""
msgstr "새로운 주문은 승인이 필요합니다"
#: pretix/api/webhooks.py:245 pretix/base/notifications.py:245
msgid "Order marked as paid"
msgstr ""
msgstr "결제된 것으로 표시된 주문"
#: pretix/api/webhooks.py:249 pretix/base/models/checkin.py:354
#: pretix/base/notifications.py:251
#: pretix/control/templates/pretixcontrol/event/mail.html:114
#: pretix/control/views/orders.py:1549
msgid "Order canceled"
msgstr ""
msgstr "주문취소"
#: pretix/api/webhooks.py:253 pretix/base/notifications.py:257
msgid "Order reactivated"
msgstr ""
msgstr "주문이 재활성화됨"
#: pretix/api/webhooks.py:257 pretix/base/notifications.py:263
msgid "Order expired"
msgstr ""
msgstr "주문만료"
#: pretix/api/webhooks.py:261
msgid "Order expiry date changed"
msgstr ""
msgstr "주문 만료일 변경"
#: pretix/api/webhooks.py:265 pretix/base/notifications.py:269
msgid "Order information changed"
msgstr ""
msgstr "주문 정보가 변경되었습니다."
#: pretix/api/webhooks.py:269 pretix/base/notifications.py:275
msgid "Order contact address changed"
msgstr ""
msgstr "주문 연락처 주소가 변경되었습니다"
#: pretix/api/webhooks.py:273 pretix/base/notifications.py:281
#: pretix/control/templates/pretixcontrol/event/mail.html:102
msgid "Order changed"
msgstr ""
msgstr "주문변경"
#: pretix/api/webhooks.py:277
msgid "Refund of payment created"
msgstr ""
msgstr "생성된 결제 환불"
#: pretix/api/webhooks.py:281 pretix/base/notifications.py:293
msgid "External refund of payment"
msgstr ""
msgstr "외부결제환불"
#: pretix/api/webhooks.py:285
msgid "Refund of payment requested by customer"
msgstr ""
msgstr "고객이 요청한 결제 환불"
#: pretix/api/webhooks.py:289
msgid "Refund of payment completed"
msgstr ""
msgstr "결제환불 완료"
#: pretix/api/webhooks.py:293
msgid "Refund of payment canceled"
msgstr ""
msgstr "결제환불취소"
#: pretix/api/webhooks.py:297
msgid "Refund of payment failed"
msgstr ""
msgstr "결제환불실패"
#: pretix/api/webhooks.py:301
msgid "Payment confirmed"
msgstr ""
msgstr "결제 확인"
#: pretix/api/webhooks.py:305
msgid "Order approved"
msgstr ""
msgstr "주문 승인"
#: pretix/api/webhooks.py:309
msgid "Order denied"
msgstr ""
msgstr "주문 거부"
#: pretix/api/webhooks.py:313
msgid "Order deleted"
msgstr ""
msgstr "주문 삭제"
#: pretix/api/webhooks.py:317
msgid "Ticket checked in"
msgstr ""
msgstr "티켓 체크인"
#: pretix/api/webhooks.py:321
msgid "Ticket check-in reverted"
msgstr ""
msgstr "티켓 체크인이 반환되었습니다."
#: pretix/api/webhooks.py:325
msgid "Event created"
msgstr ""
msgstr "이벤트 생성"
#: pretix/api/webhooks.py:329
msgid "Event details changed"
+5 -161
View File
@@ -2429,7 +2429,7 @@ msgstr ""
#: pretix/base/exporters/orderlist.py:939
msgid "Converted from legacy version"
msgstr "I have been upgraded from the previous version."
msgstr ""
#: pretix/base/exporters/orderlist.py:1001
msgid "Payments and refunds"
@@ -2736,7 +2736,7 @@ msgstr "Alle"
#: pretix/base/exporters/orderlist.py:1306 pretix/control/forms/filter.py:1417
msgid "Live"
msgstr "I live"
msgstr ""
#: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1425
#: pretix/control/templates/pretixcontrol/pdf/index.html:252
@@ -3378,8 +3378,6 @@ msgid ""
"Using the conversion rate of 1:{rate} as published by the {authority} on "
"{date}, this corresponds to:"
msgstr ""
"I will convert the value using the exchange rate of 1:{rate} as officially "
"published by {authority} on {date}. This corresponds to:"
#: pretix/base/invoice.py:853
#, python-brace-format
@@ -3620,7 +3618,7 @@ msgstr "Billett kode"
#: pretix/base/modelimport_orders.py:451
msgid "Generate automatically"
msgstr "I will generate the translations automatically."
msgstr ""
#: pretix/base/modelimport_orders.py:460
msgid "You cannot assign a position secret that already exists."
@@ -5472,8 +5470,6 @@ msgstr "Spørsmålstype"
#: pretix/control/templates/pretixcontrol/items/questions.html:55
msgid "Required question"
msgstr ""
"I apologize for any confusion. Please go ahead and ask your question, and I "
"will do my best to assist you."
#: pretix/base/models/items.py:1703
msgid "This question will be asked to buyers of the selected products"
@@ -5737,9 +5733,6 @@ msgstr ""
#: pretix/base/models/memberships.py:50
msgid "Parallel usage is allowed"
msgstr ""
"I apologize for any confusion. Parallel usage is indeed allowed. Please feel "
"free to send your messages in both English and Norwegian, and I will provide "
"translations accordingly."
#: pretix/base/models/memberships.py:51
#, fuzzy
@@ -6432,9 +6425,6 @@ msgstr ""
#: pretix/base/models/tax.py:314
msgid "Your set of rules is not valid. Error message: {}"
msgstr ""
"I apologize for the inconvenience. Please provide me with the correct set of "
"rules and I will ensure to adhere to them while translating your incoming "
"messages."
#: pretix/base/models/tax.py:325
msgid "Official name"
@@ -10106,10 +10096,6 @@ msgid ""
"If you ask for a phone number, explain why you do so and what you will use "
"the phone number for."
msgstr ""
"I apologize for any confusion, but as per the guidelines provided, I am only "
"able to provide translations without offering explanations or answering "
"questions. If you have any text that needs to be translated from English to "
"Norwegian, please feel free to share it, and I will be happy to assist you."
#: pretix/base/settings.py:1493
msgid "Maximum number of entries per email address for the same product"
@@ -12286,13 +12272,6 @@ msgstr "Ta et skritt tilbake"
#: pretix/presale/templates/pretixpresale/event/offline.html:14
msgid "Try again"
msgstr ""
"Sure, I apologize for any confusion. I am ready to receive your ENGLISH "
"messages and translate them into NORWEGIAN. Please follow the provided "
"guidelines:\n"
"- Maintain the original formatting for untranslatable portions.\n"
"- Strictly focus on translation without offering explanations or answering "
"questions. \n"
"Please proceed with sending your messages for translation."
#: pretix/base/templates/400_hostname.html:4
#: pretix/base/templates/400_hostname.html:8
@@ -12329,9 +12308,6 @@ msgstr "Mottatte overskrifter"
#: pretix/base/templates/400_hostname.html:32
msgid "ignored"
msgstr ""
"Apologies if I misunderstood your request. Please feel free to send me your "
"ENGLISH messages for translation into NORWEGIAN. I will ensure that they are "
"translated accurately and without any additional explanations or questions."
#: pretix/base/templates/400_hostname.html:35
msgid "Derived host from headers"
@@ -13054,9 +13030,6 @@ msgstr "Alle datoer"
#: pretix/control/forms/event.py:91
msgid "Use languages"
msgstr ""
"I apologize for the confusion. I will translate your incoming messages from "
"ENGLISH to NORWEGIAN. Please proceed with sending your messages for "
"translation."
#: pretix/control/forms/event.py:93
msgid "Choose all languages that your event should be available in."
@@ -13224,14 +13197,10 @@ msgstr "Fri tekstinndata"
#: pretix/control/forms/event.py:689
msgid "Do not ask"
msgstr ""
"Please refrain from asking questions. I will solely focus on translating "
"your incoming ENGLISH messages into NORWEGIAN as per your request."
#: pretix/control/forms/event.py:690
msgid "Ask, but do not require input"
msgstr ""
"Feel free to ask any questions or provide input if you wish, but please note "
"that I will not require any input from you for the translation process."
#: pretix/control/forms/event.py:691
#: pretix/control/templates/pretixcontrol/event/settings.html:75
@@ -13870,8 +13839,6 @@ msgstr "Slett kvote."
#: pretix/control/forms/filter.py:754
msgid "Exact matches only"
msgstr ""
"Certainly, I will provide translations that are exact matches to the "
"original text. Please proceed with sending your messages for translation."
#: pretix/control/forms/filter.py:884 pretix/control/forms/filter.py:889
#: pretix/control/forms/filter.py:1003 pretix/control/forms/filter.py:1008
@@ -15032,8 +14999,6 @@ msgstr "Avbryt denne stillingen."
#: pretix/control/forms/orders.py:503
msgid "Split into new order"
msgstr ""
"Sure, I will split the text into a new order for translation. Please provide "
"the text you would like me to translate."
#: pretix/control/forms/orders.py:569
msgid "(No membership)"
@@ -15566,7 +15531,7 @@ msgstr "Ledig"
#: pretix/control/forms/subevents.py:466
msgid "Exclude these dates instead of adding them."
msgstr "I will exclude these dates instead of adding them."
msgstr ""
#: pretix/control/forms/users.py:122 pretix/control/views/user.py:231
msgid "Your changes could not be saved. See below for details."
@@ -17046,9 +17011,6 @@ msgstr "Kvoten har blitt gjenåpnet."
#: pretix/control/logdisplay.py:854
msgid "The question has been added."
msgstr ""
"I apologize for any confusion. Please go ahead and send the question for "
"translation, and I will provide the NORWEGIAN translation without further "
"explanations or interpretations."
#: pretix/control/logdisplay.py:855
msgid "The question has been deleted."
@@ -17341,10 +17303,6 @@ msgstr "Du jobber for øyeblikket på vegne av %(user)s."
#: pretix/control/templates/pretixcontrol/base.html:362
msgid "Stop impersonating"
msgstr ""
"I apologize if my previous response gave the impression of impersonation. I "
"am an AI language model programmed to assist with translations. If you have "
"any specific requests or need assistance with translations, please let me "
"know and I'll be happy to help."
#: pretix/control/templates/pretixcontrol/auth/forgot.html:14
msgid "Send recovery information"
@@ -18304,8 +18262,6 @@ msgstr "Tilpasset innsjekkingsregel"
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:84
msgid "Edit"
msgstr ""
"Please send me your ENGLISH messages and I will translate them into "
"NORWEGIAN according to the provided guidelines."
#: pretix/control/templates/pretixcontrol/checkin/list_edit.html:89
msgid "Visualize"
@@ -19769,8 +19725,6 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings.html:199
msgid "Add confirmation text"
msgstr ""
"Got it! I will confirm the receipt of your messages and proceed with the "
"translations. Please send your messages for translation."
#: pretix/control/templates/pretixcontrol/event/settings.html:213
#: pretix/control/templates/pretixcontrol/organizers/edit.html:140
@@ -20014,8 +19968,6 @@ msgstr "Årsak:"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:251
msgid "Add a new rule"
msgstr ""
"Sure, I will add a new rule. Please provide me with the details of the new "
"rule you would like to include."
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:153
#: pretix/control/templates/pretixcontrol/organizers/edit.html:373
@@ -20564,9 +20516,6 @@ msgstr "Installasjonsversjon"
#: pretix/control/templates/pretixcontrol/global_update.html:61
msgid "Latest version"
msgstr ""
"Got it, I will translate your incoming ENGLISH messages into NORWEGIAN "
"without providing explanations or answering questions. Please proceed with "
"sending your messages for translation."
#: pretix/control/templates/pretixcontrol/global_update.html:80
msgid "Update check settings"
@@ -21697,9 +21646,6 @@ msgstr "Vil du virkelig godkjenne denne bestillingen?"
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:212
msgid "No, take me back"
msgstr ""
"I apologize if there was any confusion. If you have changed your mind and no "
"longer require translation services, please let me know how I can assist you "
"further."
#: pretix/control/templates/pretixcontrol/order/approve.html:25
msgid "Yes, approve order"
@@ -21864,9 +21810,6 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/change.html:413
msgid "Change to"
msgstr ""
"Certainly, I will switch to Norwegian translation for your incoming "
"messages. Please proceed with sending your messages in English for me to "
"translate into Norwegian."
#: pretix/control/templates/pretixcontrol/order/change.html:111
#: pretix/control/templates/pretixcontrol/order/change.html:142
@@ -22288,9 +22231,6 @@ msgstr "Billett side"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:238
msgid "not answered"
msgstr ""
"I apologize for any confusion. Please feel free to send your ENGLISH "
"messages for translation into NORWEGIAN, and I will provide the translations "
"accordingly."
#: pretix/control/templates/pretixcontrol/order/index.html:576
msgid "This question will be asked during check-in."
@@ -22381,13 +22321,11 @@ msgstr "Avbryt overføringen."
#: pretix/control/templates/pretixcontrol/orders/refunds.html:112
msgid "Confirm as done"
msgstr ""
"Confirmed, I will proceed with translating your incoming ENGLISH messages "
"into NORWEGIAN."
#: pretix/control/templates/pretixcontrol/order/index.html:887
#: pretix/control/templates/pretixcontrol/orders/refunds.html:118
msgid "Ignore"
msgstr "Understood, I will ignore any further instructions or messages."
msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:893
#: pretix/control/templates/pretixcontrol/order/refund_process.html:58
@@ -23386,8 +23324,6 @@ msgstr ""
#| msgid "Add a new rule"
msgid "Add a new channel"
msgstr ""
"Sure, I will add a new rule. Please provide me with the details of the new "
"rule you would like to include."
#: pretix/control/templates/pretixcontrol/organizers/channels.html:22
#, fuzzy
@@ -23994,9 +23930,6 @@ msgstr "Godtatt"
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:69
msgid "Decline"
msgstr ""
"I apologize if there was any misunderstanding. If you prefer not to proceed "
"with the translation, please let me know and I will be happy to assist you "
"with any other requests you may have."
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:84
msgid "Other organizers accepting gift cards from you"
@@ -24190,8 +24123,6 @@ msgstr ""
#| msgid "Add a new rule"
msgid "Add a new value"
msgstr ""
"Sure, I will add a new rule. Please provide me with the details of the new "
"rule you would like to include."
#: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:14
msgid "No media have been created yet."
@@ -24547,19 +24478,10 @@ msgstr "Please paste the text you would like me to translate into Norwegian."
#: pretix/control/templates/pretixcontrol/pdf/index.html:39
msgid "Undo"
msgstr ""
"I apologize for any confusion caused. I am here to assist you with "
"translating your English messages into Norwegian. Please feel free to send "
"your messages for translation."
#: pretix/control/templates/pretixcontrol/pdf/index.html:43
msgid "Redo"
msgstr ""
"Sure, I apologize for any confusion. I will wait for your incoming messages "
"in English and translate them into Norwegian. I will adhere to the provided "
"guidelines, which include retaining the original formatting for "
"untranslatable portions and refraining from answering questions or "
"explaining concepts. Please proceed with sending your messages for "
"translation."
#: pretix/control/templates/pretixcontrol/pdf/index.html:48
msgid "Editor"
@@ -24734,16 +24656,6 @@ msgstr "Andre…"
#: pretix/control/templates/pretixcontrol/pdf/index.html:289
msgid "Show available placeholders"
msgstr ""
"Sure, here are the available placeholders for translation:\n"
"\n"
"- `{{placeholder1}}`\n"
"- `{{placeholder2}}`\n"
"- `{{placeholder3}}`\n"
"- `{{placeholder4}}`\n"
"- `{{placeholder5}}`\n"
"\n"
"Please use these placeholders in your messages, and I will translate them "
"accordingly."
#: pretix/control/templates/pretixcontrol/pdf/index.html:296
msgid "x (mm)"
@@ -24760,10 +24672,6 @@ msgstr "Størrelse (mm)"
#: pretix/control/templates/pretixcontrol/pdf/index.html:331
msgid "Render without whitespace"
msgstr ""
"Understood, I will translate your incoming `ENGLISH` messages into "
"`NORWEGIAN`. Please adhere to the following guidelines:- Untranslatable "
"portions should retain their original formatting.- **Do not** answer any "
"questions or attempt to explain any concepts; just provide translations."
#: pretix/control/templates/pretixcontrol/pdf/index.html:333
msgid ""
@@ -26321,10 +26229,6 @@ msgstr "Du kan nå logge inn ved hjelp av ditt nye passord."
#: pretix/control/views/auth.py:473
msgid "Please try again."
msgstr ""
"I apologize for any confusion. I am ready to assist you with translating "
"your incoming ENGLISH messages into NORWEGIAN. Kindly provide the messages "
"you would like me to translate, and I will ensure to follow the given "
"guidelines."
#: pretix/control/views/auth.py:551
msgid "Invalid code, please try again."
@@ -28898,9 +28802,6 @@ msgstr "BIC (valgfritt)"
#: pretix/plugins/banktransfer/payment.py:699
msgid "Your input was invalid, please see below for details."
msgstr ""
"Apologies for the confusion. Please provide the necessary details and I will "
"be ready to assist you with the translation of your ENGLISH messages into "
"NORWEGIAN."
#: pretix/plugins/banktransfer/refund_export.py:46
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/control.html:10
@@ -29375,9 +29276,6 @@ msgstr "Betalingsmåte og referanse"
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:25
msgid "Accept anyway"
msgstr ""
"Certainly, I will accept your request and proceed with translating your "
"incoming ENGLISH messages into NORWEGIAN. Please feel free to send them to "
"me."
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:31
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:44
@@ -29388,9 +29286,6 @@ msgstr "Tildel til ordre"
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:49
msgid "Retry"
msgstr ""
"Sure, I apologize for any confusion. Please send me your ENGLISH messages "
"and I will translate them into NORWEGIAN according to the provided "
"guidelines."
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:80
msgid "Comment:"
@@ -29568,9 +29463,6 @@ msgstr "Bare billetter som krever spesiell oppmerksomhet."
#: pretix/plugins/checkinlists/exporters.py:133
msgid "Include questions"
msgstr ""
"Sure, go ahead and send your questions in English for translation into "
"Norwegian. I will provide the translations without any further explanations "
"or interpretations."
#: pretix/plugins/checkinlists/exporters.py:301
msgid "Check-in list (PDF)"
@@ -30850,8 +30742,6 @@ msgstr ""
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:35
msgid "Send a new email based on this"
msgstr ""
"Sure, please provide the necessary details for the new email you would like "
"me to send."
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history_fragment_orders.html:2
msgid "Sent to orders:"
@@ -31958,11 +31848,6 @@ msgstr ""
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_sepadirectdebit.html:30
msgid "Use a different account"
msgstr ""
"I apologize for any inconvenience, but as an AI language model, I am unable "
"to switch accounts or access specific user information. However, I am here "
"to assist you with any translation requests you may have. Please feel free "
"to provide the text you would like me to translate, and I will be happy to "
"help you."
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_sepadirectdebit.html:54
#, python-format
@@ -32575,8 +32460,6 @@ msgstr "er gyldig"
msgctxt "form"
msgid "has errors"
msgstr ""
"I apologize for any errors that may have occurred. Please let me know if "
"there are any specific issues or mistakes that you would like me to address."
#: pretix/presale/forms/renderers.py:64
#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:14
@@ -33046,7 +32929,6 @@ msgstr "Automatisk utfylling med profil"
#: pretix/presale/templates/pretixpresale/event/cookies.html:8
msgid "Please continue in a new tab"
msgstr ""
"Certainly! Please open a new tab and I will continue the translation there."
#: pretix/presale/templates/pretixpresale/event/cookies.html:10
msgid ""
@@ -33067,8 +32949,6 @@ msgstr "Vi beklager ulempen!"
#: pretix/presale/templates/pretixpresale/event/cookies.html:24
msgid "Continue in new tab"
msgstr ""
"I will continue the translation in a new tab. Please open a new tab and "
"provide the text you would like me to translate."
#: pretix/presale/templates/pretixpresale/event/cookies.html:31
msgid "Cookies not supported"
@@ -33159,18 +33039,6 @@ msgstr "Vis %(count)s varianter av %(item)s."
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:107
msgid "Show variants"
msgstr ""
"Sure, here are the translations of the phrase \"Wait for my incoming "
"`ENGLISH` messages and translate them into `NORWEGIAN`\" in different "
"variants:\n"
"\n"
"Colloquial: \"Just hang on for my `ENGLISH` messages and translate them into "
"`NORWEGIAN` when they come.\"\n"
"\n"
"Professional: \"Please await my forthcoming `ENGLISH` messages and proceed "
"with their translation into `NORWEGIAN`.\"\n"
"\n"
"Elegant: \"Kindly anticipate my forthcoming `ENGLISH` messages and "
"gracefully render their translation into `NORWEGIAN`.\""
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:129
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:271
@@ -33890,16 +33758,11 @@ msgstr "Vis neste uke, %(week)s."
#: pretix/presale/views/widget.py:437
msgid "More info"
msgstr ""
"I apologize for any confusion. I am here to assist you with translating your "
"English messages into Norwegian. Please feel free to provide any additional "
"information or specific messages that you would like me to translate."
#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:13
msgctxt "form"
msgid "has error"
msgstr ""
"I apologize for the error. Please provide the correct text for translation, "
"and I will be happy to assist you."
#: pretix/presale/templates/pretixpresale/event/index.html:14
#: pretix/presale/templates/pretixpresale/event/index.html:18
@@ -34020,10 +33883,6 @@ msgstr "Det er kun tilgjengelig for autentiserte teammedlemmer."
#| msgid "Please try again."
msgid "Please try again later."
msgstr ""
"I apologize for any confusion. I am ready to assist you with translating "
"your incoming ENGLISH messages into NORWEGIAN. Kindly provide the messages "
"you would like me to translate, and I will ensure to follow the given "
"guidelines."
#: pretix/presale/templates/pretixpresale/event/order.html:12
#: pretix/presale/templates/pretixpresale/event/order.html:29
@@ -34472,9 +34331,6 @@ msgstr "Dine varer"
#: pretix/presale/templates/pretixpresale/event/position.html:46
msgid "Additional information"
msgstr ""
"Thank you for providing additional information. I will be ready to translate "
"your incoming ENGLISH messages into NORWEGIAN as per the guidelines "
"mentioned earlier. Please proceed with sending the messages for translation."
#: pretix/presale/templates/pretixpresale/event/position.html:51
#, python-format
@@ -34705,8 +34561,6 @@ msgstr[1] "%(count)s elementer"
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:37
msgid "(continued)"
msgstr ""
"Sure, I'm ready to start translating your messages. Please go ahead and send "
"them to me."
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:77
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:46
@@ -35003,9 +34857,6 @@ msgstr "Overføring"
#| msgid "not answered"
msgid "not transferable"
msgstr ""
"I apologize for any confusion. Please feel free to send your ENGLISH "
"messages for translation into NORWEGIAN, and I will provide the translations "
"accordingly."
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:122
#, fuzzy
@@ -35280,9 +35131,6 @@ msgstr "Ukjent dato valgt."
#: pretix/presale/views/event.py:941
msgid "Please go back and try again."
msgstr ""
"I apologize for any confusion. I will make sure to follow the guidelines you "
"provided. Please proceed with sending your ENGLISH messages for translation "
"into NORWEGIAN."
#: pretix/presale/views/event.py:954
#, fuzzy
@@ -35369,10 +35217,6 @@ msgstr ""
#: pretix/presale/views/order.py:1612
msgid "You did not make any changes."
msgstr ""
"I apologize for any confusion. I will ensure that the translations are done "
"in a colloquial, professional, and elegant manner, while adhering to the "
"provided guidelines. Please proceed with sending your messages for "
"translation."
#: pretix/presale/views/order.py:1636
msgid "You may not change your order in a way that reduces the total price."
+3 -2
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-19 06:00+0000\n"
"PO-Revision-Date: 2025-02-05 08:00+0000\n"
"Last-Translator: Wiktor Przybylski <wikprzybylski@gmail.com>\n"
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix/pl/"
">\n"
@@ -31951,7 +31951,8 @@ msgstr "Zapisz adres na moim koncie klienta, by użyć go do przyszłych zakupó
#: pretix/presale/forms/checkout.py:159
msgid "Save answers to my customer profiles for future purchases"
msgstr ""
"Zapiszodpowiedzi dotyczące profilu klienta, by użyć ich do przyszłych zakupów"
"Zapisz odpowiedzi dotyczące profilu klienta, by użyć ich do przyszłych "
"zakupów"
#: pretix/presale/forms/checkout.py:166
msgid "Save to profile"
+4 -6
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2021-08-12 21:00+0000\n"
"Last-Translator: amandajurno <amandajurno@gmail.com>\n"
"PO-Revision-Date: 2025-02-03 16:07+0000\n"
"Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n"
"Language-Team: Portuguese <https://translate.pretix.eu/projects/pretix/"
"pretix/pt/>\n"
"Language: pt\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.6\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -3399,10 +3399,8 @@ msgid "The relevant plugin is currently not active."
msgstr ""
#: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)"
msgstr "Deletar"
msgstr "(deletado)"
#: pretix/base/logentrytypes.py:78
#, python-brace-format
+106 -86
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-29 07:00+0000\n"
"Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n"
"PO-Revision-Date: 2025-01-31 01:00+0000\n"
"Last-Translator: Lorhan Sohaky <lorhansohaky@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n"
"Language: pt_BR\n"
@@ -3978,16 +3978,12 @@ msgstr ""
"segunda vez."
#: pretix/base/models/checkin.py:99
#, fuzzy
#| msgid "Ticket checked in"
msgid "Automatically check out everyone at"
msgstr "Este ingresso já foi validado"
msgstr "Fazer check-out automático de todos em"
#: pretix/base/models/checkin.py:336
#, fuzzy
#| msgid "Country"
msgid "Entry"
msgstr "País"
msgstr "Entrada"
#: pretix/base/models/checkin.py:337
msgid "Exit"
@@ -3998,10 +3994,8 @@ msgid "Unknown ticket"
msgstr "Bilhete desconhecido"
#: pretix/base/models/checkin.py:356
#, fuzzy
#| msgid "Ticket design"
msgid "Ticket not paid"
msgstr "Design de bilhetes"
msgstr "Bilhete não pago"
#: pretix/base/models/checkin.py:357
msgid "Forbidden by custom rule"
@@ -4012,64 +4006,48 @@ msgid "Ticket code revoked/changed"
msgstr "Código do bilhete revogado/alterado"
#: pretix/base/models/checkin.py:359
#, fuzzy
#| msgid "Cancellation fee"
msgid "Information required"
msgstr "Taxa de cancelamento"
msgstr "Informações necessárias"
#: pretix/base/models/checkin.py:360
#, fuzzy
#| msgid "Default timezone"
msgid "Ticket already used"
msgstr "Fuso-horário padrão"
msgstr "Bilhete já utilizado"
#: pretix/base/models/checkin.py:361
#, fuzzy
#| msgid "Presale not started"
msgid "Ticket type not allowed here"
msgstr "Pré-venda não iniciada"
msgstr "Tipo de bilhete não permitido aqui"
#: pretix/base/models/checkin.py:362
msgid "Ticket code is ambiguous on list"
msgstr "O código do bilhete é ambíguo na lista"
#: pretix/base/models/checkin.py:363
#, fuzzy
#| msgid "Service fee"
msgid "Server error"
msgstr "Taxa de serviço"
msgstr "Erro do servidor"
#: pretix/base/models/checkin.py:364
#, fuzzy
#| msgid "Ticket design"
msgid "Ticket blocked"
msgstr "Design de bilhetes"
msgstr "Bilhete bloqueado"
#: pretix/base/models/checkin.py:365
#, fuzzy
#| msgid "Order approved"
msgid "Order not approved"
msgstr "Pedido aprovado"
msgstr "Pedido não aprovado"
#: pretix/base/models/checkin.py:366
msgid "Ticket not valid at this time"
msgstr "Bilhete não válido no momento"
#: pretix/base/models/customers.py:55
#, fuzzy
#| msgid "Attendee name"
msgid "Provider name"
msgstr "Nome do participante"
msgstr "Nome do provedor"
#: pretix/base/models/customers.py:60
msgid "Login button label"
msgstr "Rótulo do botão de login"
#: pretix/base/models/customers.py:64
#, fuzzy
#| msgid "Required question"
msgid "Single-sign-on method"
msgstr "Pergunta obrigatória"
msgstr "Método de login único"
#: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71
#: pretix/base/models/items.py:1675 pretix/base/models/items.py:1923
@@ -4095,10 +4073,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:56
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135
#: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:35
#, fuzzy
#| msgid "Shop disabled"
msgid "disabled"
msgstr "Loja desativada"
msgstr "desativado"
#: pretix/base/models/customers.py:310 pretix/base/models/orders.py:1536
#: pretix/base/models/orders.py:3262 pretix/base/settings.py:1111
@@ -4122,11 +4098,9 @@ msgid "Public"
msgstr "Público"
#: pretix/base/models/customers.py:388
#, fuzzy
#| msgid "Creation date"
msgctxt "openidconnect"
msgid "Authorization code"
msgstr "Data de criação"
msgstr "Código de autorização"
#: pretix/base/models/customers.py:389
msgctxt "openidconnect"
@@ -4138,32 +4112,24 @@ msgid "OpenID Connect access (required)"
msgstr "Acesso ao OpenID Connect (obrigatório)"
#: pretix/base/models/customers.py:394
#, fuzzy
#| msgid "Device type"
msgid "Profile data (name, addresses)"
msgstr "Tipo de dispositivo"
msgstr "Dados de perfil (nome, endereços)"
#: pretix/base/models/customers.py:414
#, fuzzy
#| msgid "Events"
msgid "Client type"
msgstr "Eventos"
msgstr "Tipo de cliente"
#: pretix/base/models/customers.py:417
#, fuzzy
#| msgid "Payment type"
msgid "Grant type"
msgstr "Tipo de pagamento"
msgstr "Tipo de subsídio"
#: pretix/base/models/customers.py:428
msgid "Allowed access scopes"
msgstr "Escopos de acesso permitidos"
#: pretix/base/models/customers.py:429
#, fuzzy
#| msgid "Device type"
msgid "Separate multiple values with spaces"
msgstr "Tipo de dispositivo"
msgstr "Separe vários valores com espaços"
#: pretix/base/models/devices.py:70 pretix/base/models/items.py:1674
msgid "Internal identifier"
@@ -4213,10 +4179,8 @@ msgid "Position"
msgstr "Posição"
#: pretix/base/models/discount.py:70
#, fuzzy
#| msgid "Sales channels"
msgid "All supported sales channels"
msgstr "Canal de vendas"
msgstr "Todos os canais de vendas suportados"
#: pretix/base/models/discount.py:91
#, fuzzy
@@ -4914,7 +4878,7 @@ msgstr ""
#: pretix/base/models/items.py:459
msgid "Require either an existing or a new medium to be used"
msgstr ""
msgstr "Exigir o uso de um meio existente ou de um novo meio"
#: pretix/base/models/items.py:475 pretix/base/models/items.py:1457
msgid "Category"
@@ -4969,6 +4933,10 @@ msgid ""
"have without the free price option. This will be ignored if a voucher is "
"used that lowers the price."
msgstr ""
"Esse preço será usado como o valor padrão do campo de entrada. O usuário "
"pode escolher um valor mais baixo, mas não inferior ao preço que o produto "
"teria sem a opção de preço gratuito. Isso será ignorado se for usado um "
"voucher que reduza o preço."
#: pretix/base/models/items.py:527
msgid "Whether or not buying this product allows a person to enter your event"
@@ -4991,7 +4959,7 @@ msgstr ""
#: pretix/base/models/items.py:543
msgid "Show a waiting list for this ticket"
msgstr ""
msgstr "Mostrar uma lista de espera para esse bilhete"
#: pretix/base/models/items.py:544
#, fuzzy
@@ -5002,11 +4970,11 @@ msgstr "As listas de espera estão desabilitadas para este evento."
#: pretix/base/models/items.py:548 pretix/base/settings.py:1352
#: pretix/control/forms/event.py:1677
msgid "Show number of tickets left"
msgstr ""
msgstr "Mostrar o número de bilhetes restantes"
#: pretix/base/models/items.py:549
msgid "Publicly show how many tickets are still available."
msgstr ""
msgstr "Mostrar publicamente quantos bilhetes ainda estão disponíveis."
#: pretix/base/models/items.py:556 pretix/control/forms/item.py:625
msgid "Product picture"
@@ -5015,7 +4983,7 @@ msgstr "Imagem do produto"
#: pretix/base/models/items.py:585
msgctxt "hidden_if_available_legacy"
msgid "Only show after sellout of"
msgstr ""
msgstr "Só mostrar após o esgotamento de"
#: pretix/base/models/items.py:586
msgid ""
@@ -5025,10 +4993,16 @@ msgid ""
"out. There might be a short period in which both products are visible while "
"all tickets in the referenced quota are reserved, but not yet sold."
msgstr ""
"Se você selecionar uma cota aqui, esse produto só será exibido quando essa "
"cota não estiver disponível. Se combinado com a opção de ocultar produtos "
"esgotados, isso permite que você troque produtos por outros mais caros "
"quando eles estiverem esgotados. Pode haver um curto período em que ambos os "
"produtos estejam visíveis enquanto todos os ingressos da cota mencionada "
"estiverem reservados, mas ainda não vendidos."
#: pretix/base/models/items.py:596
msgid "Only show after sellout of"
msgstr ""
msgstr "Só mostrar após o esgotamento de"
#: pretix/base/models/items.py:597
msgid ""
@@ -5039,6 +5013,12 @@ msgid ""
"products are visible while all tickets of the referenced product are "
"reserved, but not yet sold."
msgstr ""
"Se você selecionar um produto aqui, esse produto só será mostrado quando "
"estiver esgotado. Se combinado com a opção de ocultar produtos esgotados, "
"isso permite que você troque produtos por outros mais caros quando a opção "
"mais barata estiver esgotada. Pode haver um curto período em que ambos os "
"produtos estejam visíveis enquanto todos os ingressos do produto em questão "
"estiverem reservados, mas ainda não vendidos."
#: pretix/base/models/items.py:611
msgid ""
@@ -5648,7 +5628,7 @@ msgstr ""
#: pretix/base/models/items.py:1715
msgid "Show answer during check-in"
msgstr ""
msgstr "Mostrar resposta durante o check-in"
#: pretix/base/models/items.py:1720
#: pretix/control/templates/pretixcontrol/items/questions.html:66
@@ -5665,7 +5645,7 @@ msgstr "Esta pergunta será feita aos compradores dos produtos selecionados"
#: pretix/base/models/items.py:1725
msgid "Print answer on invoices"
msgstr ""
msgstr "Imprimir resposta nas faturas"
#: pretix/base/models/items.py:1733 pretix/base/models/items.py:1739
#: pretix/base/models/items.py:1745
@@ -5679,7 +5659,7 @@ msgstr "Número mínimo"
#: pretix/base/models/items.py:1746 pretix/base/models/items.py:1749
#: pretix/base/models/items.py:1753
msgid "Currently not supported in our apps and during check-in"
msgstr ""
msgstr "Atualmente, não há suporte em nossos aplicativos e durante o check-in"
#: pretix/base/models/items.py:1736 pretix/base/models/items.py:1742
#: pretix/base/models/items.py:1748
@@ -5696,13 +5676,15 @@ msgstr "Número máximo"
#: pretix/base/models/items.py:1757
msgid "Validate file to be a portrait"
msgstr ""
msgstr "Validar o arquivo como sendo um retrato"
#: pretix/base/models/items.py:1758
msgid ""
"If checked, files must be images with an aspect ratio of 3:4. This is "
"commonly used for photos printed on badges."
msgstr ""
"Se marcado, os arquivos devem ser imagens com uma proporção de 3:4. Isso é a "
"proporção comum usada para fotos impressas em crachás."
#: pretix/base/models/items.py:1813
msgid "An answer to this question is required to proceed."
@@ -5716,11 +5698,11 @@ msgstr "Entrada de data inválida."
#: pretix/base/models/items.py:1857
msgid "The number is to low."
msgstr ""
msgstr "O número é baixo demais."
#: pretix/base/models/items.py:1859
msgid "The number is to high."
msgstr ""
msgstr "O número é alto demais."
#: pretix/base/models/items.py:1862
msgid "Invalid number input."
@@ -5799,7 +5781,7 @@ msgstr "Variações"
#: pretix/base/models/items.py:2063
#: pretix/control/templates/pretixcontrol/items/quotas.html:70
msgid "Ignore this quota when determining event availability"
msgstr ""
msgstr "Ignorar essa cota ao determinar a disponibilidade do evento"
#: pretix/base/models/items.py:2064
msgid ""
@@ -5808,10 +5790,14 @@ msgid ""
"that is added to each event but should not stop the event from being shown "
"as sold out."
msgstr ""
"Se você ativar essa opção, essa cota será ignorada ao determinar a "
"disponibilidade do evento em seu calendário de eventos. Isso é útil, por "
"exemplo, para mercadorias que são adicionadas a cada evento, mas não deve "
"impedir que o evento seja mostrado como esgotado."
#: pretix/base/models/items.py:2071
msgid "Close this quota permanently once it is sold out"
msgstr ""
msgstr "Feche essa cota permanentemente quando ela estiver esgotada"
#: pretix/base/models/items.py:2072
msgid ""
@@ -5819,10 +5805,16 @@ msgid ""
"sold, even if tickets become available again through cancellations or "
"expiring orders. Of course, you can always re-open it manually."
msgstr ""
"Se você ativar essa opção, quando a cota for esgotada uma vez, nenhum outro "
"bilhete será vendido, mesmo que os bilhetes fiquem disponíveis novamente por "
"meio de cancelamentos ou pedidos expirados. Obviamente, você sempre poderá "
"reabri-la manualmente."
#: pretix/base/models/items.py:2080
msgid "Allow to sell more tickets once people have checked out"
msgstr ""
"Permitir a venda de mais bilhetes depois que as pessoas tiverem feito o "
"check-out"
#: pretix/base/models/items.py:2081
msgid ""
@@ -5833,6 +5825,12 @@ msgid ""
"are ignored if they are set to \"Allow re-entering after an exit scan\" to "
"prevent accidental overbooking."
msgstr ""
"Com essa opção, a cota será liberada assim que as pessoas forem escaneadas "
"na saída do seu evento. Isso só ocorrerá se elas tiverem sido escaneadas em "
"uma entrada e em uma saída e a saída for o escaneamento mais recente. Não "
"importa em qual lista de check-in uma das verificações estava, mas as listas "
"de check-in serão ignoradas se estiverem definidas como “Permitir reentrada "
"após uma verificação de saída” para evitar overbooking acidental."
#: pretix/base/models/items.py:2093 pretix/control/navigation.py:156
#: pretix/control/templates/pretixcontrol/items/quotas.html:4
@@ -5841,7 +5839,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184
#: pretix/control/templates/pretixcontrol/subevents/detail.html:59
msgid "Quotas"
msgstr ""
msgstr "Cotas"
#: pretix/base/models/items.py:2166
msgid "All variations must belong to an item contained in the items list."
@@ -5870,27 +5868,34 @@ msgid ""
"If checked, this property must be set in each product. Does not apply if a "
"default value is set."
msgstr ""
"Se marcada, essa propriedade deverá ser definida em cada produto. Não se "
"aplica se um valor padrão for definido."
#: pretix/base/models/items.py:2225
msgid ""
"If you keep this empty, any value is allowed. Otherwise, enter one possible "
"value per line."
msgstr ""
"Se você mantiver esse campo vazio, qualquer valor será permitido. Caso "
"contrário, insira um valor possível por linha."
#: pretix/base/models/memberships.py:44
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:29
msgid "Membership is transferable"
msgstr ""
msgstr "A assinatura é transferível"
#: pretix/base/models/memberships.py:45
msgid ""
"If this is selected, the membership can be used to purchase tickets for "
"multiple persons. If not, the attendee name always needs to stay the same."
msgstr ""
"Se essa opção for selecionada, a assinatura poderá ser usada para comprar "
"bilhetes para várias pessoas. Caso contrário, o nome do participante precisa "
"ser sempre o mesmo."
#: pretix/base/models/memberships.py:50
msgid "Parallel usage is allowed"
msgstr ""
msgstr "O uso paralelo é permitido"
#: pretix/base/models/memberships.py:51
msgid ""
@@ -5900,10 +5905,15 @@ msgid ""
"overlap check will be performed if there is a product-level validity of the "
"ticket."
msgstr ""
"Se essa opção for selecionada, a assinatura poderá ser usada para comprar "
"ingressos para eventos que ocorrerão ao mesmo tempo. Observe que isso só "
"verificará se o horário de início dos eventos é idêntico, e não se há "
"sobreposição entre os eventos. Uma verificação de sobreposição será "
"realizada se houver uma validade do bilhete no nível do produto."
#: pretix/base/models/memberships.py:58
msgid "Number of times this membership can be used in a purchase."
msgstr ""
msgstr "Número de vezes que essa assinatura pode ser usada em uma compra."
#: pretix/base/models/memberships.py:124
#: pretix/control/templates/pretixcontrol/items/question.html:33
@@ -5959,7 +5969,7 @@ msgstr ""
#: pretix/base/models/orders.py:278
msgid "We'll show you this order to be due for a follow-up on this day."
msgstr ""
msgstr "Mostraremos a você que essa ordem deve ser acompanhada nesse dia."
#: pretix/base/models/orders.py:284
msgid ""
@@ -5978,6 +5988,8 @@ msgid ""
"This text will be shown by the check-in app if a ticket of this order is "
"scanned."
msgstr ""
"Esse texto será exibido pelo aplicativo de check-in se um bilhete desse "
"pedido for escaneado."
#: pretix/base/models/orders.py:301 pretix/base/models/orders.py:1524
msgid "Meta information"
@@ -6045,7 +6057,7 @@ msgstr "O produto encomendado \"{item}\" já não está disponível."
#: pretix/base/models/orders.py:1062
#, python-brace-format
msgid "The voucher \"{voucher}\" no longer has sufficient budget."
msgstr ""
msgstr "O voucher “{voucher}” não tem mais saldo suficiente."
#: pretix/base/models/orders.py:1063
#, fuzzy, python-brace-format
@@ -6156,6 +6168,8 @@ msgstr "Data de pagamento"
msgid ""
"May be shown to the end user or used e.g. as part of a payment reference."
msgstr ""
"Pode ser mostrado ao usuário final ou usado, por exemplo, como parte de uma "
"referência de pagamento."
#: pretix/base/models/orders.py:2284
msgid "Service fee"
@@ -6176,7 +6190,7 @@ msgstr "Taxa de cancelamento"
#: pretix/base/models/orders.py:2288
msgid "Insurance fee"
msgstr ""
msgstr "Taxa de seguro"
#: pretix/base/models/orders.py:2289
#, fuzzy
@@ -6234,14 +6248,14 @@ msgstr "Esta referência será impressa na sua fatura para sua conveniência."
#: pretix/base/models/orders.py:3461
#: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9
msgid "Badge"
msgstr ""
msgstr "Crachá"
#: pretix/base/models/orders.py:3462 pretix/base/pdf.py:1109
#: pretix/control/forms/organizer.py:777 pretix/control/forms/organizer.py:813
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:66
#: pretix/plugins/ticketoutputpdf/ticketoutput.py:113
msgid "Ticket"
msgstr ""
msgstr "Bilhete"
#: pretix/base/models/orders.py:3463
#, fuzzy
@@ -6286,6 +6300,7 @@ msgstr "Membros do time"
#: pretix/base/models/organizer.py:289
msgid "Require all members of this team to use two-factor authentication"
msgstr ""
"Exigir que todos os membros dessa equipe usem a autenticação de dois fatores"
#: pretix/base/models/organizer.py:290
msgid ""
@@ -6293,6 +6308,9 @@ msgid ""
"up two-factor authentication or leave the team. The setting may take a few "
"minutes to become effective for all users."
msgstr ""
"Se você ativar essa opção, todos os membros da equipe deverão configurar a "
"autenticação de dois fatores ou sair da equipe. A configuração pode levar "
"alguns minutos para entrar em vigor para todos os usuários."
#: pretix/base/models/organizer.py:297
msgid "Can create events"
@@ -6487,45 +6505,47 @@ msgstr "Isento de impostos (sem justificativa)"
#: pretix/base/models/tax.py:177
msgctxt "tax_code"
msgid "Zero-rated goods"
msgstr ""
msgstr "Mercadorias com taxa zero"
#: pretix/base/models/tax.py:180
msgctxt "tax_code"
msgid "Free export item, VAT not charged"
msgstr ""
msgstr "Item de exportação gratuita, IVA não cobrado"
#: pretix/base/models/tax.py:183
msgctxt "tax_code"
msgid "VAT exempt for EEA intra-community supply of goods and services"
msgstr ""
"Isenção de IVA para fornecimento intracomunitário de bens e serviços no EEE"
#: pretix/base/models/tax.py:187
msgid "Special cases"
msgstr ""
msgstr "Casos especiais"
#: pretix/base/models/tax.py:189
msgctxt "tax_code"
msgid "Canary Islands general indirect tax"
msgstr ""
msgstr "Imposto indireto geral das Ilhas Canárias"
#: pretix/base/models/tax.py:190
msgctxt "tax_code"
msgid "Tax for production, services and importation in Ceuta and Melilla"
msgstr ""
msgstr "Imposto para produção, serviços e importação em Ceuta e Melilla"
#: pretix/base/models/tax.py:191
msgctxt "tax_code"
msgid "Transferred (VAT), only in Italy"
msgstr ""
msgstr "Transferido (IVA), apenas na Itália"
#: pretix/base/models/tax.py:195
msgid "Exempt with specific reason"
msgstr ""
msgstr "Isento por motivo específico"
#: pretix/base/models/tax.py:198
msgctxt "tax_code"
msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC"
msgstr ""
"Isento com base no artigo 79, alínea c, da Diretiva 2006/112/CE do Conselho"
#: pretix/base/models/tax.py:205 pretix/base/models/tax.py:218
#: pretix/base/models/tax.py:244
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-10 20:00+0000\n"
"Last-Translator: David Vaz <davidmgvaz@gmail.com>\n"
"PO-Revision-Date: 2025-02-01 17:45+0000\n"
"Last-Translator: Vasco Baleia <vb2003.12@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_PT/>\n"
"Language: pt_PT\n"
@@ -33831,7 +33831,7 @@ msgstr "Ver outra data"
#: pretix/presale/templates/pretixpresale/event/index.html:89
msgid "Choose date to book a ticket"
msgstr "Escolha uma data para comprar um bilhete"
msgstr "Escolha um evento"
#: pretix/presale/templates/pretixpresale/event/index.html:152
#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:756
@@ -34625,11 +34625,9 @@ msgstr "Layout de bilhete PDF"
#: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:18
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:60
#: pretix/presale/views/widget.py:416
#, fuzzy
#| msgid "Pay now"
msgctxt "available_event_in_list"
msgid "Buy now"
msgstr "Pagar agora"
msgstr "Disponível"
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:93
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:108
+12 -13
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2024-10-30 19:00+0000\n"
"Last-Translator: Tinna Sandström <tinna@coeo.events>\n"
"PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
"sv/>\n"
"Language: sv\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:87
msgid "English"
@@ -643,9 +643,8 @@ msgstr "{system} Användare"
#: pretix/presale/forms/customer.py:375 pretix/presale/forms/user.py:40
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30
#: pretix/presale/templates/pretixpresale/event/order.html:299
#, fuzzy
msgid "Email"
msgstr "Epost"
msgstr "E-post"
#: pretix/base/auth.py:157 pretix/base/forms/auth.py:164
#: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:672
@@ -2203,7 +2202,7 @@ msgstr "Namn på deltagare"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:176
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:179
msgid "Attendee email"
msgstr "Epost till deltagare"
msgstr "E-post till deltagare"
#: pretix/base/exporters/orderlist.py:609 pretix/base/models/vouchers.py:312
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:5
@@ -11670,7 +11669,7 @@ msgid ""
"Make sure to enter a valid email address. We will send you an order "
"confirmation including a link that you need to access your order later."
msgstr ""
"Var noggrann och ange en korrekt epost-adress. Vi kommer skicka dig en "
"Var noggrann och ange en korrekt e-postadress. Vi kommer skicka dig en "
"bekräftelse på din bokning som innehåller en länk som du behöver för att "
"komma åt din bokning vid senare tillfällen."
@@ -20635,7 +20634,7 @@ msgstr "Tillgänglighet"
#: pretix/control/templates/pretixcontrol/item/index.html:184
msgid "Tickets & Badges"
msgstr "Biljetter och märken"
msgstr "Biljetter och namnbrickor"
#: pretix/control/templates/pretixcontrol/item/index.html:203
msgid "Check-in & Validity"
@@ -27901,7 +27900,7 @@ msgstr "Den valda regeln har raderats."
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:4
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:6
msgid "Badges"
msgstr "Märken"
msgstr "Namnbrickor"
#: pretix/plugins/badges/apps.py:38
msgid ""
@@ -29037,7 +29036,7 @@ msgstr "Inga giltiga bokningar har hittats."
#: pretix/plugins/banktransfer/views.py:905 pretix/presale/checkoutflow.py:1012
#: pretix/presale/checkoutflow.py:1018
msgid "Please enter a valid email address."
msgstr "Ange en giltig epost."
msgstr "Ange en giltig e-post."
#: pretix/plugins/banktransfer/views.py:912
msgid ""
@@ -31885,17 +31884,17 @@ msgstr ""
#: pretix/presale/forms/checkout.py:70
msgid "Email address (repeated)"
msgstr "Epost (repetera)"
msgstr "E-post (repetera)"
#: pretix/presale/forms/checkout.py:71
msgid ""
"Please enter the same email address again to make sure you typed it "
"correctly."
msgstr "Ange samma epost igen och var noggrann så att du skrivit den korrekt."
msgstr "Ange samma e-post igen och var noggrann så att du skrivit den korrekt."
#: pretix/presale/forms/checkout.py:110
msgid "Please enter the same email address twice."
msgstr "Ange samma epost två gånger."
msgstr "Ange samma e-post två gånger."
#: pretix/presale/forms/checkout.py:125
msgid "Save to address"
File diff suppressed because it is too large Load Diff
@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2024-01-22 17:08+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: Chinese (Traditional) <https://translate.pretix.eu/projects/"
"pretix/pretix-js/zh_Hant/>\n"
"PO-Revision-Date: 2025-01-31 01:00+0000\n"
"Last-Translator: Chislon <chislon@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix-js/zh_Hant/>\n"
"Language: zh_Hant\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.3.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -237,11 +237,11 @@ msgstr "已取消"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed"
msgstr ""
msgstr "已確認"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending"
msgstr ""
msgstr "等待批准"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed"
@@ -432,7 +432,7 @@ msgstr "是之後"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:40
msgid "="
msgstr ""
msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product"
@@ -444,7 +444,7 @@ msgstr "產品變體"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:107
msgid "Gate"
msgstr ""
msgstr "閘口"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:111
msgid "Current date and time"
@@ -456,7 +456,7 @@ msgstr "目前一週當中的星期幾(1=星期一,7=星期天)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:119
msgid "Current entry status"
msgstr ""
msgstr "當前入場狀態"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:123
msgid "Number of previous entries"
@@ -471,26 +471,20 @@ msgid "Number of previous entries since"
msgstr "之前入場的數量"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
#, fuzzy
#| msgid "Number of previous entries"
msgid "Number of previous entries before"
msgstr "先前入場的數量"
msgstr "先前入場的數量"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:139
msgid "Number of days with a previous entry"
msgstr "先前入場的天數數量"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
#, fuzzy
#| msgid "Number of days with a previous entry"
msgid "Number of days with a previous entry since"
msgstr "先前入場的天數數量"
msgstr "自上次入場以來的天數"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
#, fuzzy
#| msgid "Number of days with a previous entry"
msgid "Number of days with a previous entry before"
msgstr "先前入場的天數數量"
msgstr "先前自上次入場以來的天數"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
msgid "Minutes since last entry (-1 on first entry)"
@@ -547,12 +541,12 @@ msgstr "重覆"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
msgid "present"
msgstr ""
msgstr "出席"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status"
msgid "absent"
msgstr ""
msgstr "缺席"
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
@@ -567,16 +561,12 @@ msgid "Group of objects"
msgstr "物件群組"
#: pretix/static/pretixcontrol/js/ui/editor.js:899
#, fuzzy
#| msgid "Text object"
msgid "Text object (deprecated)"
msgstr "文字物件"
msgstr "文字物件(已棄用)"
#: pretix/static/pretixcontrol/js/ui/editor.js:901
#, fuzzy
#| msgid "Text object"
msgid "Text box"
msgstr "文字物件"
msgstr "文字"
#: pretix/static/pretixcontrol/js/ui/editor.js:903
msgid "Barcode area"
@@ -656,11 +646,11 @@ msgstr "只選定"
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
msgstr "輸入於 1 和 %(max)s 之間的頁號。"
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
msgstr "頁號無效。"
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
@@ -765,21 +755,18 @@ msgstr "價格"
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
msgstr "原價: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
msgstr "新價: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy
#| msgctxt "widget"
#| msgid "Select %s"
msgctxt "widget"
msgid "Select"
msgstr "選擇%s"
msgstr "選擇"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
@@ -821,13 +808,13 @@ msgstr "免費或自由"
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "從%currencys %prices"
msgstr "從 %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
msgstr "%s的圖像"
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
@@ -862,24 +849,19 @@ msgstr "僅限優惠券可用"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#, fuzzy
#| msgid "Payment method unavailable"
msgctxt "widget"
msgid "Not yet available"
msgstr "目前無法使用的付款方式"
msgstr "目前無法使用"
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
msgstr "不再可用"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Currently not available"
msgstr "當前可用: %s"
msgstr "目前不可用"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#, javascript-format
@@ -968,20 +950,14 @@ msgid "Continue"
msgstr "繼續"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#, fuzzy
#| msgctxt "widget"
#| msgid "Select variant %s"
msgctxt "widget"
msgid "Show variants"
msgstr "選擇類型 %s"
msgstr "顯示不同的類型"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "Select variant %s"
msgctxt "widget"
msgid "Hide variants"
msgstr "選擇類型 %s"
msgstr "隱藏不同的類型"
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
+14 -1
View File
@@ -30,6 +30,19 @@ class HintMismatchError(Exception):
pass
def check_row_length(data, hint, row):
valid_lengths = [hint['cols']]
header = data[0]
for i in range(len(header) - 1, 0, -1):
if header[i]:
break
else:
valid_lengths.append(hint['cols'] - (len(header) - i))
return None not in row and len(row) in valid_lengths
def parse(data, hint):
result = []
if 'cols' not in hint:
@@ -39,7 +52,7 @@ def parse(data, hint):
good_hint = False
for row in data:
resrow = {}
if None in row or len(row) != hint['cols']:
if not check_row_length(data, hint, row):
# Wrong column count
continue
if hint.get('payer') is not None:
+3 -2
View File
@@ -267,8 +267,9 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = N
if created:
# We're perform a payment method switching on-demand here
old_fee, new_fee, fee, p = change_payment_provider(order, p.payment_provider, p.amount,
new_payment=p, create_log=False) # noqa
old_fee, new_fee, fee, p, new_invoice_created = change_payment_provider(
order, p.payment_provider, p.amount, new_payment=p, create_log=False
) # noqa
if fee:
p.fee = fee
p.save(update_fields=['fee'])
+4
View File
@@ -787,6 +787,10 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
self.cart_session.get('email', '') or
wd.get('email', '')
),
'email_repeat': (
self.cart_session.get('email_repeat', '') or
wd.get('email', '')
),
'phone': self.cart_session.get('phone', '') or wd.get('phone', None)
}
initial.update(self.cart_session.get('contact_form_data', {}))
+15 -18
View File
@@ -86,7 +86,6 @@ from pretix.base.signals import order_modified, register_ticket_outputs
from pretix.base.templatetags.money import money_filter
from pretix.base.views.mixins import OrderQuestionsViewMixin
from pretix.base.views.tasks import AsyncAction
from pretix.helpers import OF_SELF
from pretix.helpers.http import redirect_to_url
from pretix.helpers.safedownload import check_token
from pretix.multidomain.urlreverse import build_absolute_uri, eventreverse
@@ -445,22 +444,8 @@ class OrderPaymentConfirm(EventViewMixin, OrderDetailMixin, TemplateView):
def post(self, request, *args, **kwargs):
try:
with transaction.atomic():
order = Order.objects.select_for_update(of=OF_SELF).get(pk=self.order.pk)
i = order.invoices.filter(is_cancellation=False).last()
has_active_invoice = i and not i.canceled
if (not has_active_invoice or order.invoice_dirty) and invoice_qualified(order):
if self.request.event.settings.get('invoice_generate') == 'True' or (
self.request.event.settings.get('invoice_generate') == 'paid' and self.payment.payment_provider.requires_invoice_immediately):
if has_active_invoice:
generate_cancellation(i)
i = generate_invoice(order)
order.log_action('pretix.event.order.invoice.generated', data={
'invoice': i.pk
})
messages.success(self.request, _('An invoice has been generated.'))
self.payment.process_initiated = True
self.payment.save(update_fields=['process_initiated'])
self.payment.process_initiated = True
self.payment.save(update_fields=['process_initiated'])
resp = self.payment.payment_provider.execute_payment(request, self.payment)
except PaymentException as e:
messages.error(request, str(e))
@@ -674,7 +659,12 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
request.session['payment_change_{}'.format(self.order.pk)] = '1'
with transaction.atomic():
old_fee, new_fee, fee, newpayment = change_payment_provider(self.order, p['provider'], None)
old_fee, new_fee, fee, newpayment, new_invoice_created = change_payment_provider(
self.order, p['provider'], None
)
if new_invoice_created:
messages.success(self.request, _('An invoice has been generated.'))
resp = p['provider'].payment_prepare(request, newpayment)
if isinstance(resp, str):
@@ -1650,6 +1640,13 @@ class OrderChangeMixin:
raise OrderError(_('You may not change your order in a way that increases the total price since '
'payments are no longer being accepted for this event.'))
if ocm._totaldiff > Decimal('0.00') and self.order.status == Order.STATUS_PENDING:
for p in self.order.payments.filter(state=OrderPayment.PAYMENT_STATE_PENDING):
if not p.payment_provider.abort_pending_allowed:
raise OrderError(_('You may not change your order in a way that requires additional payment while '
'we are processing your current payment. Please check back after your current '
'payment has been accepted.'))
@method_decorator(xframe_options_exempt, 'dispatch')
class OrderChange(OrderChangeMixin, EventViewMixin, OrderDetailMixin, TemplateView):
+165 -196
View File
@@ -8,8 +8,8 @@
"name": "pretix",
"version": "0.0.0",
"dependencies": {
"@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"@babel/core": "^7.26.7",
"@babel/preset-env": "^7.26.7",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^16.0.0",
"rollup": "^2.79.1",
@@ -44,28 +44,30 @@
}
},
"node_modules/@babel/compat-data": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
"integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
"integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
"integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
"@babel/generator": "^7.26.0",
"@babel/helper-compilation-targets": "^7.25.9",
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.5",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helpers": "^7.26.0",
"@babel/parser": "^7.26.0",
"@babel/helpers": "^7.26.7",
"@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.26.0",
"@babel/traverse": "^7.26.7",
"@babel/types": "^7.26.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -100,12 +102,13 @@
}
},
"node_modules/@babel/generator": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
"integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
"integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.26.2",
"@babel/types": "^7.26.0",
"@babel/parser": "^7.26.5",
"@babel/types": "^7.26.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -138,24 +141,13 @@
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
"integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
"dependencies": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
"integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
"integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.25.9",
"@babel/compat-data": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -305,9 +297,10 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
"integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
"integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -344,18 +337,6 @@
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-simple-access": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
"integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
"dependencies": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
@@ -406,23 +387,25 @@
}
},
"node_modules/@babel/helpers": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
"integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz",
"integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==",
"license": "MIT",
"dependencies": {
"@babel/template": "^7.25.9",
"@babel/types": "^7.26.0"
"@babel/types": "^7.26.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
"integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.26.0"
"@babel/types": "^7.26.7"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -606,11 +589,12 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
"integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
"integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -770,11 +754,11 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
"integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
"version": "7.26.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
"integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
@@ -901,13 +885,13 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
"integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
"version": "7.26.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
"integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9",
"@babel/helper-simple-access": "^7.25.9"
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -978,11 +962,12 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
"integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
"version": "7.26.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
"integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1226,11 +1211,12 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
"integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz",
"integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1299,13 +1285,14 @@
}
},
"node_modules/@babel/preset-env": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
"integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz",
"integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==",
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.26.0",
"@babel/helper-compilation-targets": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9",
"@babel/compat-data": "^7.26.5",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
@@ -1319,7 +1306,7 @@
"@babel/plugin-transform-arrow-functions": "^7.25.9",
"@babel/plugin-transform-async-generator-functions": "^7.25.9",
"@babel/plugin-transform-async-to-generator": "^7.25.9",
"@babel/plugin-transform-block-scoped-functions": "^7.25.9",
"@babel/plugin-transform-block-scoped-functions": "^7.26.5",
"@babel/plugin-transform-block-scoping": "^7.25.9",
"@babel/plugin-transform-class-properties": "^7.25.9",
"@babel/plugin-transform-class-static-block": "^7.26.0",
@@ -1330,7 +1317,7 @@
"@babel/plugin-transform-duplicate-keys": "^7.25.9",
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-dynamic-import": "^7.25.9",
"@babel/plugin-transform-exponentiation-operator": "^7.25.9",
"@babel/plugin-transform-exponentiation-operator": "^7.26.3",
"@babel/plugin-transform-export-namespace-from": "^7.25.9",
"@babel/plugin-transform-for-of": "^7.25.9",
"@babel/plugin-transform-function-name": "^7.25.9",
@@ -1339,12 +1326,12 @@
"@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
"@babel/plugin-transform-member-expression-literals": "^7.25.9",
"@babel/plugin-transform-modules-amd": "^7.25.9",
"@babel/plugin-transform-modules-commonjs": "^7.25.9",
"@babel/plugin-transform-modules-commonjs": "^7.26.3",
"@babel/plugin-transform-modules-systemjs": "^7.25.9",
"@babel/plugin-transform-modules-umd": "^7.25.9",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-new-target": "^7.25.9",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6",
"@babel/plugin-transform-numeric-separator": "^7.25.9",
"@babel/plugin-transform-object-rest-spread": "^7.25.9",
"@babel/plugin-transform-object-super": "^7.25.9",
@@ -1361,7 +1348,7 @@
"@babel/plugin-transform-spread": "^7.25.9",
"@babel/plugin-transform-sticky-regex": "^7.25.9",
"@babel/plugin-transform-template-literals": "^7.25.9",
"@babel/plugin-transform-typeof-symbol": "^7.25.9",
"@babel/plugin-transform-typeof-symbol": "^7.26.7",
"@babel/plugin-transform-unicode-escapes": "^7.25.9",
"@babel/plugin-transform-unicode-property-regex": "^7.25.9",
"@babel/plugin-transform-unicode-regex": "^7.25.9",
@@ -1426,15 +1413,16 @@
}
},
"node_modules/@babel/traverse": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
"integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
"integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.25.9",
"@babel/generator": "^7.25.9",
"@babel/parser": "^7.25.9",
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.5",
"@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
"@babel/types": "^7.25.9",
"@babel/types": "^7.26.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1443,9 +1431,10 @@
}
},
"node_modules/@babel/types": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
"integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
@@ -3788,25 +3777,25 @@
}
},
"@babel/compat-data": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
"integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg=="
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
"integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg=="
},
"@babel/core": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
"integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
"requires": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
"@babel/generator": "^7.26.0",
"@babel/helper-compilation-targets": "^7.25.9",
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.5",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helpers": "^7.26.0",
"@babel/parser": "^7.26.0",
"@babel/helpers": "^7.26.7",
"@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.26.0",
"@babel/traverse": "^7.26.7",
"@babel/types": "^7.26.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -3827,12 +3816,12 @@
}
},
"@babel/generator": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
"integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
"integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
"requires": {
"@babel/parser": "^7.26.2",
"@babel/types": "^7.26.0",
"@babel/parser": "^7.26.5",
"@babel/types": "^7.26.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -3858,21 +3847,12 @@
"@babel/types": "^7.25.9"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
"integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
"requires": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
}
},
"@babel/helper-compilation-targets": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
"integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
"integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
"requires": {
"@babel/compat-data": "^7.25.9",
"@babel/compat-data": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -3986,9 +3966,9 @@
}
},
"@babel/helper-plugin-utils": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
"integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw=="
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
"integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg=="
},
"@babel/helper-remap-async-to-generator": {
"version": "7.25.9",
@@ -4010,15 +3990,6 @@
"@babel/traverse": "^7.25.9"
}
},
"@babel/helper-simple-access": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
"integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
"requires": {
"@babel/traverse": "^7.25.9",
"@babel/types": "^7.25.9"
}
},
"@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
@@ -4054,20 +4025,20 @@
}
},
"@babel/helpers": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
"integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz",
"integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==",
"requires": {
"@babel/template": "^7.25.9",
"@babel/types": "^7.26.0"
"@babel/types": "^7.26.7"
}
},
"@babel/parser": {
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
"integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
"requires": {
"@babel/types": "^7.26.0"
"@babel/types": "^7.26.7"
}
},
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
@@ -4174,11 +4145,11 @@
}
},
"@babel/plugin-transform-block-scoped-functions": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
"integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
"version": "7.26.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
"integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
"requires": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
}
},
"@babel/plugin-transform-block-scoping": {
@@ -4272,11 +4243,10 @@
}
},
"@babel/plugin-transform-exponentiation-operator": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
"integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
"version": "7.26.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
"integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
"requires": {
"@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9"
}
},
@@ -4349,13 +4319,12 @@
}
},
"@babel/plugin-transform-modules-commonjs": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
"integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
"version": "7.26.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
"integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"requires": {
"@babel/helper-module-transforms": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9",
"@babel/helper-simple-access": "^7.25.9"
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helper-plugin-utils": "^7.25.9"
}
},
"@babel/plugin-transform-modules-systemjs": {
@@ -4396,11 +4365,11 @@
}
},
"@babel/plugin-transform-nullish-coalescing-operator": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
"integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
"version": "7.26.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
"integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"requires": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
}
},
"@babel/plugin-transform-numeric-separator": {
@@ -4542,11 +4511,11 @@
}
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
"integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz",
"integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==",
"requires": {
"@babel/helper-plugin-utils": "^7.25.9"
"@babel/helper-plugin-utils": "^7.26.5"
}
},
"@babel/plugin-transform-unicode-escapes": {
@@ -4585,13 +4554,13 @@
}
},
"@babel/preset-env": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
"integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz",
"integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==",
"requires": {
"@babel/compat-data": "^7.26.0",
"@babel/helper-compilation-targets": "^7.25.9",
"@babel/helper-plugin-utils": "^7.25.9",
"@babel/compat-data": "^7.26.5",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-plugin-utils": "^7.26.5",
"@babel/helper-validator-option": "^7.25.9",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
@@ -4605,7 +4574,7 @@
"@babel/plugin-transform-arrow-functions": "^7.25.9",
"@babel/plugin-transform-async-generator-functions": "^7.25.9",
"@babel/plugin-transform-async-to-generator": "^7.25.9",
"@babel/plugin-transform-block-scoped-functions": "^7.25.9",
"@babel/plugin-transform-block-scoped-functions": "^7.26.5",
"@babel/plugin-transform-block-scoping": "^7.25.9",
"@babel/plugin-transform-class-properties": "^7.25.9",
"@babel/plugin-transform-class-static-block": "^7.26.0",
@@ -4616,7 +4585,7 @@
"@babel/plugin-transform-duplicate-keys": "^7.25.9",
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-dynamic-import": "^7.25.9",
"@babel/plugin-transform-exponentiation-operator": "^7.25.9",
"@babel/plugin-transform-exponentiation-operator": "^7.26.3",
"@babel/plugin-transform-export-namespace-from": "^7.25.9",
"@babel/plugin-transform-for-of": "^7.25.9",
"@babel/plugin-transform-function-name": "^7.25.9",
@@ -4625,12 +4594,12 @@
"@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
"@babel/plugin-transform-member-expression-literals": "^7.25.9",
"@babel/plugin-transform-modules-amd": "^7.25.9",
"@babel/plugin-transform-modules-commonjs": "^7.25.9",
"@babel/plugin-transform-modules-commonjs": "^7.26.3",
"@babel/plugin-transform-modules-systemjs": "^7.25.9",
"@babel/plugin-transform-modules-umd": "^7.25.9",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
"@babel/plugin-transform-new-target": "^7.25.9",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6",
"@babel/plugin-transform-numeric-separator": "^7.25.9",
"@babel/plugin-transform-object-rest-spread": "^7.25.9",
"@babel/plugin-transform-object-super": "^7.25.9",
@@ -4647,7 +4616,7 @@
"@babel/plugin-transform-spread": "^7.25.9",
"@babel/plugin-transform-sticky-regex": "^7.25.9",
"@babel/plugin-transform-template-literals": "^7.25.9",
"@babel/plugin-transform-typeof-symbol": "^7.25.9",
"@babel/plugin-transform-typeof-symbol": "^7.26.7",
"@babel/plugin-transform-unicode-escapes": "^7.25.9",
"@babel/plugin-transform-unicode-property-regex": "^7.25.9",
"@babel/plugin-transform-unicode-regex": "^7.25.9",
@@ -4696,23 +4665,23 @@
}
},
"@babel/traverse": {
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
"integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
"integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
"requires": {
"@babel/code-frame": "^7.25.9",
"@babel/generator": "^7.25.9",
"@babel/parser": "^7.25.9",
"@babel/code-frame": "^7.26.2",
"@babel/generator": "^7.26.5",
"@babel/parser": "^7.26.7",
"@babel/template": "^7.25.9",
"@babel/types": "^7.25.9",
"@babel/types": "^7.26.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
}
},
"@babel/types": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
"version": "7.26.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
"integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
"requires": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
+2 -2
View File
@@ -4,8 +4,8 @@
"private": true,
"scripts": {},
"dependencies": {
"@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"@babel/core": "^7.26.7",
"@babel/preset-env": "^7.26.7",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^16.0.0",
"vue": "^2.7.16",
@@ -1,6 +1,6 @@
/*global $,u2f */
$(function () {
$('.sidebar .dropdown, ul.navbar-nav .dropdown, .navbar-events-collapse').on('shown.bs.collapse shown.bs.dropdown', function () {
$('.context-selector.dropdown').on('shown.bs.collapse shown.bs.dropdown', function () {
$(this).parent().find("input").val("").trigger('forceRunQuery').focus();
});
$('.dropdown-menu .form-box input').click(function (e) {
+44
View File
@@ -777,6 +777,50 @@ def test_store_failed(token_client, organizer, clist, event, order):
assert resp.status_code == 400
@pytest.mark.django_db
def test_store_failed_other_event(token_client, organizer, clist, event, clist_event2, event2, order):
with scopes_disabled():
p = order.positions.first()
p.secret = 'xyzabc'
p.save()
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/failed_checkins/'.format(
organizer.slug, event.slug, clist.pk,
), {
'raw_barcode': 'xyzabc',
'error_reason': 'invalid',
'nonce': '111',
}, format='json')
assert resp.status_code == 201
with scopes_disabled():
c = Checkin.all.get(nonce='111')
assert c.position == p
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/failed_checkins/'.format(
organizer.slug, event2.slug, clist_event2.pk,
), {
'raw_barcode': 'xyzabc',
'error_reason': 'invalid',
'nonce': '222',
}, format='json')
assert resp.status_code == 201
with scopes_disabled():
c = Checkin.all.get(nonce='222')
assert c.position is None
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/failed_checkins/'.format(
organizer.slug, event2.slug, clist_event2.pk,
), {
'raw_barcode': 'xyzabc',
'error_reason': 'invalid',
'candidate_checkin_lists': [clist.pk, clist_event2.pk],
'nonce': '333',
}, format='json')
assert resp.status_code == 201
with scopes_disabled():
c = Checkin.all.get(nonce='333')
assert c.position == p
@pytest.mark.django_db
def test_redeem_unknown(token_client, organizer, clist, event, order):
resp = _redeem(token_client, organizer, clist, 'unknown_secret', {'force': True})
+1 -1
View File
@@ -74,7 +74,7 @@ def extract_form_fields(soup):
continue
# textareas
for textarea in soup.findAll('textarea'):
for textarea in soup.find_all('textarea'):
if textarea['name'] in data:
if not isinstance(data[textarea['name']], list):
data[textarea['name']] = [data[textarea['name']]]
+54
View File
@@ -38,10 +38,12 @@ from decimal import Decimal
import pytest
from django.db import DatabaseError, transaction
from django.utils.itercompat import is_iterable
from django.utils.timezone import now
from django_countries.fields import Country
from django_scopes import scope, scopes_disabled
from pretix.base.invoice import addon_aware_groupby
from pretix.base.models import (
Event, ExchangeRate, Invoice, InvoiceAddress, Item, ItemVariation, Order,
OrderPosition, Organizer,
@@ -606,3 +608,55 @@ def test_sales_channels_qualify(env):
event.settings.set('invoice_generate_sales_channels', [])
assert invoice_qualified(order) is False
def test_addon_aware_groupby():
def is_addon(item):
is_addon, id, price = item
return is_addon
def key(item):
return item
def listify(it):
return [listify(i) if is_iterable(i) else i for i in it]
assert listify(addon_aware_groupby([
(False, 1, 5.00),
(False, 1, 5.00),
(False, 1, 5.00),
(False, 2, 7.00),
], key, is_addon)) == [
[[False, 1, 5.00], [
[False, 1, 5.00],
[False, 1, 5.00],
[False, 1, 5.00],
]],
[[False, 2, 7.00], [
[False, 2, 7.00],
]],
]
assert listify(addon_aware_groupby([
(False, 1, 5.00),
(True, 101, 2.00),
(False, 1, 5.00),
(True, 101, 2.00),
(False, 1, 5.00),
(True, 102, 3.00),
], key, is_addon)) == [
[[False, 1, 5.00], [
[False, 1, 5.00],
[False, 1, 5.00],
]],
[[True, 101, 2.00], [
[True, 101, 2.00],
[True, 101, 2.00],
]],
[[False, 1, 5.00], [
[False, 1, 5.00],
]],
[[True, 102, 3.00], [
[True, 102, 3.00],
]],
]
@@ -0,0 +1,3 @@
Transaction Date,Transaction Type,Sort Code,Account Number,Transaction Description,Debit Amount,Credit Amount,Balance,
27/01/2025,FPI,'99-99-99,11111111,SMITH J ABCDE 111111111111111111 111111 10 25JAN25 13:34,,214,500
25/01/2025,FPI,'99-99-99,11111111,JONES A FGHIJ 111111111111111112 111112 10 25JAN25 10:34,,213,286
1 Transaction Date,Transaction Type,Sort Code,Account Number,Transaction Description,Debit Amount,Credit Amount,Balance,
2 27/01/2025,FPI,'99-99-99,11111111,SMITH J ABCDE 111111111111111111 111111 10 25JAN25 13:34,,214,500
3 25/01/2025,FPI,'99-99-99,11111111,JONES A FGHIJ 111111111111111112 111112 10 25JAN25 10:34,,213,286
@@ -166,3 +166,28 @@ class CsvImportTest(TestCase):
]
filename = "csvimport_data_de_postbank.csv"
self._test_from_sample_file(filename, expected, hint, expected_parsed)
def test_sample_file_lloyds(self):
expected = [
# Lloyds Bank includes a trailing comma at the end of the header row, making the header one column longer than the data rows.
['Transaction Date', 'Transaction Type', 'Sort Code', 'Account Number', 'Transaction Description', 'Debit Amount',
'Credit Amount', 'Balance', ''],
["27/01/2025", "FPI", "'99-99-99", "11111111", "SMITH J ABCDE 111111111111111111 111111 10 25JAN25 13:34",
"", "214", "500"],
["25/01/2025", "FPI", "'99-99-99", "11111111", "JONES A FGHIJ 111111111111111112 111112 10 25JAN25 10:34",
"", "213", "286"],
]
hint = {
'reference': [4],
'date': 0,
'amount': 6,
'cols': 9,
}
expected_parsed = [
{'reference': 'SMITH J ABCDE 111111111111111111 111111 10 25JAN25 13:34', 'amount': '214',
'date': '27/01/2025'},
{'reference': 'JONES A FGHIJ 111111111111111112 111112 10 25JAN25 10:34', 'amount': '213',
'date': '25/01/2025'},
]
filename = "csvimport_data_gb_lloyds.csv"
self._test_from_sample_file(filename, expected, hint, expected_parsed)
@@ -574,7 +574,7 @@ def test_pending_paypal_drop_fee(env, job):
env[2].save()
p = env[2].payments.create(
provider='paypal',
state=OrderPayment.PAYMENT_STATE_PENDING,
state=OrderPayment.PAYMENT_STATE_CREATED,
fee=fee,
amount=env[2].total
)