Compare commits

..

18 Commits

Author SHA1 Message Date
Mira Weller
57b1b595b5 fix formatting 2025-01-14 18:36:35 +01:00
Mira Weller
19d1336e98 make "Show in backend" button on ticket pages available on custom domain (with valid cross-domain session) 2025-01-13 17:05:27 +01:00
Raphael Michel
62c028d9ac Fix order availability with blocked seeat (Z#23178286) (#4734) 2025-01-13 12:49:49 +01:00
Hijiri
57f5eeff82 Update name scheme examples, adapt addressing system for Japan 2025-01-13 10:51:24 +01:00
Hijiri Umemoto
d92e82a133 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Hijiri Umemoto
5704142fe1 Translations: Update Korean
Currently translated at 0.4% (26 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Hijiri Umemoto
8c5768912c Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Hijiri Umemoto
934567c811 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
David Vaz
b16f54fad9 Translations: Update Portuguese (Portugal)
Currently translated at 85.5% (4991 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Martin Gross
5dcd1f229b Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Martin Gross
40e4f8a05a Translations: Update German
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
8d9295a628 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Bernd Mohring
063e1e16a3 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
b5733a433d Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Bernd Mohring
454354f148 Translations: Update German
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
8480f45997 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
b909b0b4bd Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
c4b45b7d95 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-10 19:21:20 +01:00
14 changed files with 179 additions and 273 deletions

View File

@@ -222,3 +222,15 @@ class HistoryPasswordValidator:
user.historic_passwords.filter(
pk__in=user.historic_passwords.order_by("-created")[self.history_length:].values_list("pk", flat=True),
).delete()
def has_event_access_permission(request, permission='can_change_event_settings'):
return (
request.user.is_authenticated and
request.user.has_event_permission(request.organizer, request.event, permission, request=request)
) or (
getattr(request, 'event_access_user', None) and
request.event_access_user.is_authenticated and
request.event_access_user.has_event_permission(request.organizer, request.event, permission,
session_key=request.event_access_parent_session_key)
)

View File

@@ -62,63 +62,6 @@ 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][1].append(i)
else:
packed_groups.append((i, []))
# Each packed_groups element contains (parent product, list of addon products)
def _reorder(packed_groups):
# Emit the products as individual products again, reordered by "all parent products, then all addon products"
# within each group.
for group_grouper, grouped in groupby(packed_groups, key=lambda g: key(g[0]) + tuple(key(a) for a in g[1])):
grouped = list(grouped)
for grp in grouped:
yield grp[0]
for i in range(max(len(grp[1]) for grp in grouped)):
for grp in grouped:
if len(grp[1]) > i:
yield grp[1][i]
return groupby(_reorder(packed_groups), key)
class NumberedCanvas(Canvas):
def __init__(self, *args, **kwargs):
self.font_regular = kwargs.pop('font_regular')
@@ -692,11 +635,7 @@ 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 addon_aware_groupby(
self.invoice.lines.all(),
key=_group_key,
is_addon=lambda l: l.description.startswith(" +"),
):
for (description, tax_rate, tax_name, net_value, gross_value, *ignored), lines in groupby(self.invoice.lines.all(), key=_group_key):
lines = list(lines)
if has_taxes:
if len(lines) > 1:

View File

@@ -1087,7 +1087,7 @@ class Order(LockModel, LoggedModel):
for i, op in enumerate(positions):
if op.seat:
if not op.seat.is_available(ignore_orderpos=op):
if not op.seat.is_available(ignore_orderpos=op, sales_channel=self.sales_channel.identifier):
raise Quota.QuotaExceededException(error_messages['seat_unavailable'].format(seat=op.seat))
if force:
continue

View File

@@ -3557,8 +3557,8 @@ PERSON_NAME_SCHEMES = OrderedDict([
str(p) for p in [d.get('family_name', ''), d.get('given_name', '')] if p
),
'sample': {
'given_name': '泽东',
'family_name': '',
'family_name': '',
'given_name': '',
'_scheme': 'family_nospace_given',
},
}),
@@ -3609,8 +3609,8 @@ PERSON_NAME_SCHEMES = OrderedDict([
'concatenation': lambda d: str(d.get('full_name', '')),
'concatenation_all_components': lambda d: str(d.get('full_name', '')) + " (" + d.get('latin_transcription', '') + ")",
'sample': {
'full_name': '庄司',
'latin_transcription': 'Shōji',
'full_name': '山田花子',
'latin_transcription': 'Yamada Hanako',
'_scheme': 'full_transcription',
},
}),
@@ -3701,6 +3701,7 @@ COUNTRIES_WITH_STATE_IN_ADDRESS = {
'BR': (['State'], 'short'),
'CA': (['Province', 'Territory'], 'short'),
# 'CN': (['Province', 'Autonomous region', 'Munincipality'], 'long'),
'JP': (['Prefecture'], 'long'),
'MY': (['State', 'Federal territory'], 'long'),
'MX': (['State', 'Federal district'], 'short'),
'US': (['State', 'Outlying area', 'District'], 'short'),

View File

@@ -25,13 +25,15 @@ from contextlib import contextmanager
from dateutil.parser import parse
from django.utils.timezone import now
from pretix.base.auth import has_event_access_permission
timemachine_now_var = contextvars.ContextVar('timemachine_now', default=None)
@contextmanager
def time_machine_now_assigned_from_request(request):
if hasattr(request, 'event') and f'timemachine_now_dt:{request.event.pk}' in request.session and \
request.event.testmode and has_time_machine_permission(request, request.event):
request.event.testmode and has_event_access_permission(request):
request.now_dt = parse(request.session[f'timemachine_now_dt:{request.event.pk}'])
request.now_dt_is_fake = True
else:
@@ -70,17 +72,3 @@ def time_machine_now_assigned(now_dt):
yield
finally:
timemachine_now_var.set(None)
def has_time_machine_permission(request, event):
permission = 'can_change_event_settings'
return (
request.user.is_authenticated and
request.user.has_event_permission(request.organizer, request.event, permission, request=request)
) or (
getattr(request, 'event_access_user', None) and
request.event_access_user.is_authenticated and
request.event_access_user.has_event_permission(request.organizer, request.event, permission,
session_key=request.event_access_parent_session_key)
)

View File

@@ -5,8 +5,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-16 16:15+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"PO-Revision-Date: 2025-01-10 10:00+0000\n"
"Last-Translator: Martin Gross <gross@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
">\n"
"Language: de\n"
@@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
"X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n"
#: pretix/_base_settings.py:79
@@ -19542,7 +19542,7 @@ msgid ""
msgstr ""
"Wenn Sie komplexere Funktionen wie zusätzliche Produkte, Produktvarianten "
"oder freie Kontingentstrukturen nutzen wollen, können Sie dies später über "
"den Konfigurationsbereich \"Produkte\" in der linken Navigationsleiste tun. "
"den Konfigurationsbereich Produkte in der linken Navigationsleiste tun. "
"Keine Sorge, alles was Sie hier eingeben, können Sie später noch ändern."
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
@@ -32366,7 +32366,7 @@ msgstr "Wir versuchen nun, diese Zusatzprodukte für Sie zu buchen!"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:28
msgid "Additional options for"
msgstr "Zusätzliche Einstellungen für"
msgstr "Zusätzliche Optionen für"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:64
msgid "More recommendations"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-16 16:28+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"PO-Revision-Date: 2025-01-10 10:00+0000\n"
"Last-Translator: Martin Gross <gross@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n"
"Language: de_Informal\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -19511,7 +19511,7 @@ msgstr ""
"Wenn du komplexere Funktionen wie zusätzliche Produkte, Produktvarianten "
"oder freie Kontingentstrukturen nutzen willst, kannst du dies später über "
"den Konfigurationsbereich \"Produkte\" in der linken Navigationsleiste tun. "
"Keine Sorge, alles was du hier gibst, kannst du später noch ändern."
"Keine Sorge, alles was du hier eingibst, kannst du später noch ändern."
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
#: pretix/control/views/event.py:357
@@ -19524,7 +19524,7 @@ msgid ""
"your event, but if you're in a hurry and want to get started quickly, here's "
"a short version:"
msgstr ""
"Wir empfehlen, dass du dich die Zeit nimmst und die Einstellungen deiner "
"Wir empfehlen, dass du dir die Zeit nimmst und die Einstellungen deiner "
"Veranstaltungen in Ruhe durchgehst. Wenn du aber schnell loslegen willst, "
"ist hier die Kurzversion:"
@@ -32309,7 +32309,7 @@ msgstr "Wir versuchen nun, diese Zusatzprodukte für dich zu buchen!"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:28
msgid "Additional options for"
msgstr "Zusätzliche Einstellungen für"
msgstr "Zusätzliche Optionen für"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:64
msgid "More recommendations"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2025-01-06 00:00+0000\n"
"PO-Revision-Date: 2025-01-11 21:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n"
@@ -539,7 +539,7 @@ msgstr ""
#: pretix/api/webhooks.py:354
msgid "Shop taken live"
msgstr "ショップが営業中になりました"
msgstr "ショップが公開中になりました"
#: pretix/api/webhooks.py:358
msgid "Shop taken offline"
@@ -2012,7 +2012,7 @@ msgstr "税率{rate}%での税金"
#: pretix/base/exporters/orderlist.py:276
#, python-brace-format
msgid "Net at {rate} % tax"
msgstr "税率{rate}%のネット"
msgstr "税率{rate}%の税抜価格"
#: pretix/base/exporters/orderlist.py:277
#, python-brace-format
@@ -2713,7 +2713,7 @@ msgstr "全て"
#: pretix/base/exporters/orderlist.py:1306 pretix/control/forms/filter.py:1417
msgid "Live"
msgstr "営業中"
msgstr "公開中"
#: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1425
#: pretix/control/templates/pretixcontrol/pdf/index.html:252
@@ -3268,7 +3268,7 @@ msgstr "税率"
#: pretix/base/invoice.py:623
msgctxt "invoice"
msgid "Net"
msgstr "ネット"
msgstr "税抜"
#: pretix/base/invoice.py:624
msgctxt "invoice"
@@ -3320,7 +3320,7 @@ msgstr "残高"
#: pretix/base/invoice.py:769
msgctxt "invoice"
msgid "Net value"
msgstr "純資産価値"
msgstr "税抜価格"
#: pretix/base/invoice.py:770
msgctxt "invoice"
@@ -3362,7 +3362,7 @@ msgstr "デフォルトの請求書レンダラー(ヨーロッパスタイル
#: pretix/base/invoice.py:947
msgctxt "invoice"
msgid "(Please quote at all times.)"
msgstr "すべてのアイテムについて見積もりをしてください。)"
msgstr "問い合わせ時には、この番号をお知らせください。)"
#: pretix/base/invoice.py:994
msgid "Simplified invoice renderer"
@@ -3667,7 +3667,7 @@ msgstr "タグ"
#: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:297
msgid "Shows hidden products that match this voucher"
msgstr "このクーポンに適合する非表示の商品を表示します\\"
msgstr "このクーポンに適合する隠された商品を表示する"
#: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:301
msgid "Offer all add-on products for free when redeeming this voucher"
@@ -4336,7 +4336,7 @@ msgid ""
"If checked, an event can only be taken live if the property is set. In event "
"series, its always optional to set a value for individual dates"
msgstr ""
"チェックされているとき、プロパティが設定されている場合にのみ、イベントを営業"
"チェックされているとき、プロパティが設定されている場合にのみ、イベントを公開"
"中にすることができます。イベントシリーズでは、個々の日付に値を設定することは"
"常にオプションです"
@@ -4588,7 +4588,7 @@ msgstr "申し訳ございません。情報が利用できません"
#: pretix/base/models/items.py:452 pretix/base/models/items.py:772
msgid "Don't use re-usable media, use regular one-off tickets"
msgstr "再利用可能なメディアを使用せず、通常の一回りのチケットを使用してください"
msgstr "再利用可能なメディアを使用せず、通常の一回りのチケットを使用してください"
#: pretix/base/models/items.py:453
msgid "Require an existing medium to be re-used"
@@ -4678,11 +4678,11 @@ msgstr "このイベントで待ちリストが有効になっている場合の
#: pretix/base/models/items.py:544 pretix/base/settings.py:1350
#: pretix/control/forms/event.py:1677
msgid "Show number of tickets left"
msgstr "チケットの残り枚数を表示します"
msgstr "チケットの残り枚数を表示す"
#: pretix/base/models/items.py:545
msgid "Publicly show how many tickets are still available."
msgstr "公に利用可能なチケットの数を表示してください。"
msgstr "利用可能なチケットの数を公表します。"
#: pretix/base/models/items.py:552 pretix/control/forms/item.py:622
msgid "Product picture"
@@ -4822,7 +4822,7 @@ msgstr ""
#: pretix/base/models/items.py:672
msgid "Only sell tickets for this product on the selected sales channels."
msgstr "この製品のチケットは選択した販売チャネルでのみ販売してください。"
msgstr "この製品のチケットは選択した販売チャネルでのみ販売します。"
#: pretix/base/models/items.py:677
msgid ""
@@ -5362,7 +5362,7 @@ msgstr "総容量"
#: pretix/base/models/items.py:2036 pretix/control/forms/item.py:448
msgid "Leave empty for an unlimited number of tickets."
msgstr "チケットの数に制限はありません。"
msgstr "空欄にすると、チケットの数が無制限になります。"
#: pretix/base/models/items.py:2040 pretix/base/models/orders.py:1487
#: pretix/base/models/orders.py:2982
@@ -6245,11 +6245,11 @@ msgid ""
"option after consulting a tax counsel. No warranty given for correct tax "
"calculation. USE AT YOUR OWN RISK."
msgstr ""
"非推奨です。ほとんどのイベントは逆転納税の対象とならないため、課税の場所はイ"
"ベントの場所となります。このオプションを有効にすると、EU外のすべての顧客およ"
"び有効なEUのVAT番号を入力した異なるEU諸国の事業顧客に対してVATを請求しません"
"。税務顧問と相談した後にのみこのオプションを有効にしてください。正しい税金の"
"計算については保証されません。自己責任でご利用ください。"
"非推奨です。ほとんどのイベントはリバースチャージ制度の対象とならず、イベント"
"の場所が課税の場所となります。このオプションを有効にすると、EU外のすべての顧"
"客および有効なEUのVAT番号を入力した異なるEU諸国の事業顧客に対してVATを請求し"
"ません。税務顧問と相談した後にのみこのオプションを有効にしてください。正しい"
"税金の計算については保証されません。自己責任でご利用ください。"
#: pretix/base/models/tax.py:374 pretix/plugins/stripe/payment.py:299
msgid "Merchant country"
@@ -6362,8 +6362,8 @@ msgstr "このバウチャーが有効になると、影響を受ける製品の
msgid ""
"If activated, a holder of this voucher code can buy tickets, even if there "
"are none left."
msgstr "このバウチャーコードを持っている人は、有効になった場合でも、チケットを購入す"
"ことができます。"
msgstr "このバウチャーコードを持っている人は、売り切れた場合でも、チケットを購入す"
"ことができます。"
#: pretix/base/models/vouchers.py:254 pretix/control/forms/vouchers.py:69
msgid ""
@@ -7048,7 +7048,7 @@ msgstr "アドオンを含む価格"
#: pretix/base/services/placeholders.py:669
#: pretix/base/services/placeholders.py:678 pretix/control/views/event.py:797
msgid "John Doe"
msgstr "John Doe"
msgstr "山田 太郎"
#: pretix/base/pdf.py:177
#: pretix/control/templates/pretixcontrol/order/index.html:549
@@ -7408,7 +7408,7 @@ msgstr "イベント終了"
#: pretix/base/reldate.py:37
msgid "Event admission"
msgstr "イベントの入場"
msgstr "イベントの入場"
#: pretix/base/reldate.py:38
msgid "Presale start"
@@ -7635,7 +7635,7 @@ msgstr ""
#: pretix/base/services/cart.py:175
#, python-format
msgid "This voucher code can only be redeemed %d more times."
msgstr "このバウチャーコードは、もう%d回しか引き換えることができません。"
msgstr "このバウチャーコードは、あと%d回しか引き換えることができません。"
#: pretix/base/services/cart.py:176
msgid ""
@@ -8621,7 +8621,7 @@ msgstr "プラグイン: %s"
#: pretix/base/services/vouchers.py:56 pretix/control/logdisplay.py:484
#, python-brace-format
msgid "The voucher has been sent to {recipient}."
msgstr "そのバウチャーは{recipient}に送信されました。"
msgstr "バウチャーは{recipient}あてに送信されました。"
#: pretix/base/settings.py:125
msgid "Allow usage of restricted plugins"
@@ -9238,7 +9238,7 @@ msgstr "開始日を表示します"
#: pretix/base/settings.py:1025
msgid "Show the presale start date before presale has started."
msgstr "プレセールの開始日を表示する前に、プレセール開始される前です。"
msgstr "プレセールが始まる前に、プレセール開始日を表示します。"
#: pretix/base/settings.py:1040 pretix/base/settings.py:1051
msgid "Do not generate invoices"
@@ -9467,7 +9467,7 @@ msgstr "全ての売り切れ商品を非表示にしてください"
#: pretix/base/settings.py:1351 pretix/control/forms/event.py:1678
msgid "Publicly show how many tickets of a certain type are still available."
msgstr "特定の種類のチケットの残り枚数を公開してください。"
msgstr "特定の種類のチケットの残り枚数を公開する。"
#: pretix/base/settings.py:1360
msgid "Ask search engines not to index the ticket shop"
@@ -9696,8 +9696,8 @@ msgid ""
"from the page as soon as they clicked a link in the email. Does not affect "
"orders performed through other sales channels."
msgstr ""
"電源が入っている場合、チケットは購入直後に直接ダウンロードできません。ファイ"
"ルサイズが大きくない場合、支払い確認のメールに添付され、顧客はメール内のリン"
"オンになっている場合、チケットは購入直後に直接ダウンロードできません。ファイ"
"ルサイズが大きくなければ、支払い確認のメールに添付され、顧客はメール内のリン"
"クをクリックするとすぐにページからダウンロードできます。他の販売チャネルを通"
"じて行われた注文には影響しません。"
@@ -10162,7 +10162,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/mail.html:39
#: pretix/control/templates/pretixcontrol/organizers/mail.html:40
msgid "Sender address"
msgstr "送り主の住所"
msgstr "送信元のアドレス"
#: pretix/base/settings.py:2137 pretix/control/forms/mailsetup.py:36
#: pretix/control/forms/mailsetup.py:109
@@ -10312,8 +10312,8 @@ msgstr ""
"こんにちは、\n"
"\n"
"{event}の注文を承りました。\n"
"イベント主催者の承認が必要な商品をご注文いただいたため、次のメールをお待ちい"
"ただくようお願い申し上げます。\n"
"イベント主催者の承認が必要な商品をご注文いただいたため、\n"
"次のメールをお待ちいただくようお願い申し上げます。\n"
"\n"
"注文の詳細の変更と確認は、以下のURLから可能です。\n"
"{url}\n"
@@ -11460,7 +11460,7 @@ msgstr "氏Surname/Family Name"
#: pretix/base/settings.py:3685
msgctxt "person_name_sample"
msgid "John"
msgstr "ジョン"
msgstr "太郎"
#: pretix/base/settings.py:3467 pretix/base/settings.py:3483
#: pretix/base/settings.py:3499 pretix/base/settings.py:3515
@@ -11469,7 +11469,7 @@ msgstr "ジョン"
#: pretix/base/settings.py:3655 pretix/base/settings.py:3686
msgctxt "person_name_sample"
msgid "Doe"
msgstr "Doe"
msgstr "山田"
#: pretix/base/settings.py:3473 pretix/base/settings.py:3489
#: pretix/base/settings.py:3521 pretix/base/settings.py:3640
@@ -11497,7 +11497,7 @@ msgstr "ミドルネーム"
#: pretix/control/forms/organizer.py:651
msgctxt "person_name_sample"
msgid "John Doe"
msgstr "John Doe"
msgstr "山田 太郎"
#: pretix/base/settings.py:3593
msgid "Calling name"
@@ -12183,7 +12183,7 @@ msgstr "あなたのイベントは終了します"
#: pretix/base/timeline.py:76
msgctxt "timeline"
msgid "Admissions for your event start"
msgstr "イベントの入場始まります"
msgstr "イベントの入場始まります"
#: pretix/base/timeline.py:84
msgctxt "timeline"
@@ -13214,7 +13214,7 @@ msgstr "支払い期限"
#: pretix/control/forms/filter.py:1196 pretix/control/forms/filter.py:1671
msgid "Shop live and presale running"
msgstr "営業中かつプレセールが開催中です"
msgstr "公開中かつ予約販売が開催中です"
#: pretix/control/forms/filter.py:1197 pretix/control/forms/filter.py:2013
msgid "Inactive"
@@ -13314,7 +13314,7 @@ msgstr "有効なメンバーシップがあります"
#: pretix/control/forms/filter.py:1670
msgid "Shop live"
msgstr "お店が営業中"
msgstr "ショップが公開中"
#: pretix/control/forms/filter.py:1672
msgid "Shop not live"
@@ -13657,8 +13657,8 @@ msgid ""
"as-a-Service company)."
msgstr ""
"私は他のイベント主催者のチケットを販売するためにPretixを使用しています"
"チケット販売会社)、または他の人にPretixの機能を提供していますSoftware-"
"as-a-Service会社)。"
"チケット販売会社)、または他の人にoretixの機能を提供していますSaaS会社"
")。"
#: pretix/control/forms/global_settings.py:162
msgid "I'm not sure which option applies."
@@ -14325,7 +14325,7 @@ msgstr ""
#: pretix/control/forms/orders.py:714 pretix/plugins/sendmail/forms.py:196
msgid "Attach tickets"
msgstr "チケットを添付します"
msgstr "チケットを添付す"
#: pretix/control/forms/orders.py:715 pretix/plugins/sendmail/forms.py:197
msgid ""
@@ -14347,8 +14347,8 @@ msgstr "受取人"
#: pretix/control/forms/orders.py:777
msgid ""
"Cancel the order. All tickets will no longer work. This can not be reverted."
msgstr "注文をキャンセルします。すべてのチケットはもはや有効ではありません。これは元"
"戻すことができません。"
msgstr "注文をキャンセルす。すべてのチケットはもはや有効ではありません。これは元"
"戻すことができません。"
#: pretix/control/forms/orders.py:778
msgid ""
@@ -15525,8 +15525,8 @@ msgstr "未確認のタイプの電子メールが送信されました。"
msgid ""
"The email has been sent without attached tickets since they would have been "
"too large to be likely to arrive."
msgstr "チケットを添付すると、サイズが大きすぎて届可能性が低いため、メールはチケッ"
"トを添付せずに送信されました。"
msgstr "チケットサイズが大きすぎて届かない可能性があるため、チケットを添付せずにメ"
"ールが送信されました。"
#: pretix/control/logdisplay.py:422
msgid "A custom email has been sent."
@@ -15753,7 +15753,7 @@ msgstr "そのバウチャーは作成されました。"
#: pretix/control/logdisplay.py:485
msgid "The voucher has been created and sent to a person on the waiting list."
msgstr "そのバウチャー作成され、空席待ちリストの人に送信されました。"
msgstr "バウチャー作成され、空席待ちリストの人に送信されました。"
#: pretix/control/logdisplay.py:486
msgid ""
@@ -16528,8 +16528,8 @@ msgstr "お帰りなさい!"
msgid ""
"You configured your account to require authentication with a second medium, "
"e.g. your phone. Please enter your verification code here:"
msgstr "アカウントの設定で、第二の認証手段(例:携帯電話)が必要になるように構成しま"
"した。こちらに確認コードを入力してください:"
msgstr "アカウントの設定で、第二の認証手段(例:携帯電話)が必要になるように構成され"
"ています。こちらに確認コードを入力してください:"
#: pretix/control/templates/pretixcontrol/auth/login_2fa.html:14
msgid "Token"
@@ -16835,7 +16835,7 @@ msgstr "セキュリティ上の理由から、続行する前にパスワード
#: pretix/control/templates/pretixcontrol/base.html:454
#, python-format
msgid "Times displayed in %(tz)s"
msgstr "%(tz)sで表示される時間"
msgstr "表示される時間帯 %(tz)s"
#: pretix/control/templates/pretixcontrol/base.html:460
msgid "running in development mode"
@@ -18253,7 +18253,7 @@ msgstr "チケットショップを公開するためには、まず以下の問
#: pretix/control/templates/pretixcontrol/event/live.html:51
#: pretix/control/templates/pretixcontrol/event/live.html:65
msgid "Go live"
msgstr "営業を開始します"
msgstr "オンラインにする"
#: pretix/control/templates/pretixcontrol/event/live.html:59
msgid "If you want to, you can publish your ticket shop now."
@@ -18420,7 +18420,7 @@ msgstr "支払い済みの注文"
#: pretix/control/templates/pretixcontrol/event/mail.html:96
msgid "Free order"
msgstr "自由な順序"
msgstr "無料の注文"
#: pretix/control/templates/pretixcontrol/event/mail.html:99
#: pretix/control/templates/pretixcontrol/order/index.html:248
@@ -18446,7 +18446,7 @@ msgstr "注文のカスタム電子メール"
#: pretix/control/templates/pretixcontrol/event/mail.html:120
msgid "Reminder to download tickets"
msgstr "チケットダウンロードすることをお知らせします"
msgstr "チケットダウンロードをリマインドする"
#: pretix/control/templates/pretixcontrol/event/mail.html:123
msgid "Order approval process"
@@ -20044,8 +20044,9 @@ msgid ""
"tickets\" or \"buy 2 tickets, get 1 free\"."
msgstr ""
"自動割引を使用すると、特定の条件に基づいて顧客の購入に自動的に割引を適用する"
"ことができます。たとえば、「3枚以上のチケットを購入すると20割引」や「2枚の"
"チケットを購入すると1枚無料」などのグループ割引を作成することができます。"
"ことができます。たとえば、「3枚以上のチケットを購入すると20パーセント割引」や"
"「2枚のチケットを購入すると1枚無料」などのグループ割引を作成することができま"
"す。"
#: pretix/control/templates/pretixcontrol/items/discounts.html:15
msgid ""
@@ -20158,7 +20159,7 @@ msgstr "新しい商品を作成"
#: pretix/control/templates/pretixcontrol/items/index.html:101
msgid "Personalized admission ticket"
msgstr "サンプル用チケット"
msgstr "記名式入場券"
#: pretix/control/templates/pretixcontrol/items/index.html:103
msgid "Admission ticket without personalization"
@@ -20196,7 +20197,7 @@ msgstr "<strong>plus</strong> %(rate)s%% %(taxname)s"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:409
#, python-format
msgid "incl. %(rate)s%% %(taxname)s"
msgstr "%(taxname)s%(rate)s を含む"
msgstr "%(taxname)s%(rate)s パーセントを含む"
#: pretix/control/templates/pretixcontrol/items/question.html:6
#: pretix/control/templates/pretixcontrol/items/question.html:9
@@ -20404,7 +20405,7 @@ msgstr "このクォータの実際の結果を変更する可能性があるプ
#: pretix/control/templates/pretixcontrol/items/quota.html:86
#, python-format
msgid "This quota is currently overbooked by %(num)s tickets."
msgstr "このクォータは現在%(num)s枚のチケット過剰予約されています。"
msgstr "このクォータは現在%(num)s枚のチケット過剰予約されています。"
#: pretix/control/templates/pretixcontrol/items/quota.html:93
msgid ""
@@ -21125,7 +21126,7 @@ msgstr "エントリーのスキャン: %(date)s"
#: pretix/control/templates/pretixcontrol/order/index.html:422
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:54
msgid "Voucher code used:"
msgstr "割引コード使用済:"
msgstr "使用するバウチャーコード:"
#: pretix/control/templates/pretixcontrol/order/index.html:424
#, python-format
@@ -21886,7 +21887,7 @@ msgstr "保留中(確認済み)"
#: pretix/control/templates/pretixcontrol/orders/fragment_order_status.html:26
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:19
msgid "Canceled (paid fee)"
msgstr "キャンセル(料金支払い済み)"
msgstr "キャンセル済み(支払い済み手数料"
#: pretix/control/templates/pretixcontrol/orders/import_process.html:6
#: pretix/control/templates/pretixcontrol/orders/import_process.html:8
@@ -22486,7 +22487,7 @@ msgstr "デバイスを接続"
#: pretix/control/templates/pretixcontrol/organizers/devices.html:81
msgid "Hardware model"
msgstr "ハードウェアモデル"
msgstr "ハードウェアの機種"
#: pretix/control/templates/pretixcontrol/organizers/devices.html:139
msgid "Not yet initialized"
@@ -25009,7 +25010,7 @@ msgstr "選択したリストは削除されました。"
#: pretix/control/views/dashboards.py:115
msgid "Attendees (ordered)"
msgstr "出席者(順番に"
msgstr "参加者(注文済み"
#: pretix/control/views/dashboards.py:125
msgid "Attendees (paid)"
@@ -25047,11 +25048,11 @@ msgstr "ここをクリックして変更してください"
#: pretix/control/views/dashboards.py:273
msgid "live"
msgstr "営業中"
msgstr "公開中"
#: pretix/control/views/dashboards.py:274
msgid "live and in test mode"
msgstr "営業中かつテストモード"
msgstr "公開中かつテストモード"
#: pretix/control/views/dashboards.py:275
msgid "not yet public"
@@ -25188,7 +25189,7 @@ msgstr "無効なチケット出力タイプをリクエストしました。"
#: pretix/control/views/event.py:972
msgid "Your shop is live now!"
msgstr "あなたのショップは営業中です!"
msgstr "あなたのショップは公開中です!"
#: pretix/control/views/event.py:980
msgid "We've taken your shop down. You can re-enable it whenever you want!"
@@ -25549,7 +25550,7 @@ msgstr "検証コードが間違っています。もう一度お試しくださ
#: pretix/control/views/mailsetup.py:221
msgid "Sender address verification"
msgstr "送り主の住所確認"
msgstr "送信元のアドレス確認"
#: pretix/control/views/mailsetup.py:277
#, python-format
@@ -27348,7 +27349,7 @@ msgstr "払い戻しをエクスポート"
#: pretix/plugins/banktransfer/signals.py:123
msgid "The invoice was sent to the designated email address."
msgstr "請求書は指定されたメールアドレスに送信されました。"
msgstr "請求書は指定されたメールアドレスあてに送信されました。"
#: pretix/plugins/banktransfer/signals.py:132
#, python-brace-format
@@ -29514,7 +29515,7 @@ msgstr "ストライプアカウント"
#: pretix/plugins/stripe/payment.py:261
msgctxt "stripe"
msgid "Live"
msgstr "営業中"
msgstr "公開中"
#: pretix/plugins/stripe/payment.py:262
msgctxt "stripe"
@@ -30753,7 +30754,7 @@ msgstr "このショップは現在あなたとあなたのチームだけが見
#: pretix/presale/templates/pretixpresale/event/base.html:34
msgid "Take it live now"
msgstr "今すぐ営業を始める"
msgstr "今すぐ公開する"
#: pretix/presale/templates/pretixpresale/event/base.html:44
#: pretix/presale/templates/pretixpresale/event/base.html:105
@@ -30818,9 +30819,10 @@ msgid ""
"href=\"%(time_machine_link)s\"><span class=\"fa fa-clock-o\" aria-"
"hidden=\"true\"></span>time machine</a>."
msgstr ""
"異なる時点であなたのショップを表示するには、<a href=\"%(time_machine_link)s\""
"><span class=\"fa fa-clock-o\" aria-hidden=\"true\""
"></span>タイムマシン</a>を有効にすることができます。"
"<a href=\"%(time_machine_link)s\"><span class=\"fa fa-clock-o\" aria-hidden="
"\"true\""
"></span>タイムマシン</a>を有効にすることで、異なる時刻におけるあなたのショッ"
"プを表示することができます。"
#: pretix/presale/templates/pretixpresale/event/base.html:163
#: pretix/presale/templates/pretixpresale/event/base.html:210
@@ -31009,7 +31011,7 @@ msgstr "注文を確定"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:209
msgid "Submit registration"
msgstr "登録を送信してください"
msgstr "予約を送信する"
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:18
msgid "Log in with a customer account"
@@ -31343,7 +31345,7 @@ msgstr "<strong>plus</strong> %(rate)s%% %(name)s"
#: pretix/presale/templates/pretixpresale/event/voucher.html:366
#, python-format
msgid "incl. %(rate)s%% %(name)s"
msgstr "%(name)s %(rate)sを含む"
msgstr "%(name)s %(rate)sパーセントを含む"
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:200
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:207
@@ -31761,7 +31763,7 @@ msgstr "注文が確定しました"
#: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:14
msgid "Please check your email account, we've sent you your tickets."
msgstr "メールアカウントを確認してください。チケットを送信しました。"
msgstr "メールが届いているかご確認ください。チケットを送信しました。"
#: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:16
msgid "Please check your email account, we've sent you an email."
@@ -32091,12 +32093,12 @@ msgid ""
"your order to be sent to you again."
msgstr ""
"注文の状況や詳細を確認または変更したい場合は、注文手続き中に当社から送られた"
"メールのリンクをクリックしてください。リンクが見つからない場合は、以下のボタ"
"メールのリンクをクリックしてください。リンクが見つからない場合は、つぎのボタ"
"ンをクリックして、注文のリンクを再度送付してもらうこともできます。"
#: pretix/presale/templates/pretixpresale/event/index.html:256
msgid "Resend order link"
msgstr "注文リンクを再送してください"
msgstr "注文リンクを再送する"
#: pretix/presale/templates/pretixpresale/event/offline.html:4
#: pretix/presale/templates/pretixpresale/event/offline.html:8
@@ -32382,7 +32384,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/order.html:467
msgid "You can cancel this order using the following button."
msgstr "のボタンを使用して、この注文をキャンセルすることができます。"
msgstr "つぎのボタンを使用して、この注文をキャンセルすることができます。"
#: pretix/presale/templates/pretixpresale/event/order_cancel.html:11
#, python-format
@@ -32547,7 +32549,7 @@ msgstr "チケットを変更"
msgid ""
"If you want to make changes to the components of your ticket, you can click "
"on the following button."
msgstr "チケットのコンポーネントを変更したい場合は、以下のボタンをクリックしてくださ"
msgstr "チケットのコンポーネントを変更したい場合は、つぎのボタンをクリックしてくださ"
"い。"
#: pretix/presale/templates/pretixpresale/event/position.html:73
@@ -32587,7 +32589,7 @@ msgstr "支払い済みの注文"
#: pretix/presale/templates/pretixpresale/event/resend_link.html:4
#: pretix/presale/templates/pretixpresale/event/resend_link.html:11
msgid "Resend order links"
msgstr "注文リンクを再送してください"
msgstr "注文リンクを再送する"
#: pretix/presale/templates/pretixpresale/event/resend_link.html:15
msgid ""
@@ -33081,7 +33083,7 @@ msgstr "これからのイベントを見る"
#: pretix/presale/templates/pretixpresale/organizers/index.html:169
msgid "No public upcoming events found."
msgstr "公開される今後のイベントが見つかりません。"
msgstr "今後一般に公表されるイベントが見つかりません。"
#: pretix/presale/templates/pretixpresale/organizers/index.html:169
msgid "Show past events"
@@ -33297,7 +33299,7 @@ msgstr "この注文については、チケットのダウンロードはまだ
#: pretix/presale/views/order.py:1118
msgid "Please click the link we sent you via email to download your tickets."
msgstr "メールで送られたリンクをクリックしてチケットをダウンロードしてください。"
msgstr "メールで送られたリンクをクリックしてチケットをダウンロードしてください。"
#: pretix/presale/views/order.py:1601
#, python-brace-format

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-31 18:00+0000\n"
"PO-Revision-Date: 2025-01-11 21:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/"
">\n"
@@ -170,10 +170,8 @@ msgid "Allowed URIs list, space separated"
msgstr "허용된 URI 리스트, 스페이스로 구분"
#: pretix/api/models.py:47
#, fuzzy
#| msgid "Allowed URIs list, space separated"
msgid "Allowed Post Logout URIs list, space separated"
msgstr "허용된 URI 리스트, 스페이스로 구분"
msgstr "공백으로 구분된 허용된 로그아웃 후 URI 목록"
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
@@ -17954,10 +17952,8 @@ msgid "December"
msgstr ""
#: pretix/control/templates/pretixcontrol/global_sysreport.html:32
#, fuzzy
#| msgid "Generate tickets"
msgid "Generate report"
msgstr "티켓 생성"
msgstr "보고서를 생성"
#: pretix/control/templates/pretixcontrol/global_update.html:7
msgid "Update check results"
@@ -19895,11 +19891,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:5
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:7
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Modify orders"
msgstr "%(s)s개 주문"
msgstr "주문을 수정"
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:12
#, python-format
@@ -22091,11 +22084,8 @@ msgid "Begin"
msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/index.html:176
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Show orders"
msgstr "%(s)s개 주문"
msgstr "주문을 표시"
#: pretix/control/templates/pretixcontrol/subevents/index.html:187
msgctxt "subevent"
@@ -26628,10 +26618,8 @@ msgid ""
msgstr ""
#: pretix/plugins/returnurl/views.py:37
#, fuzzy
#| msgid "Redirection URIs"
msgid "Base redirection URLs"
msgstr "리다이렉션URI"
msgstr "기본 리다이렉션 URL"
#: pretix/plugins/returnurl/views.py:38
msgid ""
@@ -27315,10 +27303,8 @@ msgid "Publishable key"
msgstr ""
#: pretix/plugins/stripe/payment.py:280
#, fuzzy
#| msgid "Generate tickets"
msgid "Generate API keys"
msgstr "티켓 생성"
msgstr "API 키 생성"
#: pretix/plugins/stripe/payment.py:282
msgid ""
@@ -28495,11 +28481,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/base.html:127
#: pretix/presale/templates/pretixpresale/event/base.html:201
#, fuzzy
#| msgid "This ticket has been used once."
#| msgid_plural "This ticket has been used %(count)s times."
msgid "This ticket shop is currently in test mode."
msgstr "티켓이 %(count)s회 사용되었습니다."
msgstr "이 티켓 상점은 현재 테스트 모드입니다."
#: pretix/presale/templates/pretixpresale/event/base.html:130
#: pretix/presale/templates/pretixpresale/event/base.html:204
@@ -29761,11 +29744,8 @@ msgid "Shop offline"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/offline.html:9
#, fuzzy
#| msgid "This ticket has been used once."
#| msgid_plural "This ticket has been used %(count)s times."
msgid "This ticket shop is currently turned off."
msgstr "티켓이 %(count)s회 사용되었습니다."
msgstr "이 티켓 상점은 현재 비활성화되어 있습니다."
#: pretix/presale/templates/pretixpresale/event/offline.html:10
msgid "It is only accessible to authenticated team members."
@@ -30208,11 +30188,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/position_modify.html:5
#: pretix/presale/templates/pretixpresale/event/position_modify.html:8
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Modify ticket"
msgstr "%(s)s개 주문"
msgstr "티켓 수정"
#: pretix/presale/templates/pretixpresale/event/resend_link.html:4
#: pretix/presale/templates/pretixpresale/event/resend_link.html:11

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-13 08:00+0000\n"
"Last-Translator: Vasco Baleia <vb2003.12@gmail.com>\n"
"PO-Revision-Date: 2025-01-10 20:00+0000\n"
"Last-Translator: David Vaz <davidmgvaz@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_PT/>\n"
"Language: pt_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 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -34876,7 +34876,7 @@ msgstr "Nenhuma associação é armazenada em sua conta."
#| msgid "+ %(count)s invited"
msgid "%(counter)s item"
msgid_plural "%(counter)s items"
msgstr[0] "+%(count)s convidados"
msgstr[0] "+%(count)s convidado"
msgstr[1] "+%(count)s convidados"
#: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:78

View File

@@ -63,6 +63,7 @@ from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import TemplateView
from pretix.base.auth import has_event_access_permission
from pretix.base.forms.widgets import SplitDateTimePickerWidget
from pretix.base.models import (
ItemVariation, Quota, SalesChannel, SeatCategoryMapping, Voucher,
@@ -73,9 +74,7 @@ from pretix.base.models.items import (
)
from pretix.base.services.placeholders import PlaceholderContext
from pretix.base.services.quotas import QuotaAvailability
from pretix.base.timemachine import (
has_time_machine_permission, time_machine_now,
)
from pretix.base.timemachine import time_machine_now
from pretix.helpers.compat import date_fromisocalendar
from pretix.helpers.formats.en.formats import (
SHORT_MONTH_DAY_FORMAT, WEEK_FORMAT,
@@ -963,7 +962,7 @@ class EventTimeMachine(EventViewMixin, TemplateView):
def setup(self, request, *args, **kwargs):
super().setup(request, *args, **kwargs)
if not has_time_machine_permission(request, request.event):
if not has_event_access_permission(request):
raise PermissionDenied(_('You are not allowed to access time machine mode.'))
if not request.event.testmode:
raise PermissionDenied(_('This feature is only available in test mode.'))

View File

@@ -60,6 +60,7 @@ from django.utils.translation import gettext, gettext_lazy as _
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import ListView, TemplateView, View
from pretix.base.auth import has_event_access_permission
from pretix.base.models import (
CachedTicket, Checkin, GiftCard, Invoice, Order, OrderPosition, Quota,
TaxRule,
@@ -205,10 +206,8 @@ class TicketPageMixin:
ctx['download_buttons'] = self.download_buttons
ctx['backend_user'] = (
self.request.user.is_authenticated
and self.request.user.has_event_permission(self.request.organizer, self.request.event, 'can_view_orders', request=self.request)
)
ctx['backend_user'] = has_event_access_permission(self.request, 'can_view_orders')
return ctx
@cached_property

View File

@@ -38,12 +38,10 @@ 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,
@@ -608,55 +606,3 @@ 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],
]],
]

View File

@@ -1133,6 +1133,49 @@ def test_order_mark_paid_expired_seat_taken(client, env):
assert o.status == Order.STATUS_EXPIRED
@pytest.mark.django_db
def test_order_mark_paid_expired_blocked(client, env):
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
o.expires = now() - timedelta(days=5)
o.status = Order.STATUS_EXPIRED
o.sales_channel = env[0].organizer.sales_channels.get(identifier="bar")
olddate = o.expires
o.save()
seat_a1 = env[0].seats.create(seat_number="A1", product=env[3], seat_guid="A1", blocked=True)
p = o.positions.first()
p.seat = seat_a1
p.save()
q = Quota.objects.create(event=env[0], size=100)
q.items.add(env[3])
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'p',
'payment_date': now().date().isoformat(),
'amount': str(o.pending_sum),
'force': 'on'
}, follow=True)
assert b'alert-danger' in response.content
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
assert o.expires.strftime("%Y-%m-%d %H:%M:%S") == olddate.strftime("%Y-%m-%d %H:%M:%S")
assert o.status == Order.STATUS_EXPIRED
env[0].settings.seating_allow_blocked_seats_for_channel = ["bar"]
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'p',
'payment_date': now().date().isoformat(),
'amount': str(o.pending_sum),
'force': 'on'
}, follow=True)
assert b'alert-success' in response.content
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
assert o.status == Order.STATUS_PAID
@pytest.mark.django_db
def test_order_go_lowercase(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')