forked from CGM_Public/pretix_original
Compare commits
18 Commits
invoice-gr
...
customdoma
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57b1b595b5 | ||
|
|
19d1336e98 | ||
|
|
62c028d9ac | ||
|
|
57f5eeff82 | ||
|
|
d92e82a133 | ||
|
|
5704142fe1 | ||
|
|
8c5768912c | ||
|
|
934567c811 | ||
|
|
b16f54fad9 | ||
|
|
5dcd1f229b | ||
|
|
40e4f8a05a | ||
|
|
8d9295a628 | ||
|
|
063e1e16a3 | ||
|
|
b5733a433d | ||
|
|
454354f148 | ||
|
|
8480f45997 | ||
|
|
b909b0b4bd | ||
|
|
c4b45b7d95 |
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.'))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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],
|
||||
]],
|
||||
]
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user