Compare commits

...

4 Commits

Author SHA1 Message Date
Raphael Michel
c491c8232e Bank transfer: Allow dashes in event slug to be missing (Z#23216859) (#5682)
* Bank transfer: Allow dashes in event slug to be missing (Z#23216859)

* Update src/pretix/plugins/banktransfer/tasks.py

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>

* Update src/pretix/plugins/banktransfer/tasks.py

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>

* Apply suggestions from code review

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>

---------

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
2025-12-05 10:54:03 +01:00
sandra r
aa02cc7968 Translations: Update Galician
Currently translated at 15.5% (961 of 6172 strings)

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

powered by weblate
2025-12-05 10:36:32 +01:00
Renne Rocha
cfa13d6b9d Translations: Update Portuguese (Brazil)
Currently translated at 90.2% (5572 of 6172 strings)

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

powered by weblate
2025-12-05 10:36:32 +01:00
Raphael Michel
af4eabc800 URL generation: Fix bug if plugins declare both event_urls and organizer_urls (#5688)
* URL generation: Fix bug if plugins declare both event_urls and organizer_urls

* Add missing file

* Add license header
2025-12-05 10:22:28 +01:00
8 changed files with 311 additions and 266 deletions

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-27 13:57+0000\n" "POT-Creation-Date: 2025-11-27 13:57+0000\n"
"PO-Revision-Date: 2025-12-03 23:00+0000\n" "PO-Revision-Date: 2025-12-04 18:00+0000\n"
"Last-Translator: sandra r <sandrarial@gestiontickets.online>\n" "Last-Translator: sandra r <sandrarial@gestiontickets.online>\n"
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix/"
"gl/>\n" "gl/>\n"
@@ -713,7 +713,7 @@ msgid "Your password must contain both numeric and alphabetic characters."
msgstr "O teu contrasinal debe conter caracteres numéricos e alfabéticos." msgstr "O teu contrasinal debe conter caracteres numéricos e alfabéticos."
#: pretix/base/auth.py:202 pretix/base/auth.py:212 #: pretix/base/auth.py:202 pretix/base/auth.py:212
#, fuzzy, python-format #, python-format
msgid "Your password may not be the same as your previous password." msgid "Your password may not be the same as your previous password."
msgid_plural "" msgid_plural ""
"Your password may not be the same as one of your %(history_length)s previous " "Your password may not be the same as one of your %(history_length)s previous "
@@ -721,7 +721,7 @@ msgid_plural ""
msgstr[0] "O teu contrasinal non sexa o mesmo que o teu contrasinal anterior." msgstr[0] "O teu contrasinal non sexa o mesmo que o teu contrasinal anterior."
msgstr[1] "" msgstr[1] ""
"O teu contrasinal non sexa o mesmo que un dos teus contrasinais anteriores " "O teu contrasinal non sexa o mesmo que un dos teus contrasinais anteriores "
"de %(history_length)." "de %(history_length)s."
#: pretix/base/channels.py:168 #: pretix/base/channels.py:168
msgid "Online shop" msgid "Online shop"
@@ -3329,42 +3329,48 @@ msgid ""
"Upload a valid image. The file you uploaded was either not an image or a " "Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image." "corrupted image."
msgstr "" msgstr ""
"Carga unha imaxe válida. O ficheiro que cargaches ou non era unha imaxe ou "
"estaba danado."
#: pretix/base/forms/questions.py:653 pretix/base/forms/questions.py:662 #: pretix/base/forms/questions.py:653 pretix/base/forms/questions.py:662
msgid "" msgid ""
"If you keep this empty, the ticket will be valid starting at the time of " "If you keep this empty, the ticket will be valid starting at the time of "
"purchase." "purchase."
msgstr "" msgstr ""
"Se o deixas baleiro, o billete será válido a partir do momento da compra."
#: pretix/base/forms/questions.py:709 pretix/base/forms/questions.py:1102 #: pretix/base/forms/questions.py:709 pretix/base/forms/questions.py:1102
#, fuzzy
msgid "Street and Number" msgid "Street and Number"
msgstr "Calle y número" msgstr "Rúa e Número"
#: pretix/base/forms/questions.py:1166 #: pretix/base/forms/questions.py:1166
msgid "" msgid ""
"Optional, but depending on the country you reside in we might need to charge " "Optional, but depending on the country you reside in we might need to charge "
"you additional taxes if you do not enter it." "you additional taxes if you do not enter it."
msgstr "" msgstr ""
"Opcional, pero dependendo do país no que residas, pode que teñamos que "
"cobrarche impostos adicionais se non o introduces."
#: pretix/base/forms/questions.py:1168 pretix/base/forms/questions.py:1174 #: pretix/base/forms/questions.py:1168 pretix/base/forms/questions.py:1174
msgid "If you are registered in Switzerland, you can enter your UID instead." msgid "If you are registered in Switzerland, you can enter your UID instead."
msgstr "" msgstr ""
"Se estás rexistrado/a en Suíza, podes introducir o teu UID no seu lugar."
#: pretix/base/forms/questions.py:1172 #: pretix/base/forms/questions.py:1172
msgid "" msgid ""
"Optional, but it might be required for you to claim tax benefits on your " "Optional, but it might be required for you to claim tax benefits on your "
"invoice depending on your and the sellers country of residence." "invoice depending on your and the sellers country of residence."
msgstr "" msgstr ""
"Opcional, pero pode ser necesario para que solicites beneficios fiscais na "
"túa factura dependendo do teu país de residencia e do vendedor."
#: pretix/base/forms/questions.py:1181 #: pretix/base/forms/questions.py:1181
#, fuzzy
msgid "No invoice requested" msgid "No invoice requested"
msgstr "Tarifa de cancelación" msgstr "Non se solicitou factura"
#: pretix/base/forms/questions.py:1183 #: pretix/base/forms/questions.py:1183
msgid "Invoice transmission method" msgid "Invoice transmission method"
msgstr "" msgstr "Método de transmisión de facturas"
#: pretix/base/forms/questions.py:1329 #: pretix/base/forms/questions.py:1329
msgid "You need to provide a company name." msgid "You need to provide a company name."
@@ -3379,111 +3385,101 @@ msgid ""
"If you enter an invoice address, you also need to select an invoice " "If you enter an invoice address, you also need to select an invoice "
"transmission method." "transmission method."
msgstr "" msgstr ""
"Se introduces un enderezo de facturación, tamén debes seleccionar un método "
"de transmisión da factura."
#: pretix/base/forms/questions.py:1385 #: pretix/base/forms/questions.py:1385
#, fuzzy
msgid "" msgid ""
"The selected transmission type is not available in your country or for your " "The selected transmission type is not available in your country or for your "
"type of address." "type of address."
msgstr "El producto seleccionado no está activo o no tiene precio fijo." msgstr ""
"O tipo de transmisión seleccionado non está dispoñible no seu país nin para "
"o seu tipo de enderezo."
#: pretix/base/forms/questions.py:1394 #: pretix/base/forms/questions.py:1394
msgid "" msgid ""
"The selected type of invoice transmission requires a field that is currently " "The selected type of invoice transmission requires a field that is currently "
"not available, please reach out to the organizer." "not available, please reach out to the organizer."
msgstr "" msgstr ""
"O tipo de transmisión de factura seleccionado require un campo que non está "
"dispoñible actualmente. Ponte en contacto co organizador."
#: pretix/base/forms/questions.py:1398 #: pretix/base/forms/questions.py:1398
msgid "This field is required for the selected type of invoice transmission." msgid "This field is required for the selected type of invoice transmission."
msgstr "" msgstr ""
"Este campo é obrigatorio para o tipo de transmisión de factura seleccionado."
#: pretix/base/forms/user.py:54 pretix/control/forms/organizer.py:458 #: pretix/base/forms/user.py:54 pretix/control/forms/organizer.py:458
#: pretix/control/forms/users.py:58 #: pretix/control/forms/users.py:58
#, fuzzy
msgid "Default timezone" msgid "Default timezone"
msgstr "Zona horaria predefinida" msgstr "Fuso horario predeterminado"
#: pretix/base/forms/user.py:55 pretix/control/forms/users.py:59 #: pretix/base/forms/user.py:55 pretix/control/forms/users.py:59
#, fuzzy
msgid "" msgid ""
"Only used for views that are not bound to an event. For all event views, the " "Only used for views that are not bound to an event. For all event views, the "
"event timezone is used instead." "event timezone is used instead."
msgstr "" msgstr ""
"Sólo se utiliza para vistas que no están vinculadas a un evento. Para todas " "Só se usa para vistas que non están vinculadas a un evento. Para todas as "
"las vistas de eventos, se utiliza la zona horaria de eventos." "vistas de eventos, úsase o fuso horario do evento."
#: pretix/base/forms/user.py:77 #: pretix/base/forms/user.py:77
#, fuzzy
#| msgid "Attendee email address"
msgid "Change email address" msgid "Change email address"
msgstr "Correo electrónico do participante" msgstr "Cambiar enderezo de correo electrónico"
#: pretix/base/forms/user.py:83 #: pretix/base/forms/user.py:83
msgid "Device name" msgid "Device name"
msgstr "Nombre do dispositivo" msgstr "Nombre do dispositivo"
#: pretix/base/forms/user.py:84 #: pretix/base/forms/user.py:84
#, fuzzy
msgid "Device type" msgid "Device type"
msgstr "Tipo de dispositivo" msgstr "Tipo de dispositivo"
#: pretix/base/forms/user.py:85 #: pretix/base/forms/user.py:85
#, fuzzy
msgid "Smartphone with the Authenticator application" msgid "Smartphone with the Authenticator application"
msgstr "Celular con aplicación de autenticación" msgstr "Teléfono intelixente coa aplicación Authenticator"
#: pretix/base/forms/user.py:86 #: pretix/base/forms/user.py:86
#, fuzzy
msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" msgid "WebAuthn-compatible hardware token (e.g. Yubikey)"
msgstr "Hardware compatible con token WebAuthn (p. ej. Yubikey)" msgstr "Token de hardware compatible con WebAuthn (por exemplo, Yubikey)"
#: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:383 #: pretix/base/forms/user.py:92 pretix/presale/forms/customer.py:383
#: pretix/presale/forms/customer.py:456 #: pretix/presale/forms/customer.py:456
#, fuzzy
msgid "The current password you entered was not correct." msgid "The current password you entered was not correct."
msgstr "La contraseña actual que ingresó no es correcta." msgstr "O contrasinal actual que introduciches non era correcto."
#: pretix/base/forms/user.py:95 #: pretix/base/forms/user.py:95
msgid "Please choose a password different to your current one." msgid "Please choose a password different to your current one."
msgstr "" msgstr "Escolle un contrasinal diferente ao teu actual."
#: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:392 #: pretix/base/forms/user.py:105 pretix/presale/forms/customer.py:392
#: pretix/presale/forms/customer.py:461 #: pretix/presale/forms/customer.py:461
#, fuzzy
msgid "Your current password" msgid "Your current password"
msgstr "Su contraseña actual" msgstr "O teu contrasinal actual"
#: pretix/base/forms/user.py:111 pretix/control/forms/users.py:50 #: pretix/base/forms/user.py:111 pretix/control/forms/users.py:50
#: pretix/presale/forms/customer.py:397 #: pretix/presale/forms/customer.py:397
#, fuzzy
msgid "New password" msgid "New password"
msgstr "Nueva contraseña" msgstr "New password"
#: pretix/base/forms/user.py:117 pretix/control/forms/users.py:54 #: pretix/base/forms/user.py:117 pretix/control/forms/users.py:54
#, fuzzy
msgid "Repeat new password" msgid "Repeat new password"
msgstr "Repetir la nueva contraseña" msgstr "Repita o novo contrasinal"
#: pretix/base/forms/user.py:176 pretix/control/forms/users.py:43 #: pretix/base/forms/user.py:176 pretix/control/forms/users.py:43
#, fuzzy
msgid "" msgid ""
"There already is an account associated with this email address. Please " "There already is an account associated with this email address. Please "
"choose a different one." "choose a different one."
msgstr "" msgstr ""
"Ya existe una cuenta asociada a este correo electrónico. Por favor, escoja " "Xa existe unha conta asociada a este enderezo de correo electrónico. Escolle "
"otro." "unha diferente."
#: pretix/base/forms/user.py:179 #: pretix/base/forms/user.py:179
#, fuzzy
#| msgid "Email address"
msgid "Old email address" msgid "Old email address"
msgstr "Correo electrónico" msgstr "Enderezo de correo electrónico antigo"
#: pretix/base/forms/user.py:180 #: pretix/base/forms/user.py:180
#, fuzzy
#| msgid "Email address"
msgid "New email address" msgid "New email address"
msgstr "Correo electrónico" msgstr "Novo enderezo de correo electrónico"
#: pretix/base/forms/validators.py:51 #: pretix/base/forms/validators.py:51
msgid "" msgid ""
@@ -3492,29 +3488,32 @@ msgid ""
"up. Please note: to use literal \"{\" or \"}\", you need to double them as " "up. Please note: to use literal \"{\" or \"}\", you need to double them as "
"\"{{\" and \"}}\"." "\"{{\" and \"}}\"."
msgstr "" msgstr ""
"Hai un erro coa sintaxe dos marcadores de posición. Comproba que as "
"corchetes de apertura \"{\" e de peche \"}\" dos marcadores de posición "
"coincidan. Ten en conta que para usar \"{\" ou \"}\" literal, debes "
"duplicalos como \"{{\" e \"}}\"."
#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:870 #: pretix/base/forms/validators.py:72 pretix/control/views/event.py:870
#, fuzzy, python-format #, python-format
msgid "Invalid placeholder: {%(value)s}" msgid "Invalid placeholder: {%(value)s}"
msgstr "Persona(s) interesada(s) inválida(s): %(value)s" msgstr "Marcador de posición non válido: {%(value)s}"
#: pretix/base/forms/widgets.py:68 #: pretix/base/forms/widgets.py:68
#, fuzzy, python-format #, python-format
msgid "Sample: %s" msgid "Sample: %s"
msgstr "Ciudad de ejemplo" msgstr "Mostra: %s"
#: pretix/base/forms/widgets.py:71 #: pretix/base/forms/widgets.py:71
#, python-brace-format #, python-brace-format
msgid "Available placeholders: {list}" msgid "Available placeholders: {list}"
msgstr "" msgstr "Marcadores de posición dispoñibles: {list}"
#: pretix/base/forms/widgets.py:214 pretix/base/models/items.py:1655 #: pretix/base/forms/widgets.py:214 pretix/base/models/items.py:1655
#: pretix/plugins/checkinlists/exporters.py:757 #: pretix/plugins/checkinlists/exporters.py:757
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:40 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:40
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:54 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:54
#, fuzzy
msgid "Time" msgid "Time"
msgstr "Hora" msgstr "Tempo"
#: pretix/base/forms/widgets.py:234 pretix/base/forms/widgets.py:239 #: pretix/base/forms/widgets.py:234 pretix/base/forms/widgets.py:239
msgid "Business or institutional customer" msgid "Business or institutional customer"
@@ -3527,53 +3526,49 @@ msgstr "Cliente individual"
#: pretix/base/invoicing/email.py:50 #: pretix/base/invoicing/email.py:50
msgid "Email invoice directly to accounting department" msgid "Email invoice directly to accounting department"
msgstr "" msgstr ""
"Enviar factura por correo electrónico directamente ao departamento de "
"contabilidade"
#: pretix/base/invoicing/email.py:51 #: pretix/base/invoicing/email.py:51
#, fuzzy
#| msgid "Please enter the same email address twice."
msgid "" msgid ""
"If not selected, the invoice will be sent to you using the email address " "If not selected, the invoice will be sent to you using the email address "
"listed above." "listed above."
msgstr "Introduce o mesmo enderezo de correo electrónico dúas veces." msgstr ""
"Se non se selecciona, a factura enviaraseche usando o enderezo de correo "
"electrónico indicado anteriormente."
#: pretix/base/invoicing/email.py:55 #: pretix/base/invoicing/email.py:55
#, fuzzy
#| msgid "Email address verified"
msgid "Email address for invoice" msgid "Email address for invoice"
msgstr "Correo electrónico verificado" msgstr "Enderezo de correo electrónico para factura"
#: pretix/base/invoicing/email.py:91 #: pretix/base/invoicing/email.py:91
#, fuzzy
msgid "PDF via email" msgid "PDF via email"
msgstr "Vista previa del correo electrónico" msgstr "PDF por correo electrónico"
#: pretix/base/invoicing/national.py:37 #: pretix/base/invoicing/national.py:37
msgctxt "italian_invoice" msgctxt "italian_invoice"
msgid "Italian Exchange System (SdI)" msgid "Italian Exchange System (SdI)"
msgstr "" msgstr "Sistema de intercambio italiano (SdI)"
#: pretix/base/invoicing/national.py:38 #: pretix/base/invoicing/national.py:38
msgctxt "italian_invoice" msgctxt "italian_invoice"
msgid "Exchange System (SdI)" msgid "Exchange System (SdI)"
msgstr "" msgstr "Sistema de intercambio (SdI)"
#: pretix/base/invoicing/national.py:49 #: pretix/base/invoicing/national.py:49
#, fuzzy
#| msgid "Gift card code"
msgctxt "italian_invoice" msgctxt "italian_invoice"
msgid "Fiscal code" msgid "Fiscal code"
msgstr "Código da tarxeta de regalo" msgstr "Código fiscal"
#: pretix/base/invoicing/national.py:53 #: pretix/base/invoicing/national.py:53
msgctxt "italian_invoice" msgctxt "italian_invoice"
msgid "Address for certified electronic mail" msgid "Address for certified electronic mail"
msgstr "" msgstr "Enderezo para correo electrónico certificado"
#: pretix/base/invoicing/national.py:57 #: pretix/base/invoicing/national.py:57
#, fuzzy
msgctxt "italian_invoice" msgctxt "italian_invoice"
msgid "Recipient code" msgid "Recipient code"
msgstr "Destinatario" msgstr "Código do destinatario"
#: pretix/base/invoicing/national.py:81 #: pretix/base/invoicing/national.py:81
msgctxt "italian_invoice" msgctxt "italian_invoice"
@@ -3583,75 +3578,68 @@ msgid ""
"in accordance with the procedures and terms set forth in No. 89757/2018 of " "in accordance with the procedures and terms set forth in No. 89757/2018 of "
"April 30, 2018, issued by the Director of the Revenue Agency." "April 30, 2018, issued by the Director of the Revenue Agency."
msgstr "" msgstr ""
"Este documento PDF é unha copia visual da factura e non constitúe unha "
"factura para efectos do IVE. A factura emítese en formato XML, transmitida "
"de acordo cos procedementos e termos establecidos no Regulamento n.º 89757/"
"2018, do 30 de abril de 2018, emitido polo Director da Axencia Tributaria."
#: pretix/base/invoicing/pdf.py:143 #: pretix/base/invoicing/pdf.py:143
#, fuzzy, python-format #, python-format
msgctxt "invoice" msgctxt "invoice"
msgid "Page %d of %d" msgid "Page %d of %d"
msgstr "Página %d de %d" msgstr "Páxina %d de %d"
#: pretix/base/invoicing/pdf.py:384 #: pretix/base/invoicing/pdf.py:384
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Classic renderer (pretix 1.0)" msgid "Classic renderer (pretix 1.0)"
msgstr "Versión clásica (pretix 1.0)" msgstr "Renderizador clásico (pretix 1.0)"
#: pretix/base/invoicing/pdf.py:428 #: pretix/base/invoicing/pdf.py:428
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice from" msgid "Invoice from"
msgstr "Factura de" msgstr "Factura dende"
#: pretix/base/invoicing/pdf.py:434 #: pretix/base/invoicing/pdf.py:434
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice to" msgid "Invoice to"
msgstr "Factura para" msgstr "Factura ata"
#: pretix/base/invoicing/pdf.py:471 pretix/base/invoicing/pdf.py:1222 #: pretix/base/invoicing/pdf.py:471 pretix/base/invoicing/pdf.py:1222
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Order code" msgid "Order code"
msgstr "Código de la orden" msgstr "Código de pedido"
#: pretix/base/invoicing/pdf.py:480 pretix/base/invoicing/pdf.py:1235 #: pretix/base/invoicing/pdf.py:480 pretix/base/invoicing/pdf.py:1235
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Cancellation number" msgid "Cancellation number"
msgstr "Número de cancelación" msgstr "Número de cancelación"
#: pretix/base/invoicing/pdf.py:486 pretix/base/invoicing/pdf.py:1237 #: pretix/base/invoicing/pdf.py:486 pretix/base/invoicing/pdf.py:1237
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Original invoice" msgid "Original invoice"
msgstr "Factura original" msgstr "Factura orixinal"
#: pretix/base/invoicing/pdf.py:491 pretix/base/invoicing/pdf.py:1242 #: pretix/base/invoicing/pdf.py:491 pretix/base/invoicing/pdf.py:1242
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice number" msgid "Invoice number"
msgstr "Número de factura" msgstr "Número de factura"
#: pretix/base/invoicing/pdf.py:499 pretix/base/invoicing/pdf.py:1257 #: pretix/base/invoicing/pdf.py:499 pretix/base/invoicing/pdf.py:1257
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Cancellation date" msgid "Cancellation date"
msgstr "Fecha de cancelación" msgstr "Data de cancelación"
#: pretix/base/invoicing/pdf.py:505 #: pretix/base/invoicing/pdf.py:505
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Original invoice date" msgid "Original invoice date"
msgstr "Fecha original de la factura" msgstr "Data orixinal da factura"
#: pretix/base/invoicing/pdf.py:512 pretix/base/invoicing/pdf.py:1259 #: pretix/base/invoicing/pdf.py:512 pretix/base/invoicing/pdf.py:1259
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice date" msgid "Invoice date"
msgstr "Fecha de la factura" msgstr "Data da factura"
#: pretix/base/invoicing/pdf.py:528 #: pretix/base/invoicing/pdf.py:528
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Event" msgid "Event"
msgstr "Evento" msgstr "Evento"
@@ -3667,7 +3655,7 @@ msgstr ""
" ata {to_date}" " ata {to_date}"
#: pretix/base/invoicing/pdf.py:609 pretix/base/services/mail.py:512 #: pretix/base/invoicing/pdf.py:609 pretix/base/services/mail.py:512
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice {num}" msgid "Invoice {num}"
msgstr "Factura {num}" msgstr "Factura {num}"
@@ -3679,25 +3667,21 @@ msgid "Customer reference: {reference}"
msgstr "Referencia do cliente: {reference}" msgstr "Referencia do cliente: {reference}"
#: pretix/base/invoicing/pdf.py:669 #: pretix/base/invoicing/pdf.py:669
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Customer VAT ID" msgid "Customer VAT ID"
msgstr "Cliente VAT ID" msgstr "CIF do cliente"
#: pretix/base/invoicing/pdf.py:676 #: pretix/base/invoicing/pdf.py:676
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Beneficiary" msgid "Beneficiary"
msgstr "Beneficiario" msgstr "Beneficiario"
#: pretix/base/invoicing/pdf.py:709 #: pretix/base/invoicing/pdf.py:709
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Tax Invoice" msgid "Tax Invoice"
msgstr "Impuesto de la factura" msgstr "Factura fiscal"
#: pretix/base/invoicing/pdf.py:710 #: pretix/base/invoicing/pdf.py:710
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice" msgid "Invoice"
msgstr "Factura" msgstr "Factura"
@@ -3706,7 +3690,6 @@ msgstr "Factura"
#: pretix/control/templates/pretixcontrol/order/index.html:272 #: pretix/control/templates/pretixcontrol/order/index.html:272
#: pretix/control/templates/pretixcontrol/order/mail_history.html:70 #: pretix/control/templates/pretixcontrol/order/mail_history.html:70
#: pretix/presale/templates/pretixpresale/event/order.html:244 #: pretix/presale/templates/pretixpresale/event/order.html:244
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Cancellation" msgid "Cancellation"
msgstr "Cancelación" msgstr "Cancelación"
@@ -3724,145 +3707,133 @@ msgid "Qty"
msgstr "Cant." msgstr "Cant."
#: pretix/base/invoicing/pdf.py:735 pretix/base/invoicing/pdf.py:1039 #: pretix/base/invoicing/pdf.py:735 pretix/base/invoicing/pdf.py:1039
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Tax rate" msgid "Tax rate"
msgstr "Tasa de impuestos" msgstr "Tipo impositivo"
#: pretix/base/invoicing/pdf.py:736 #: pretix/base/invoicing/pdf.py:736
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Net" msgid "Net"
msgstr "Neto" msgstr "Neto"
#: pretix/base/invoicing/pdf.py:737 #: pretix/base/invoicing/pdf.py:737
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Gross" msgid "Gross"
msgstr "Bruto" msgstr "Bruto"
#: pretix/base/invoicing/pdf.py:743 #: pretix/base/invoicing/pdf.py:743
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Amount" msgid "Amount"
msgstr "Monto" msgstr "Cantidade"
#: pretix/base/invoicing/pdf.py:870 #: pretix/base/invoicing/pdf.py:870
#, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Single price: {net_price} net / {gross_price} gross" msgid "Single price: {net_price} net / {gross_price} gross"
msgstr "" msgstr "Prezo único: {net_price} neto / {gross_price} bruto"
#: pretix/base/invoicing/pdf.py:901 #: pretix/base/invoicing/pdf.py:901
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Single price: {price}" msgid "Single price: {price}"
msgstr "Precio original" msgstr "Prezo único: {price}"
#: pretix/base/invoicing/pdf.py:944 pretix/base/invoicing/pdf.py:949 #: pretix/base/invoicing/pdf.py:944 pretix/base/invoicing/pdf.py:949
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice total" msgid "Invoice total"
msgstr "Total de la factura" msgstr "Total da factura"
#: pretix/base/invoicing/pdf.py:958 #: pretix/base/invoicing/pdf.py:958
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Received payments" msgid "Received payments"
msgstr "Pagos recibidos" msgstr "Pagos recibidos"
#: pretix/base/invoicing/pdf.py:963 #: pretix/base/invoicing/pdf.py:963
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Outstanding payments" msgid "Outstanding payments"
msgstr "Pagos no válidos" msgstr "Pagos pendentes"
#: pretix/base/invoicing/pdf.py:980 #: pretix/base/invoicing/pdf.py:980
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Paid by gift card" msgid "Paid by gift card"
msgstr "Tarjeta de crédito" msgstr "Pago con tarxeta regalo"
#: pretix/base/invoicing/pdf.py:985 #: pretix/base/invoicing/pdf.py:985
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Remaining amount" msgid "Remaining amount"
msgstr "Monto pendiente" msgstr "Cantidade restante"
#: pretix/base/invoicing/pdf.py:1009 #: pretix/base/invoicing/pdf.py:1009
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice period: {daterange}" msgid "Invoice period: {daterange}"
msgstr "Rango de fechas de evento" msgstr "Período de facturación: {daterange}"
#: pretix/base/invoicing/pdf.py:1040 #: pretix/base/invoicing/pdf.py:1040
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Net value" msgid "Net value"
msgstr "Valor neto" msgstr "Valor neto"
#: pretix/base/invoicing/pdf.py:1041 #: pretix/base/invoicing/pdf.py:1041
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Gross value" msgid "Gross value"
msgstr "Valor bruto" msgstr "Valor bruto"
#: pretix/base/invoicing/pdf.py:1042 #: pretix/base/invoicing/pdf.py:1042
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Tax" msgid "Tax"
msgstr "Impuesto" msgstr "Imposto"
#: pretix/base/invoicing/pdf.py:1072 #: pretix/base/invoicing/pdf.py:1072
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "Included taxes" msgid "Included taxes"
msgstr "Impuestos incluidos" msgstr "Impostos incluídos"
#: pretix/base/invoicing/pdf.py:1100 #: pretix/base/invoicing/pdf.py:1100
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "" msgid ""
"Using the conversion rate of 1:{rate} as published by the {authority} on " "Using the conversion rate of 1:{rate} as published by the {authority} on "
"{date}, this corresponds to:" "{date}, this corresponds to:"
msgstr "" msgstr ""
"Utilizando el tipo de conversión de 1:{rate} publicado por el Banco Central " "Usando a taxa de conversión de 1:{rate} tal e como a publicou {authority} o "
"Europeo el {date}, esto corresponde a:" "{date}, isto corresponde a:"
#: pretix/base/invoicing/pdf.py:1115 #: pretix/base/invoicing/pdf.py:1115
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "" msgid ""
"Using the conversion rate of 1:{rate} as published by the {authority} on " "Using the conversion rate of 1:{rate} as published by the {authority} on "
"{date}, the invoice total corresponds to {total}." "{date}, the invoice total corresponds to {total}."
msgstr "" msgstr ""
"Utilizando el tipo de conversión de 1:{rate} publicado por el Banco Central " "Usando a taxa de conversión de 1:{rate} publicada pola {authority} o {date}, "
"Europeo el {date}, el total de la factura corresponde a {total}." "o total da factura corresponde a {total}."
#: pretix/base/invoicing/pdf.py:1129 #: pretix/base/invoicing/pdf.py:1129
msgid "Default invoice renderer (European-style letter)" msgid "Default invoice renderer (European-style letter)"
msgstr "" msgstr "Renderizador de facturas predeterminado (carta de estilo europeo)"
#: pretix/base/invoicing/pdf.py:1218 #: pretix/base/invoicing/pdf.py:1218
#, fuzzy
msgctxt "invoice" msgctxt "invoice"
msgid "(Please quote at all times.)" msgid "(Please quote at all times.)"
msgstr "Por favor, seleccione una cuota." msgstr "(Por favor, cite en todo momento.)"
#: pretix/base/invoicing/pdf.py:1265 #: pretix/base/invoicing/pdf.py:1265
msgid "Simplified invoice renderer" msgid "Simplified invoice renderer"
msgstr "" msgstr "Renderizador de facturas simplificado"
#: pretix/base/invoicing/pdf.py:1284 #: pretix/base/invoicing/pdf.py:1284
#, fuzzy, python-brace-format #, python-brace-format
msgctxt "invoice" msgctxt "invoice"
msgid "Event date: {date_range}" msgid "Event date: {date_range}"
msgstr "Rango de fechas de evento" msgstr "Data do evento: {date_range}"
#: pretix/base/invoicing/peppol.py:128 #: pretix/base/invoicing/peppol.py:128
msgid "" msgid ""
"A Peppol participant ID always starts with a prefix, followed by a colon (:)." "A Peppol participant ID always starts with a prefix, followed by a colon (:)."
msgstr "" msgstr ""
"Un ID de participante de Peppol sempre comeza cun prefixo, seguido de dous "
"puntos (:)."
#: pretix/base/invoicing/peppol.py:132 #: pretix/base/invoicing/peppol.py:132
#, python-format #, python-format
@@ -3870,6 +3841,8 @@ msgid ""
"The Peppol participant ID prefix %(number)s is not known to our system. " "The Peppol participant ID prefix %(number)s is not known to our system. "
"Please reach out to us if you are sure this ID is correct." "Please reach out to us if you are sure this ID is correct."
msgstr "" msgstr ""
"O noso sistema descoñece o prefixo do ID de participante de Peppol %(number)"
"s. Ponte en contacto connosco se estás seguro de que este ID é correcto."
#: pretix/base/invoicing/peppol.py:136 #: pretix/base/invoicing/peppol.py:136
#, python-format #, python-format
@@ -3877,17 +3850,18 @@ msgid ""
"The Peppol participant ID does not match the validation rules for the prefix " "The Peppol participant ID does not match the validation rules for the prefix "
"%(number)s. Please reach out to us if you are sure this ID is correct." "%(number)s. Please reach out to us if you are sure this ID is correct."
msgstr "" msgstr ""
"O ID de participante de Peppol non coincide coas regras de validación para o "
"prefixo %(number)s. Ponte en contacto connosco se estás seguro de que este "
"ID é correcto."
#: pretix/base/invoicing/peppol.py:156 #: pretix/base/invoicing/peppol.py:156
msgid "Peppol participant ID" msgid "Peppol participant ID"
msgstr "" msgstr "Identificación de participante de Peppol"
#: pretix/base/invoicing/peppol.py:170 #: pretix/base/invoicing/peppol.py:170
#, fuzzy
#| msgid "Gift card code"
msgctxt "peppol_invoice" msgctxt "peppol_invoice"
msgid "Visual copy" msgid "Visual copy"
msgstr "Código da tarxeta de regalo" msgstr "Copia visual"
#: pretix/base/invoicing/peppol.py:175 #: pretix/base/invoicing/peppol.py:175
msgctxt "peppol_invoice" msgctxt "peppol_invoice"
@@ -3896,27 +3870,30 @@ msgid ""
"invoice for VAT purposes. The original invoice is issued in XML format and " "invoice for VAT purposes. The original invoice is issued in XML format and "
"transmitted through the Peppol network." "transmitted through the Peppol network."
msgstr "" msgstr ""
"Este documento PDF é unha copia visual da factura e non constitúe unha "
"factura para efectos do IVE. A factura orixinal emítese en formato XML e "
"transmítese a través da rede Peppol."
#: pretix/base/logentrytype_registry.py:43 #: pretix/base/logentrytype_registry.py:43
msgid "" msgid ""
"The relevant plugin is currently not active. To activate it, click here to " "The relevant plugin is currently not active. To activate it, click here to "
"go to the plugin settings." "go to the plugin settings."
msgstr "" msgstr ""
"O plugin relevante non está activo actualmente. Para activalo, fai clic aquí "
"para ir á configuración do plugin."
#: pretix/base/logentrytype_registry.py:53 #: pretix/base/logentrytype_registry.py:53
#, fuzzy
msgid "The relevant plugin is currently not active." msgid "The relevant plugin is currently not active."
msgstr "La taquilla seleccionada no está disponible en este momento." msgstr "O plugin relevante non está activo actualmente."
#: pretix/base/logentrytypes.py:49 #: pretix/base/logentrytypes.py:49
#, fuzzy
msgid "(deleted)" msgid "(deleted)"
msgstr "Eliminar" msgstr "(eliminado)"
#: pretix/base/logentrytypes.py:78 #: pretix/base/logentrytypes.py:78
#, fuzzy, python-brace-format #, python-brace-format
msgid "Order {val}" msgid "Order {val}"
msgstr "Orden {val}" msgstr "Orde {val}"
#: pretix/base/logentrytypes.py:90 #: pretix/base/logentrytypes.py:90
#, fuzzy, python-brace-format #, fuzzy, python-brace-format

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-27 13:57+0000\n" "POT-Creation-Date: 2025-11-27 13:57+0000\n"
"PO-Revision-Date: 2025-09-10 05:00+0000\n" "PO-Revision-Date: 2025-12-04 18:00+0000\n"
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n" "Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/" "Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n" "pretix/pretix/pt_BR/>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.13.2\n" "X-Generator: Weblate 5.14.3\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -3286,10 +3286,8 @@ msgid "Repeat password"
msgstr "Repita a senha" msgstr "Repita a senha"
#: pretix/base/forms/auth.py:220 pretix/base/forms/user.py:99 #: pretix/base/forms/auth.py:220 pretix/base/forms/user.py:99
#, fuzzy
#| msgid "Email address"
msgid "Your email address" msgid "Your email address"
msgstr "Endereço de email" msgstr "Seu endereço de e-mail"
#: pretix/base/forms/auth.py:327 pretix/control/forms/orders.py:1041 #: pretix/base/forms/auth.py:327 pretix/control/forms/orders.py:1041
#: pretix/control/templates/pretixcontrol/shredder/download.html:53 #: pretix/control/templates/pretixcontrol/shredder/download.html:53
@@ -3433,10 +3431,8 @@ msgstr ""
"as exibições de eventos, o fuso horário do evento é usado." "as exibições de eventos, o fuso horário do evento é usado."
#: pretix/base/forms/user.py:77 #: pretix/base/forms/user.py:77
#, fuzzy
#| msgid "Attendee email address"
msgid "Change email address" msgid "Change email address"
msgstr "Email do participante" msgstr "Alterar endereço de e-mail"
#: pretix/base/forms/user.py:83 #: pretix/base/forms/user.py:83
msgid "Device name" msgid "Device name"
@@ -3486,16 +3482,12 @@ msgstr ""
"um diferente." "um diferente."
#: pretix/base/forms/user.py:179 #: pretix/base/forms/user.py:179
#, fuzzy
#| msgid "Email address"
msgid "Old email address" msgid "Old email address"
msgstr "Endereço de email" msgstr "Endereço de e-mail antigo"
#: pretix/base/forms/user.py:180 #: pretix/base/forms/user.py:180
#, fuzzy
#| msgid "Email address"
msgid "New email address" msgid "New email address"
msgstr "Endereço de email" msgstr "Endereço de e-mail novo"
#: pretix/base/forms/validators.py:51 #: pretix/base/forms/validators.py:51
msgid "" msgid ""
@@ -3540,22 +3532,17 @@ msgid "Individual customer"
msgstr "Cliente pessoa física" msgstr "Cliente pessoa física"
#: pretix/base/invoicing/email.py:50 #: pretix/base/invoicing/email.py:50
#, fuzzy
#| msgid ""
#| "To send the invoice directly to your accounting department, please enter "
#| "their email address:"
msgid "Email invoice directly to accounting department" msgid "Email invoice directly to accounting department"
msgstr "" msgstr ""
"Para enviar a fatura diretamente ao seu departamento de contabilidade, " "Enviar e-mail com a fatura diretamente para departamento de contabilidade"
"insira o endereço de e-mail:"
#: pretix/base/invoicing/email.py:51 #: pretix/base/invoicing/email.py:51
#, fuzzy
#| msgid "The invoice was sent to the designated email address."
msgid "" msgid ""
"If not selected, the invoice will be sent to you using the email address " "If not selected, the invoice will be sent to you using the email address "
"listed above." "listed above."
msgstr "A fatura foi enviada para o endereço de e-mail designado." msgstr ""
"Se não selecionado, a fatura será enviada para o endereço de e-mail listado "
"a seguir."
#: pretix/base/invoicing/email.py:55 #: pretix/base/invoicing/email.py:55
msgid "Email address for invoice" msgid "Email address for invoice"
@@ -3778,12 +3765,10 @@ msgid "Remaining amount"
msgstr "Valor restante" msgstr "Valor restante"
#: pretix/base/invoicing/pdf.py:1009 #: pretix/base/invoicing/pdf.py:1009
#, fuzzy, python-brace-format #, python-brace-format
#| msgctxt "invoice"
#| msgid "Event date: {date_range}"
msgctxt "invoice" msgctxt "invoice"
msgid "Invoice period: {daterange}" msgid "Invoice period: {daterange}"
msgstr "Data do evento: {date_range}" msgstr "Período da fatura: {daterange}"
#: pretix/base/invoicing/pdf.py:1040 #: pretix/base/invoicing/pdf.py:1040
msgctxt "invoice" msgctxt "invoice"
@@ -3868,12 +3853,9 @@ msgid "Peppol participant ID"
msgstr "" msgstr ""
#: pretix/base/invoicing/peppol.py:170 #: pretix/base/invoicing/peppol.py:170
#, fuzzy
#| msgctxt "italian_invoice"
#| msgid "Fiscal code"
msgctxt "peppol_invoice" msgctxt "peppol_invoice"
msgid "Visual copy" msgid "Visual copy"
msgstr "Código fiscal" msgstr "Cópia visual"
#: pretix/base/invoicing/peppol.py:175 #: pretix/base/invoicing/peppol.py:175
msgctxt "peppol_invoice" msgctxt "peppol_invoice"
@@ -4357,10 +4339,8 @@ msgid ""
msgstr "" msgstr ""
#: pretix/base/models/auth.py:392 #: pretix/base/models/auth.py:392
#, fuzzy
#| msgid "Confirmation code"
msgid "pretix confirmation code" msgid "pretix confirmation code"
msgstr "Código de confirmação" msgstr "código de confirmação do pretix"
#: pretix/base/models/auth.py:435 #: pretix/base/models/auth.py:435
#: pretix/control/templates/pretixcontrol/auth/forgot.html:7 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7
@@ -6298,9 +6278,6 @@ msgstr ""
"insira um valor possível por linha." "insira um valor possível por linha."
#: pretix/base/models/items.py:2310 #: pretix/base/models/items.py:2310
#, fuzzy
#| msgctxt "timeframe"
#| msgid "Start"
msgid "Start" msgid "Start"
msgstr "Início" msgstr "Início"
@@ -7912,10 +7889,8 @@ msgid "123.45 EUR"
msgstr "123.45 BRL" msgstr "123.45 BRL"
#: pretix/base/pdf.py:166 #: pretix/base/pdf.py:166
#, fuzzy
#| msgid "Price including add-ons"
msgid "Price including bundled products" msgid "Price including bundled products"
msgstr "Preço incluindo complementos" msgstr "Preços incluindo produtos empacotados"
#: pretix/base/pdf.py:175 #: pretix/base/pdf.py:175
#, fuzzy #, fuzzy
@@ -9878,10 +9853,8 @@ msgid "Require a phone number per order"
msgstr "Exigir um número de telefone por pedido" msgstr "Exigir um número de telefone por pedido"
#: pretix/base/settings.py:482 #: pretix/base/settings.py:482
#, fuzzy
#| msgid "including all taxes"
msgid "Rounding of taxes" msgid "Rounding of taxes"
msgstr "incluindo todos os impostos" msgstr "Arredondamento dos impostos"
#: pretix/base/settings.py:486 #: pretix/base/settings.py:486
msgid "" msgid ""
@@ -10424,18 +10397,12 @@ msgid "Automatic, but prefer invoice date over event date"
msgstr "" msgstr ""
#: pretix/base/settings.py:1142 pretix/base/settings.py:1153 #: pretix/base/settings.py:1142 pretix/base/settings.py:1153
#, fuzzy
#| msgctxt "invoice"
#| msgid "Invoice date"
msgid "Invoice date" msgid "Invoice date"
msgstr "Data da fatura" msgstr "Data da fatura"
#: pretix/base/settings.py:1146 #: pretix/base/settings.py:1146
#, fuzzy
#| msgctxt "subevent"
#| msgid "Date ordering"
msgid "Date of service" msgid "Date of service"
msgstr "Ordenação de datas" msgstr "Data do serviço"
#: pretix/base/settings.py:1155 #: pretix/base/settings.py:1155
msgid "" msgid ""
@@ -12166,17 +12133,7 @@ msgid "Invoice {invoice_number}"
msgstr "Fatura {invoice_number}" msgstr "Fatura {invoice_number}"
#: pretix/base/settings.py:2789 #: pretix/base/settings.py:2789
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "Hello,\n"
#| "\n"
#| "somebody requested a list of your orders for {event}.\n"
#| "The list is as follows:\n"
#| "\n"
#| "{orders}\n"
#| "\n"
#| "Best regards, \n"
#| "Your {event} team"
msgid "" msgid ""
"Hello,\n" "Hello,\n"
"\n" "\n"
@@ -12189,12 +12146,12 @@ msgid ""
msgstr "" msgstr ""
"Olá,\n" "Olá,\n"
"\n" "\n"
"Segue anexo uma nova fatura para o pedido {code} para {evento} . Este pedido " "Em anexo você encontrará uma nova fatura para o pedido {code} para {event}. "
"foi feito por {order_email}.\n" "Este pedido foi feito por {order_email}.\n"
"\n" "\n"
"Atenciosamente, \n" "Atenciosamente, \n"
"\n" "\n"
"Equipe organizadora de {event}" "Organização {event}"
#: pretix/base/settings.py:2807 pretix/base/settings.py:2823 #: pretix/base/settings.py:2807 pretix/base/settings.py:2823
#, python-brace-format #, python-brace-format
@@ -14023,21 +13980,16 @@ msgstr ""
"que o cartão-presente é emitido." "que o cartão-presente é emitido."
#: pretix/control/forms/event.py:813 #: pretix/control/forms/event.py:813
#, fuzzy
#| msgid "including all taxes"
msgid "Prices including tax" msgid "Prices including tax"
msgstr "incluindo todos os impostos" msgstr "Preços incluindo impostos"
#: pretix/control/forms/event.py:814 #: pretix/control/forms/event.py:814
msgid "Recommended if you sell tickets at least partly to consumers." msgid "Recommended if you sell tickets at least partly to consumers."
msgstr "" msgstr ""
#: pretix/control/forms/event.py:818 #: pretix/control/forms/event.py:818
#, fuzzy
#| msgctxt "reporting_timeframe"
#| msgid "All future (excluding today)"
msgid "Prices excluding tax" msgid "Prices excluding tax"
msgstr "Todos os futuros (excluindo hoje)" msgstr "Preços excluindo impostos"
#: pretix/control/forms/event.py:819 #: pretix/control/forms/event.py:819
msgid "Recommended only if you sell tickets primarily to business customers." msgid "Recommended only if you sell tickets primarily to business customers."
@@ -17410,10 +17362,9 @@ msgstr ""
"O endereço de e-mail foi alterado de \"{old_email}\" para \"{new_email}\"." "O endereço de e-mail foi alterado de \"{old_email}\" para \"{new_email}\"."
#: pretix/control/logdisplay.py:673 #: pretix/control/logdisplay.py:673
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Your email address has been updated."
msgid "Your email address {email} has been confirmed." msgid "Your email address {email} has been confirmed."
msgstr "Seu endereço de email foi atualizado." msgstr "Seu endereço de e-mail {email} foi confirmado."
#: pretix/control/logdisplay.py:685 #: pretix/control/logdisplay.py:685
#, python-brace-format #, python-brace-format
@@ -19690,6 +19641,20 @@ msgid ""
"Best regards,\n" "Best regards,\n"
"Your pretix team\n" "Your pretix team\n"
msgstr "" msgstr ""
"Olá,\n"
"\n"
"%(reason)s\n"
"\n"
" %(code)s\n"
"\n"
"Por favor, nunca forneça este código para outra pessoa. Nosso time de "
"suporte nunca irá solicitar este código.\n"
"\n"
"Se você não solicitou este código, por favor entre em contato conosco "
"imediatamente.\n"
"\n"
"Atenciosamente,\n"
"Time pretix\n"
#: pretix/control/templates/pretixcontrol/email/email_setup.txt:1 #: pretix/control/templates/pretixcontrol/email/email_setup.txt:1
#, python-format #, python-format
@@ -21314,10 +21279,8 @@ msgid "with custom rules"
msgstr "Regras personalizadas" msgstr "Regras personalizadas"
#: pretix/control/templates/pretixcontrol/event/tax.html:110 #: pretix/control/templates/pretixcontrol/event/tax.html:110
#, fuzzy
#| msgid "Base settings"
msgid "Tax settings" msgid "Tax settings"
msgstr "Configurações base" msgstr "Configurações de impostos"
#: pretix/control/templates/pretixcontrol/event/tax_delete.html:4 #: pretix/control/templates/pretixcontrol/event/tax_delete.html:4
#: pretix/control/templates/pretixcontrol/event/tax_delete.html:6 #: pretix/control/templates/pretixcontrol/event/tax_delete.html:6
@@ -26144,7 +26107,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/shredder/download.html:29 #: pretix/control/templates/pretixcontrol/shredder/download.html:29
msgid "Download data" msgid "Download data"
msgstr "" msgstr "Baixar dados"
#: pretix/control/templates/pretixcontrol/shredder/download.html:34 #: pretix/control/templates/pretixcontrol/shredder/download.html:34
msgid "Step 2: Confirm deletion" msgid "Step 2: Confirm deletion"
@@ -26475,7 +26438,7 @@ msgstr "Adicionar um dispositivo de autenticação de dois fatores"
#: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8 #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:8
msgid "To set up this device, please follow the following steps:" msgid "To set up this device, please follow the following steps:"
msgstr "" msgstr "Para configurar este dispositivo, por favor siga os passos a seguir:"
#: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:12 #: pretix/control/templates/pretixcontrol/user/2fa_confirm_totp.html:12
msgid "Download the Google Authenticator application to your phone:" msgid "Download the Google Authenticator application to your phone:"
@@ -26901,11 +26864,11 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:6 #: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:6
msgid "Session notes" msgid "Session notes"
msgstr "" msgstr "Notas de sessão"
#: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:17 #: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:17
msgid "Audit log" msgid "Audit log"
msgstr "" msgstr "Log de auditoria"
#: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:30 #: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:30
msgid "Method" msgid "Method"
@@ -27949,7 +27912,7 @@ msgstr ""
#: pretix/control/views/item.py:237 #: pretix/control/views/item.py:237
msgid "The selected category has been deleted." msgid "The selected category has been deleted."
msgstr "" msgstr "A categoria selecionada foi excluída"
#: pretix/control/views/item.py:322 #: pretix/control/views/item.py:322
msgid "The new category has been created." msgid "The new category has been created."
@@ -29874,7 +29837,7 @@ msgstr ""
#: pretix/plugins/banktransfer/payment.py:239 #: pretix/plugins/banktransfer/payment.py:239
msgid "Please fill out your bank account details." msgid "Please fill out your bank account details."
msgstr "" msgstr "Por favor, preencha os detalhes da sua conta bancária."
#: pretix/plugins/banktransfer/payment.py:243 #: pretix/plugins/banktransfer/payment.py:243
msgid "Please enter your bank account details." msgid "Please enter your bank account details."
@@ -30175,7 +30138,7 @@ msgstr ""
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:122 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:122
msgid "Scan the QR code with your banking app" msgid "Scan the QR code with your banking app"
msgstr "" msgstr "Escanear o QR Code com o seu aplicativo bancário"
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:5 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:5
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:7 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:7
@@ -30746,6 +30709,8 @@ msgid ""
"We're waiting for an answer from PayPal regarding your payment. Please " "We're waiting for an answer from PayPal regarding your payment. Please "
"contact us, if this takes more than a few hours." "contact us, if this takes more than a few hours."
msgstr "" msgstr ""
"Estamos aguardando por informações do PayPal referentes ao seu pagamento. "
"Por favor, entre em contato conosco se isso demorar mais que algumas horas."
#: pretix/plugins/paypal/templates/pretixplugins/paypal/redirect.html:17 #: pretix/plugins/paypal/templates/pretixplugins/paypal/redirect.html:17
#: pretix/plugins/paypal2/templates/pretixplugins/paypal2/redirect.html:17 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/redirect.html:17
@@ -33370,19 +33335,17 @@ msgstr "Organizador: {organizer}"
#: pretix/presale/ical.py:139 #: pretix/presale/ical.py:139
#, python-brace-format #, python-brace-format
msgid "{event} - {item}" msgid "{event} - {item}"
msgstr "" msgstr "{event} - {item}"
#: pretix/presale/ical.py:147 #: pretix/presale/ical.py:147
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Start date"
msgid "Start: {datetime}" msgid "Start: {datetime}"
msgstr "Data inicial" msgstr "Início: {datetime}"
#: pretix/presale/ical.py:150 #: pretix/presale/ical.py:150
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Admission: {datetime}"
msgid "End: {datetime}" msgid "End: {datetime}"
msgstr "Admissão: {datetime}" msgstr "Término: {datetime}"
#: pretix/presale/templates/pretixpresale/base.html:44 #: pretix/presale/templates/pretixpresale/base.html:44
#, fuzzy #, fuzzy
@@ -35632,10 +35595,8 @@ msgid "The following gift cards are available in your customer account:"
msgstr "" msgstr ""
#: pretix/presale/templates/pretixpresale/giftcard/checkout.html:24 #: pretix/presale/templates/pretixpresale/giftcard/checkout.html:24
#, fuzzy
#| msgid "Issued gift cards"
msgid "Use gift card" msgid "Use gift card"
msgstr "Cartões-presente emitidos" msgstr "Usar cartão-presente"
#: pretix/presale/templates/pretixpresale/giftcard/checkout_confirm.html:4 #: pretix/presale/templates/pretixpresale/giftcard/checkout_confirm.html:4
#, python-format #, python-format
@@ -35754,10 +35715,9 @@ msgid "Expired since %(date)s"
msgstr "Expirado desde" msgstr "Expirado desde"
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:46 #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:46
#, fuzzy, python-format #, python-format
#| msgid "Valid until %(datetime)s"
msgid "Valid until %(date)s" msgid "Valid until %(date)s"
msgstr "Válido até %(datetime)s" msgstr "Válido até %(date)s"
#: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:66 #: pretix/presale/templates/pretixpresale/organizers/customer_giftcards.html:66
#, fuzzy #, fuzzy
@@ -36287,10 +36247,8 @@ msgid "The selected date does not exist in this event series."
msgstr "A data selecionada não existe nesta série de eventos." msgstr "A data selecionada não existe nesta série de eventos."
#: pretix/presale/views/widget.py:412 #: pretix/presale/views/widget.py:412
#, fuzzy
#| msgid "The selected seat \"{seat}\" is not available."
msgid "The selected date is not available." msgid "The selected date is not available."
msgstr "O assento selecionado \"{seat}\" não está disponível." msgstr "A data selecionada não está disponível."
#: pretix/presale/views/widget.py:476 #: pretix/presale/views/widget.py:476
#, python-format #, python-format

View File

@@ -41,15 +41,20 @@ for app in apps.get_app_configs():
if hasattr(app, 'PretixPluginMeta'): if hasattr(app, 'PretixPluginMeta'):
if importlib.util.find_spec(app.name + '.urls'): if importlib.util.find_spec(app.name + '.urls'):
urlmod = importlib.import_module(app.name + '.urls') urlmod = importlib.import_module(app.name + '.urls')
single_plugin_patterns = []
if hasattr(urlmod, 'event_patterns'): if hasattr(urlmod, 'event_patterns'):
patterns = plugin_event_urls(urlmod.event_patterns, plugin=app.name) patterns = plugin_event_urls(urlmod.event_patterns, plugin=app.name)
raw_plugin_patterns.append( single_plugin_patterns.append(
re_path(r'^(?P<event>[^/]+)/', include((patterns, app.label))) re_path(r'^(?P<event>[^/]+)/', include(patterns))
) )
if hasattr(urlmod, 'organizer_patterns'): if hasattr(urlmod, 'organizer_patterns'):
patterns = plugin_event_urls(urlmod.organizer_patterns, plugin=app.name) single_plugin_patterns += plugin_event_urls(urlmod.organizer_patterns, plugin=app.name)
if single_plugin_patterns:
raw_plugin_patterns.append( raw_plugin_patterns.append(
re_path(r'', include((patterns, app.label))) re_path(r'', include((single_plugin_patterns, app.label)))
) )
plugin_patterns = [ plugin_patterns = [

View File

@@ -42,15 +42,20 @@ for app in apps.get_app_configs():
if hasattr(app, 'PretixPluginMeta'): if hasattr(app, 'PretixPluginMeta'):
if importlib.util.find_spec(app.name + '.urls'): if importlib.util.find_spec(app.name + '.urls'):
urlmod = importlib.import_module(app.name + '.urls') urlmod = importlib.import_module(app.name + '.urls')
if hasattr(urlmod, 'event_patterns'): single_plugin_patterns = []
patterns = plugin_event_urls(urlmod.event_patterns, plugin=app.name)
raw_plugin_patterns.append(
re_path(r'^(?P<event>[^/]+)/', include((patterns, app.label)))
)
if hasattr(urlmod, 'organizer_patterns'): if hasattr(urlmod, 'organizer_patterns'):
patterns = plugin_event_urls(urlmod.organizer_patterns, plugin=app.name) single_plugin_patterns += plugin_event_urls(urlmod.organizer_patterns, plugin=app.name)
if hasattr(urlmod, 'event_patterns'):
plugin_event_patterns = plugin_event_urls(urlmod.event_patterns, plugin=app.name)
single_plugin_patterns.append(
re_path(r'^(?P<event>[^/]+)/', include(plugin_event_patterns))
)
if single_plugin_patterns:
raw_plugin_patterns.append( raw_plugin_patterns.append(
re_path(r'', include((patterns, app.label))) re_path(r'', include((single_plugin_patterns, app.label)))
) )
plugin_patterns = [ plugin_patterns = [

View File

@@ -34,8 +34,10 @@
import json import json
import logging import logging
import operator
import re import re
from decimal import Decimal from decimal import Decimal
from functools import reduce
import dateutil.parser import dateutil.parser
from celery.exceptions import MaxRetriesExceededError from celery.exceptions import MaxRetriesExceededError
@@ -117,20 +119,26 @@ def _find_order_for_code(base_qs, code):
pass pass
def _find_order_for_invoice_id(base_qs, prefix, number): def _find_order_for_invoice_id(base_qs, prefixes, number):
try: try:
# Working with __iregex here is an experiment, if this turns out to be too slow in production # Working with __iregex here is an experiment, if this turns out to be too slow in production
# we might need to switch to a different approach. # we might need to switch to a different approach.
r = [
Q(
prefix__istartswith=prefix, # redundant, but hopefully makes it a little faster
full_invoice_no__iregex=prefix + r'[\- ]*0*' + number
)
for prefix in set(prefixes)
]
return base_qs.select_related('order').get( return base_qs.select_related('order').get(
prefix__istartswith=prefix, # redundant, but hopefully makes it a little faster reduce(operator.or_, r)
full_invoice_no__iregex=prefix + r'[\- ]*0*' + number
).order ).order
except (Invoice.DoesNotExist, Invoice.MultipleObjectsReturned): except (Invoice.DoesNotExist, Invoice.MultipleObjectsReturned):
pass pass
@transaction.atomic @transaction.atomic
def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = None, organizer: Organizer = None): def _handle_transaction(trans: BankTransaction, matches: tuple, regex_match_to_slug, event: Event = None, organizer: Organizer = None):
orders = [] orders = []
if event: if event:
for slug, code in matches: for slug, code in matches:
@@ -139,18 +147,19 @@ def _handle_transaction(trans: BankTransaction, matches: tuple, event: Event = N
if order.code not in {o.code for o in orders}: if order.code not in {o.code for o in orders}:
orders.append(order) orders.append(order)
else: else:
order = _find_order_for_invoice_id(Invoice.objects.filter(event=event), slug, code) order = _find_order_for_invoice_id(Invoice.objects.filter(event=event), (slug, regex_match_to_slug.get(slug, slug)), code)
if order and order.code not in {o.code for o in orders}: if order and order.code not in {o.code for o in orders}:
orders.append(order) orders.append(order)
else: else:
qs = Order.objects.filter(event__organizer=organizer) qs = Order.objects.filter(event__organizer=organizer)
for slug, code in matches: for slug, code in matches:
order = _find_order_for_code(qs.filter(event__slug__iexact=slug), code) original_slug = regex_match_to_slug.get(slug, slug)
order = _find_order_for_code(qs.filter(Q(event__slug__iexact=slug) | Q(event__slug__iexact=original_slug)), code)
if order: if order:
if order.code not in {o.code for o in orders}: if order.code not in {o.code for o in orders}:
orders.append(order) orders.append(order)
else: else:
order = _find_order_for_invoice_id(Invoice.objects.filter(event__organizer=organizer), slug, code) order = _find_order_for_invoice_id(Invoice.objects.filter(event__organizer=organizer), (slug, original_slug), code)
if order and order.code not in {o.code for o in orders}: if order and order.code not in {o.code for o in orders}:
orders.append(order) orders.append(order)
@@ -366,22 +375,37 @@ def process_banktransfers(self, job: int, data: list) -> None:
transactions = _get_unknown_transactions(job, data, **job.owner_kwargs) transactions = _get_unknown_transactions(job, data, **job.owner_kwargs)
# Match order codes # Match order codes
regex_match_to_slug = {}
code_len_agg = Order.objects.filter(event__organizer=job.organizer).annotate( code_len_agg = Order.objects.filter(event__organizer=job.organizer).annotate(
clen=Length('code') clen=Length('code')
).aggregate(min=Min('clen'), max=Max('clen')) ).aggregate(min=Min('clen'), max=Max('clen'))
if job.event: if job.event:
prefixes = {job.event.slug.upper()} prefixes = {job.event.slug.upper(), job.event.slug.upper().replace("-", "")}
if "-" in job.event.slug:
regex_match_to_slug[job.event.slug.upper().replace("-", "")] = job.event.slug
else: else:
prefixes = {e.slug.upper() for e in job.organizer.events.all()} prefixes = set()
for e in job.organizer.events.all():
prefixes.add(e.slug.upper())
if "-" in e.slug:
prefixes.add(e.slug.upper().replace("-", ""))
regex_match_to_slug[e.slug.upper().replace("-", "")] = e.slug
# Match invoice numbers # Match invoice numbers
inr_len_agg = Invoice.objects.filter(event__organizer=job.organizer).annotate( inr_len_agg = Invoice.objects.filter(event__organizer=job.organizer).annotate(
clen=Length('invoice_no') clen=Length('invoice_no')
).aggregate(min=Min('clen'), max=Max('clen')) ).aggregate(min=Min('clen'), max=Max('clen'))
if job.event: if job.event:
prefixes |= {p.rstrip(' -') for p in Invoice.objects.filter(event=job.event).distinct().values_list('prefix', flat=True)} invoice_prefixes = Invoice.objects.filter(event=job.event)
else: else:
prefixes |= {p.rstrip(' -') for p in Invoice.objects.filter(event__organizer=job.organizer).distinct().values_list('prefix', flat=True)} invoice_prefixes = Invoice.objects.filter(event__organizer=job.organizer)
for p in invoice_prefixes.order_by().distinct().values_list('prefix', flat=True):
prefix = p.rstrip(" -")
prefixes.add(prefix)
if "-" in prefix:
prefix_nodash = prefix.replace("-", "")
prefixes.add(prefix_nodash)
regex_match_to_slug[prefix_nodash] = prefix
pattern = re.compile( pattern = re.compile(
"(%s)[ \\-_]*([A-Z0-9]{%s,%s})" % ( "(%s)[ \\-_]*([A-Z0-9]{%s,%s})" % (
@@ -409,9 +433,9 @@ def process_banktransfers(self, job: int, data: list) -> None:
if matches: if matches:
if job.event: if job.event:
_handle_transaction(trans, matches, event=job.event) _handle_transaction(trans, matches, regex_match_to_slug, event=job.event)
else: else:
_handle_transaction(trans, matches, organizer=job.organizer) _handle_transaction(trans, matches, regex_match_to_slug, organizer=job.organizer)
else: else:
trans.state = BankTransaction.STATE_NOMATCH trans.state = BankTransaction.STATE_NOMATCH
trans.save() trans.save()

View File

@@ -45,6 +45,8 @@ def env():
def test_event_main_domain_front_page(env): def test_event_main_domain_front_page(env):
assert eventreverse(env[1], 'presale:event.index') == '/mrmcd/2015/' assert eventreverse(env[1], 'presale:event.index') == '/mrmcd/2015/'
assert eventreverse(env[0], 'presale:organizer.index') == '/mrmcd/' assert eventreverse(env[0], 'presale:organizer.index') == '/mrmcd/'
assert eventreverse(env[1], 'plugins:testdummy:view') == '/mrmcd/2015/testdummy'
assert eventreverse(env[0], 'plugins:testdummy:view') == '/mrmcd/testdummy'
@pytest.mark.django_db @pytest.mark.django_db
@@ -52,12 +54,16 @@ def test_event_custom_domain_kwargs(env):
KnownDomain.objects.create(domainname='foobar', organizer=env[0]) KnownDomain.objects.create(domainname='foobar', organizer=env[0])
KnownDomain.objects.create(domainname='barfoo', organizer=env[0], event=env[1]) KnownDomain.objects.create(domainname='barfoo', organizer=env[0], event=env[1])
assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://barfoo/checkout/payment/' assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://barfoo/checkout/payment/'
assert eventreverse(env[0], 'plugins:testdummy:view') == 'http://foobar/testdummy'
assert eventreverse(env[1], 'plugins:testdummy:view') == 'http://barfoo/testdummy'
@pytest.mark.django_db @pytest.mark.django_db
def test_event_org_domain_kwargs(env): def test_event_org_domain_kwargs(env):
KnownDomain.objects.create(domainname='foobar', organizer=env[0]) KnownDomain.objects.create(domainname='foobar', organizer=env[0])
assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://foobar/2015/checkout/payment/' assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://foobar/2015/checkout/payment/'
assert eventreverse(env[0], 'plugins:testdummy:view') == 'http://foobar/testdummy'
assert eventreverse(env[1], 'plugins:testdummy:view') == 'http://foobar/2015/testdummy'
@pytest.mark.django_db @pytest.mark.django_db
@@ -65,9 +71,13 @@ def test_event_org_alt_domain_kwargs(env):
KnownDomain.objects.create(domainname='foobar', organizer=env[0]) KnownDomain.objects.create(domainname='foobar', organizer=env[0])
d = KnownDomain.objects.create(domainname='altfoo', organizer=env[0], mode=KnownDomain.MODE_ORG_ALT_DOMAIN) d = KnownDomain.objects.create(domainname='altfoo', organizer=env[0], mode=KnownDomain.MODE_ORG_ALT_DOMAIN)
assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://foobar/2015/checkout/payment/' assert eventreverse(env[1], 'presale:event.checkout', {'step': 'payment'}) == 'http://foobar/2015/checkout/payment/'
assert eventreverse(env[1], 'plugins:testdummy:view') == 'http://foobar/2015/testdummy'
d.event_assignments.create(event=env[1]) d.event_assignments.create(event=env[1])
with scopes_disabled(): with scopes_disabled():
assert eventreverse(Event.objects.get(pk=env[1].pk), 'presale:event.checkout', {'step': 'payment'}) == 'http://altfoo/2015/checkout/payment/' event = Event.objects.get(pk=env[1].pk)
assert eventreverse(event, 'presale:event.checkout', {'step': 'payment'}) == 'http://altfoo/2015/checkout/payment/'
assert eventreverse(env[0], 'plugins:testdummy:view') == 'http://foobar/testdummy'
assert eventreverse(event, 'plugins:testdummy:view') == 'http://altfoo/2015/testdummy'
@pytest.mark.django_db @pytest.mark.django_db

View File

@@ -385,6 +385,20 @@ def test_mark_paid_organizer_dash_in_slug(env, orga_job):
assert env[2].status == Order.STATUS_PAID assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_mark_paid_organizer_dash_in_slug_missing(env, orga_job):
env[0].slug = "foo-bar"
env[0].save()
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung FOOBAR1234S',
'date': '2016-01-26',
'amount': '23.00'
}])
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db @pytest.mark.django_db
def test_mark_paid_organizer_varying_order_code_length(env, orga_job): def test_mark_paid_organizer_varying_order_code_length(env, orga_job):
env[2].code = "123412341234" env[2].code = "123412341234"

View File

@@ -0,0 +1,52 @@
#
# This file is part of pretix (Community Edition).
#
# Copyright (C) 2014-2020 Raphael Michel and contributors
# Copyright (C) 2020-today pretix GmbH and contributors
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
# Public License as published by the Free Software Foundation in version 3 of the License.
#
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
# this file, see <https://pretix.eu/about/en/license>.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
from django.http import HttpResponse
from django.urls import path
def view(request):
return HttpResponse("")
urlpatterns = [
path(
"testdummy",
view,
name="view",
),
]
organizer_patterns = [
path(
"testdummy",
view,
name="view",
),
]
event_patterns = [
path(
"testdummy",
view,
name="view",
),
]