Compare commits

...
Author SHA1 Message Date
Mira Weller 135dcf42c9 Refactor fragment_product_list.html 2024-05-03 15:51:58 +02:00
Mira Weller 1d95c1920d Allow adding products from multiple subevents to the cart at once 2024-05-03 15:49:47 +02:00
Raphael Michel 806124304a Voucher get code validation 2024-05-03 14:34:51 +02:00
Serhii Horichenko 0d57673a47 Translations: Update Ukrainian
Currently translated at 62.9% (3529 of 5607 strings)

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

powered by weblate
2024-05-03 09:52:42 +02:00
Raphael Michel 166b5e4f3b Change default password hash to argon2id (#4121)
* Change default password hash to argon2id

* Install argon2
2024-05-02 18:22:02 +02:00
541b8f5bd6 Discounts: Fix edge case in computation (#4126)
* Add new test case for discounts:

Two discounts:
- "For every 1 item1, you get three item2 for 10 % off."
- "For every 1 item1, you get five item3 for 10 % off."
Cart: 2x item1, 2x item2, 6x item3
Expected result: 2x item1 full price, 2x item2 discounted, 5x item3 discounted, 1x item3 full price

* Fix discount calculation bug

* Update src/pretix/base/models/discount.py

Co-authored-by: Raphael Michel <michel@rami.io>

* Update src/pretix/base/models/discount.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2024-05-02 18:21:56 +02:00
dependabot[bot] d2b96b2425 Bump @babel/core from 7.24.3 to 7.24.5 in /src/pretix/static/npm_dir (#4125)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.3 to 7.24.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.5/packages/babel-core)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 18:21:30 +02:00
dependabot[bot] 04d4c4f8f1 Bump @babel/preset-env from 7.24.3 to 7.24.5 in /src/pretix/static/npm_dir (#4124)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.3 to 7.24.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.5/packages/babel-preset-env)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 16:31:55 +02:00
Raphaël Deux f4da94cbcd Translations: Update French
Currently translated at 96.7% (5424 of 5607 strings)

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

powered by weblate
2024-05-02 16:31:45 +02:00
Serhii Horichenko 97e3d5387f Translations: Update Ukrainian
Currently translated at 98.2% (225 of 229 strings)

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

powered by weblate
2024-05-02 16:31:45 +02:00
Serhii Horichenko 8fc07523a9 Translations: Update Ukrainian
Currently translated at 62.8% (3526 of 5607 strings)

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

powered by weblate
2024-05-02 16:31:45 +02:00
Nikolai f18b0ae187 Translations: Update Danish
Currently translated at 31.1% (1744 of 5607 strings)

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

powered by weblate
2024-05-02 16:31:45 +02:00
Raphael Michel f7e16f56ac Revert "Install argon2"
This reverts commit 3f4e869cea.
2024-05-02 16:27:46 +02:00
Raphael Michel 3f4e869cea Install argon2 2024-05-02 16:27:37 +02:00
Martin Gross 8c2a1d58f4 Templates: Add Herma 4515 (Acetatesilk) to repository 2024-05-02 13:57:46 +02:00
16 changed files with 514 additions and 407 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ dependencies = [
"css-inline==0.14.*",
"defusedcsv>=1.1.0",
"dj-static",
"Django==4.2.*",
"Django[argon2]==4.2.*",
"django-bootstrap3==24.2",
"django-compressor==4.4",
"django-countries==7.6.*",
-2
View File
@@ -44,8 +44,6 @@ class CodeColumn(ImportColumn):
super().__init__(*args)
def clean(self, value, previous_values):
if not value:
raise ValidationError(_('A voucher cannot be created without a code.'))
if value:
MinLengthValidator(5)(value)
if value and (value in self._cached or Voucher.objects.filter(event=self.event, code=value).exists()):
+2 -1
View File
@@ -23,6 +23,7 @@
from collections import defaultdict
from decimal import Decimal
from itertools import groupby
from math import ceil
from typing import Dict, Optional, Tuple
from django.core.exceptions import ValidationError
@@ -272,7 +273,7 @@ class Discount(LoggedModel):
# Prevent over-consuming of items, i.e. if our discount is "buy 2, get 1 free", we only
# want to match multiples of 3
n_groups = min(len(condition_idx_group) // self.condition_min_count, len(benefit_idx_group))
n_groups = min(len(condition_idx_group) // self.condition_min_count, ceil(len(benefit_idx_group) / self.benefit_only_apply_to_cheapest_n_matches))
consume_idx = condition_idx_group[:n_groups * self.condition_min_count]
benefit_idx = benefit_idx_group[:n_groups * self.benefit_only_apply_to_cheapest_n_matches]
else:
+2
View File
@@ -213,6 +213,8 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
voucher = Voucher(event=event)
vouchers.append(voucher)
if not record.get("code"):
raise ValidationError(_('A voucher cannot be created without a code.'))
Voucher.clean_item_properties(
record,
event,
+17 -10
View File
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-26 09:26+0000\n"
"PO-Revision-Date: 2024-04-30 01:00+0000\n"
"PO-Revision-Date: 2024-05-01 01:00+0000\n"
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix/da/"
">\n"
@@ -30298,12 +30298,15 @@ msgid ""
"connect your order to your account. This will allow you to see all your "
"orders in one place and access them at any time."
msgstr ""
"Hvis du allerede har oprettet en konto hos %(org)s, kan du tilmelde dig nu "
"og knytte din bestilling til din konto. På denne måde vil du kunne se alle "
"dine bestillinger ét sted, hvor du kan tilgå dem til enhver tid."
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:60
#: pretix/presale/templates/pretixpresale/organizers/customer_login.html:44
#, fuzzy
msgid "Reset password"
msgstr "Gentag adgangskode"
msgstr "Nulstil adgangskode"
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:92
#, fuzzy
@@ -30317,6 +30320,11 @@ msgid ""
"password, so you can use the account for future orders at %(org)s. You can "
"still go ahead with this purchase before you received the email."
msgstr ""
"Vi sender dig en mail med et link, som du kan bruge til at aktivere din "
"konto, hvorefter du kan vælge en adgangskode. Derefter kan du bruge din "
"konto til alle dine bestillinger hos %(org)s i fremtiden. Du kan stadig "
"fortsætte med at afslutte denne bestilling, selvom du ikke har modtaget "
"mailen."
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:122
#, fuzzy
@@ -30324,24 +30332,23 @@ msgid "Continue as a guest"
msgstr "Fortsæt som gæst"
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:130
#, fuzzy
msgid ""
"You are not required to create an account. If you proceed as a guest, you "
"will be able to access the details and status of your order any time through "
"the secret link we will send you via email once the order is complete."
msgstr ""
"Du behøver ikke at oprette en konto. Hvis du fortsætter som gæst, vil du "
"altid have mulighed for at tilgå informationer og status for din bestilling "
"via det link, som du får tilsendt per mail."
"altid have mulighed for at tilgå informationer og status for din bestilling "
"via det link, som du får tilsendt per mail, når du har afsluttet din "
"bestilling."
#: pretix/presale/templates/pretixpresale/event/checkout_membership.html:6
#, fuzzy
msgid ""
"Some of the products in your cart can only be purchased if there is an "
"active membership on your account."
msgstr ""
"Du har tilføjet ordrer, hvor det er muligt at lave yderligere indstillinger "
"før du forsætter."
"Nogle af posterne i din indkøbskurv kan kun købes, hvis du har et aktivt "
"medlemskab på din konto."
#: pretix/presale/templates/pretixpresale/event/checkout_membership.html:37
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:114
@@ -30870,10 +30877,10 @@ msgid "incl. %(tax_sum)s taxes"
msgstr "inkl. %(rate)s%% %(taxname)s"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:482
#, python-format
#, fuzzy, python-format
msgid "The items in your cart are reserved for you for %(minutes)s minutes."
msgstr ""
"Bookingerne i din indkøbskurv er reserveret til dig i %(minutes)s minutter."
"Posterne i din indkøbskurv er reserveret til dig i %(minutes)s minutter."
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:486
msgid ""
+9 -12
View File
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-26 09:26+0000\n"
"PO-Revision-Date: 2023-10-06 03:00+0000\n"
"Last-Translator: Ronan LE MEILLAT <ronan.le_meillat@highcanfly.club>\n"
"PO-Revision-Date: 2024-05-02 14:27+0000\n"
"Last-Translator: Raphaël Deux <github@raphael-deux.fr>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
">\n"
"Language: fr\n"
@@ -13,7 +13,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.0.2\n"
"X-Generator: Weblate 5.4.3\n"
#: pretix/_base_settings.py:78
msgid "English"
@@ -3218,7 +3218,7 @@ msgstr "Facture TVA"
#: pretix/base/invoice.py:597
msgctxt "invoice"
msgid "Invoice"
msgstr "FactureFacture"
msgstr "Facture"
#: pretix/base/invoice.py:598
#: pretix/control/templates/pretixcontrol/order/index.html:271
@@ -3336,7 +3336,7 @@ msgstr ""
#: pretix/base/invoice.py:858
msgid "Default invoice renderer (European-style letter)"
msgstr ""
msgstr "Rendu de la facture par défaut (lettre européenne)"
#: pretix/base/invoice.py:947
msgctxt "invoice"
@@ -3345,14 +3345,13 @@ msgstr "(Veuillez mettre entre guillemets systématiquement.)"
#: pretix/base/invoice.py:994
msgid "Simplified invoice renderer"
msgstr ""
msgstr "Rendu simplifié de la facture"
#: pretix/base/invoice.py:1013
#, fuzzy, python-brace-format
#| msgid "Event date range"
#, python-brace-format
msgctxt "invoice"
msgid "Event date: {date_range}"
msgstr "Plage de dates de l'événement"
msgstr "Plage de dates de l'événement : {date_range}"
#: pretix/base/media.py:61
msgid "Barcode / QR-Code"
@@ -3581,10 +3580,8 @@ msgid "Maximum usages"
msgstr "Utilisation maximale"
#: pretix/base/modelimport_vouchers.py:81
#, fuzzy
#| msgid "Maximum number of items per order"
msgid "The maximum number of usages must be set."
msgstr "Nombre maximum d'articles par commande"
msgstr "Le nombre maximum d'utilisations doit être fixé."
#: pretix/base/modelimport_vouchers.py:90 pretix/base/models/vouchers.py:205
msgid "Minimum usages"
+38 -47
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-26 09:26+0000\n"
"PO-Revision-Date: 2024-04-30 01:00+0000\n"
"PO-Revision-Date: 2024-05-03 01:00+0000\n"
"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
"Language-Team: Ukrainian <https://translate.pretix.eu/projects/pretix/pretix/"
"uk/>\n"
@@ -647,7 +647,7 @@ msgstr "{system} Користувач"
#: pretix/presale/templates/pretixpresale/event/order.html:299
#: pretix/presale/templates/pretixpresale/organizers/customer_profile.html:26
msgid "E-mail"
msgstr "Електронна пошта"
msgstr "Ел.пошта"
#: pretix/base/auth.py:154 pretix/base/forms/auth.py:164
#: pretix/base/forms/auth.py:218 pretix/base/models/customers.py:96
@@ -1853,8 +1853,9 @@ msgstr "Коротка назва події"
#: pretix/plugins/reports/exporters.py:561
#: pretix/plugins/reports/exporters.py:886
#: pretix/presale/templates/pretixpresale/organizers/customer_profile.html:73
#, fuzzy
msgid "Order total"
msgstr "Все замовлення"
msgstr "Сума замовлення"
#: pretix/base/exporters/orderlist.py:260
#: pretix/base/exporters/orderlist.py:442
@@ -2053,7 +2054,7 @@ msgstr "Правило оподаткування"
#: pretix/base/exporters/orderlist.py:624
#: pretix/base/exporters/orderlist.py:628 pretix/base/pdf.py:331
msgid "Invoice address name"
msgstr "Ім’я в рахунку-фактурі"
msgstr "Платіжна адреса: Ім'я"
#: pretix/base/exporters/orderlist.py:479
#: pretix/base/exporters/orderlist.py:661 pretix/base/models/orders.py:173
@@ -2539,7 +2540,7 @@ msgstr "Загальна квота"
#: pretix/control/templates/pretixcontrol/event/cancel.html:20
#: pretix/control/views/item.py:949
msgid "Paid orders"
msgstr "Оплачені замовлення"
msgstr "Сплачені замовлення"
#: pretix/base/exporters/orderlist.py:1106 pretix/control/views/item.py:954
msgid "Pending orders"
@@ -3781,7 +3782,7 @@ msgstr "Усі продукти (включаючи новостворені)"
#: pretix/base/models/checkin.py:57 pretix/plugins/badges/exporters.py:428
#: pretix/plugins/checkinlists/exporters.py:833
msgid "Limit to products"
msgstr "Обмежити до продуктів"
msgstr "Обмеження продуктів"
#: pretix/base/models/checkin.py:61
msgid ""
@@ -7164,7 +7165,7 @@ msgstr "Випадкове місто"
#: pretix/base/pdf.py:336
msgid "Invoice address company"
msgstr "Адреса рахунків-фактур компанії"
msgstr "Платіжна адреса: Компанія"
#: pretix/base/pdf.py:342
msgid "Sesame Street 42"
@@ -8454,16 +8455,11 @@ msgstr ""
"вашого кошика."
#: pretix/base/services/orders.py:201
#, fuzzy, python-format
#| msgid ""
#| "You cannot delete the product <strong>%(item)s</strong> because it "
#| "already has been ordered."
#, python-format
msgid ""
"You cannot remove the position %(addon)s since it has already been checked "
"in."
msgstr ""
"Ви не можете видалити продукт <strong>%(item)s</strong>, оскільки він уже "
"замовлений."
msgstr "Ви не можете вилучити позицію %(addon)s, оскільки вона вже замовлена."
#: pretix/base/services/orders.py:202
#, fuzzy
@@ -9536,7 +9532,7 @@ msgstr "напр., цим документом ми надсилаємо вам
#: pretix/base/settings.py:1162
msgid "Introductory text"
msgstr "вступний текст"
msgstr "Вступний текст"
#: pretix/base/settings.py:1163
msgid "Will be printed on every invoice above the invoice rows."
@@ -12288,11 +12284,9 @@ msgstr ""
#: pretix/base/timeframes.py:71 pretix/base/timeframes.py:80
#: pretix/base/timeframes.py:89 pretix/base/timeframes.py:98
#: pretix/base/timeframes.py:107
#, fuzzy
#| msgid "Orders by day"
msgctxt "reporting_timeframe"
msgid "by day"
msgstr "Замовлення по днях"
msgstr "по днях"
#: pretix/base/timeframes.py:58
msgctxt "reporting_timeframe"
@@ -18423,9 +18417,9 @@ msgid ""
"event and only retain the financial information such as the number and type "
"of tickets sold."
msgstr ""
"Ви можете видалити особисті дані, такі як імена та адреси електронної пошти, "
"зі своєї події та зберегти лише фінансову інформацію, як-от кількість і тип "
"проданих квитків."
"Ви можете вилучити особисті дані, такі як імена та адреси електронної пошти, "
"зі своєї події та зберегти лише таку фінансову інформацію, як кількість та "
"тип проданих квитків."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:76
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:89
@@ -18999,7 +18993,7 @@ msgstr ""
#: pretix/plugins/ticketoutputpdf/views.py:172
#: pretix/presale/views/customer.py:476 pretix/presale/views/customer.py:528
msgid "Your changes have been saved."
msgstr "Ваші зміни збережено."
msgstr "Ваші зміни були збережені."
#: pretix/control/templates/pretixcontrol/event/plugins.html:36
msgid "Top recommendation"
@@ -20818,9 +20812,9 @@ msgid ""
"informed automatically, but you will have the option to email them "
"individually in the next step."
msgstr ""
"Ви дійсно хочете видалити цей запит на скасування? Користувач не буде "
"проінформований автоматично, але ви матимете можливість надіслати їм "
"електронний лист окремо на наступному кроці."
"Ви дійсно хочете вилучити цей запит на скасування? Користувачі не будуть "
"проінформовані автоматично, але у Вас буде можливість надіслати окремі "
"електронні листи на наступному кроці."
#: pretix/control/templates/pretixcontrol/order/cancellation_request_delete.html:26
msgid "Yes, delete request"
@@ -22902,7 +22896,7 @@ msgstr "Необмеженo"
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:67
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:113
msgid "Remove"
msgstr "Видалити"
msgstr "Вилучити"
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:66
msgid "Accept"
@@ -23464,7 +23458,7 @@ msgstr "Вставити"
#: pretix/control/templates/pretixcontrol/pdf/index.html:39
msgid "Undo"
msgstr "Скасувати"
msgstr "Скасувати дію"
#: pretix/control/templates/pretixcontrol/pdf/index.html:43
msgid "Redo"
@@ -25085,7 +25079,7 @@ msgstr ""
#: pretix/plugins/sendmail/views.py:674 pretix/plugins/stripe/views.py:680
#: pretix/plugins/ticketoutputpdf/views.py:132
msgid "We could not save your changes. See below for details."
msgstr "Нам не вдалося зберегти ваші зміни. Подробиці - нижче."
msgstr "Нам не вдалося зберегти Ваші зміни. Подробиці дивіться нижче."
#: pretix/control/views/checkin.py:416 pretix/control/views/checkin.py:453
msgid "The requested list does not exist."
@@ -25726,7 +25720,8 @@ msgstr[2] ""
#: pretix/presale/views/order.py:1203 pretix/presale/views/order.py:1586
#: pretix/presale/views/order.py:1617
msgid "Unknown order code or not authorized to access this order."
msgstr "Невідомий код замовлення або доступ до цього замовлення не дозволений."
msgstr ""
"Невідомий код замовлення або доступ до цього замовлення отримати неможливо."
#: pretix/control/views/orders.py:674 pretix/presale/views/order.py:1035
msgid "Ticket download is not enabled for this product."
@@ -30775,7 +30770,7 @@ msgstr "Будь ласка, зачекайте, ми завершуємо ва
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:22
msgid "Add or remove tickets"
msgstr "Додати або видалити квитки"
msgstr "Додати або вилучити квитки"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:44
msgid "Modify payment"
@@ -31393,7 +31388,7 @@ msgstr "Домовились, ми його замінимо…"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:288
#, python-format
msgid "Remove %(item)s from your cart"
msgstr "Видалити %(item)s з вашого кошика"
msgstr "Вилучити %(item)s з Вашого кошика"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:291
#, python-format
@@ -31406,7 +31401,7 @@ msgid ""
"Remove one %(item)s from your cart. You currently have %(count)s in your "
"cart."
msgstr ""
"Видалити один %(item)s з вашого кошика. У Вашому кошику залишилось %(count)s."
"Вилучити один %(item)s з Вашого кошика. У Вашому кошику залишилось %(count)s."
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:301
msgid "We're trying to reserve another one for you!"
@@ -31510,23 +31505,19 @@ msgid "Change summary"
msgstr "Змінити підсумок"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:19
#, fuzzy, python-format
#| msgid ""
#| "Change position #%(positionid)s from \"%(old_item)s – %(old_variation)s "
#| "\" to \"%(new_item)s – %(new_variation)s\""
#, python-format
msgid ""
"Change position #%(positionid)s from \"%(old_item)s – %(old_variation)s\" to "
"\"%(new_item)s – %(new_variation)s\""
msgstr ""
"Змінити розміщення #%(positionid)s від \"%(old_item)s – %(old_variation)s \" "
"до \"%(new_item)s – %(new_variation)s\""
"Змінити позицію #%(positionid)s з \"%(old_item)s – %(old_variation)s \" на \""
"%(new_item)s – %(new_variation)s\""
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:23
#, python-format
msgid ""
"Change position #%(positionid)s from \"%(old_item)s\" to \"%(new_item)s\""
msgstr ""
"Змінити розміщення #%(positionid)s від \"%(old_item)s\" до \"%(new_item)s\""
msgstr "Змінити позицію #%(positionid)s з \"%(old_item)s\" на \"%(new_item)s\""
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:30
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:56
@@ -31540,32 +31531,32 @@ msgstr "Додатково до позиції #%(posid)s"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:40
#, python-format
msgid "Change date of position #%(positionid)s from \"%(old)s\" to \"%(new)s\""
msgstr "Змінити дати розміщення #%(positionid)s від \"%(old)s\" до \"%(new)s\""
msgstr "Змінити дати позиції #%(positionid)s з \"%(old)s\" на \"%(new)s\""
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:50
#, python-format
msgid "Change price of position #%(positionid)s from %(old)s to %(new)s"
msgstr "Змінити ціну розміщення #%(positionid)s від %(old)s до %(new)s"
msgstr "Змінити ціну позиції #%(positionid)s з %(old)s на %(new)s"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:70
#, python-format
msgid "Add position (%(item)s – %(variation)s)"
msgstr "Додати розміщення (%(item)s – %(variation)s)"
msgstr "Додати позицію (%(item)s – %(variation)s)"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:74
#, python-format
msgid "Add position (%(item)s)"
msgstr "Додати розміщення (%(item)s)"
msgstr "Додати позицію (%(item)s)"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:95
#, python-format
msgid "Remove position #%(positionid)s (%(item)s – %(variation)s)"
msgstr "Видалити розміщення #%(positionid)s (%(item)s – %(variation)s)"
msgstr "Вилучити позицію #%(positionid)s (%(item)s – %(variation)s)"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:99
#, python-format
msgid "Remove position #%(positionid)s (%(item)s)"
msgstr "Видалити розміщення #%(positionid)s (%(item)s)"
msgstr "Вилучити позицію #%(positionid)s (%(item)s)"
#: pretix/presale/templates/pretixpresale/event/fragment_change_confirm.html:121
msgid "Total price change"
@@ -32662,7 +32653,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/waitinglist_remove.html:16
msgctxt "waitinglist"
msgid "Yes, remove my ticket"
msgstr "Так, видалити мій квиток"
msgstr "Так, вилучити мій квиток"
#: pretix/presale/templates/pretixpresale/fragment_calendar.html:6
msgid "Calendar"
+32 -43
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-23 12:41+0000\n"
"PO-Revision-Date: 2024-04-30 01:00+0000\n"
"PO-Revision-Date: 2024-05-01 01:00+0000\n"
"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
"Language-Team: Ukrainian <https://translate.pretix.eu/projects/pretix/"
"pretix-js/uk/>\n"
@@ -537,7 +537,7 @@ msgstr "Додайте умову"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:191
#, fuzzy
msgid "minutes"
msgstr "хвилин"
msgstr "хвилини"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
msgid "Duplicate"
@@ -688,7 +688,7 @@ msgid_plural "({num} more dates)"
msgstr[0] "(додати дату)"
msgstr[1] "(додати {num} дати)"
msgstr[2] "(додати {num} дат)"
msgstr[3] "(додати {num} дат)"
msgstr[3] "(додати {num} дати)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
msgid ""
@@ -703,22 +703,25 @@ msgid "Cart expired"
msgstr "Термін дії кошика закінчився"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#, fuzzy
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Товари у Вашому кошику зарезервовані для Вас на одну хвилину."
msgstr[1] "Товари у Вашому кошику зарезервовані для Вас на {num} хвилини."
msgstr[2] "Товари у Вашому кошику зарезервовані для Вас на {num} хвилин."
msgstr[3] "Товари у Вашому кошику зарезервовані для Вас на {num} хвилин."
#: pretix/static/pretixpresale/js/ui/main.js:203
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
msgstr "Організатор утримує %(amount)s %(currency)s"
#: pretix/static/pretixpresale/js/ui/main.js:211
msgid "You get %(currency)s %(amount)s back"
msgstr ""
msgstr "Ви отримаєте в поверненні %(amount)s %(currency)s"
#: pretix/static/pretixpresale/js/ui/main.js:227
msgid "Please enter the amount the organizer can keep."
msgstr ""
msgstr "Введіть суму, яку може залишити організатор."
#: pretix/static/pretixpresale/js/ui/main.js:444
msgid "Please enter a quantity for one of the ticket types."
@@ -738,52 +741,45 @@ msgid "Your local time:"
msgstr "Ваш місцевий час:"
#: pretix/static/pretixpresale/js/walletdetection.js:39
#, fuzzy
#| msgid "Apple Pay"
msgid "Google Pay"
msgstr "Apple Pay"
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
msgstr "Кількість"
#: pretix/static/pretixpresale/js/widget/widget.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
msgstr "Зменшити кількість"
#: pretix/static/pretixpresale/js/widget/widget.js:18
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
msgstr "Збільшити кількість"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
msgstr "Ціна"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#, fuzzy
#| msgid "Selected only"
msgctxt "widget"
msgid "Select"
msgstr "Тільки вибрані"
msgstr "Виберіть"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#, fuzzy, javascript-format
#| msgid "Selected only"
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "Тільки вибрані"
msgstr "Виберіть %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Переглянути варіанти"
msgstr "Виберіть варіант %s"
#: pretix/static/pretixpresale/js/widget/widget.js:23
msgctxt "widget"
@@ -847,25 +843,19 @@ msgid "Only available with a voucher"
msgstr "Доступно лише з ваучером"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Not yet available"
msgstr "доступно зараз: %s"
msgstr "Зараз не доступно"
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
msgstr "Більше не доступно"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Currently not available"
msgstr "доступно зараз: %s"
msgstr "Зараз недоступно"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
@@ -889,11 +879,13 @@ msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
"Зараз у цій касі багато користувачів. Щоб продовжити, відкрийте вікно "
"квитків у новій вкладці."
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
msgstr "Відкрити касу"
#: pretix/static/pretixpresale/js/widget/widget.js:44
msgctxt "widget"
@@ -955,20 +947,14 @@ msgid "Continue"
msgstr "Продовжити"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
msgctxt "widget"
msgid "Show variants"
msgstr "Переглянути варіанти"
msgstr "Показати варіанти"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
msgctxt "widget"
msgid "Hide variants"
msgstr "Переглянути варіанти"
msgstr "Сховати варіанти"
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
@@ -1017,6 +1003,9 @@ msgid ""
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
"Деякі або всі категорії квитків зараз розпродані. Якщо хочете, можете "
"додатися до списку очікування. Тоді ми Вам повідомимо, коли місця знову "
"будуть вільні."
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
+8
View File
@@ -189,6 +189,14 @@ OPTIONS = OrderedDict([
'offsets': [46 * mm, 46 * mm],
'pagesize': pagesizes.A4,
}),
('herma_88.9x33.87', {
'name': 'HERMA 88,9 x 33,87 mm (4515)',
'cols': 2,
'rows': 8,
'margins': [13.03 * mm, 12.29 * mm, 13.03 * mm, 12.29 * mm],
'offsets': [96.52 * mm, 33.87 * mm],
'pagesize': pagesizes.A4,
}),
('lyreco_70x36', {
'name': 'Lyreco 70 x 36 mm (143.344)',
'cols': 3,
+5
View File
@@ -234,4 +234,9 @@ TEMPLATES = {
"pagesize": (40 * mm, 40 * mm),
"layout": _simple_template(40 * mm, 40 * mm),
},
"88.9x33.87": {
"label": format_lazy(_("{width} x {height} mm label"), width=88.9, height=33.87),
"pagesize": (88.9 * mm, 33.87 * mm),
"layout": _simple_template(88.9 * mm, 33.87 * mm),
},
}
@@ -5,17 +5,17 @@
{% load thumb %}
{% load eventsignal %}
{% load rich_text %}
{% for tup in items_by_category %}
<section {% if tup.0 %}aria-labelledby="category-{{ tup.0.id }}"{% else %}aria-label="{% trans "Uncategorized items" %}"{% endif %}{% if tup.0.description %} aria-describedby="category-info-{{ tup.0.id }}"{% endif %}>
{% if tup.0 %}
<h3 id="category-{{ tup.0.id }}">{{ tup.0.name }}</h3>
{% if tup.0.description %}
<div id="category-info-{{ tup.0.id }}">{{ tup.0.description|localize|rich_text }}</div>
{% for tup in items_by_category %}{% with category=tup.0 items=tup.1 id_prefix=tup.2 %}
<section {% if category %}aria-labelledby="{{ id_prefix }}category-{{ category.id }}"{% else %}aria-label="{% trans "Uncategorized items" %}"{% endif %}{% if category.description %} aria-describedby="{{ id_prefix }}category-info-{{ category.id }}"{% endif %}>
{% if category %}
<h3 id="{{ id_prefix }}category-{{ category.id }}">{{ category.name }}</h3>
{% if category.description %}
<div id="{{ id_prefix }}category-info-{{ category.id }}">{{ category.description|localize|rich_text }}</div>
{% endif %}
{% endif %}
{% for item in tup.1 %}
{% for item in items %}
{% if item.has_variations %}
<article aria-labelledby="item-{{ item.pk }}-legend"{% if item.description %} aria-describedby="item-{{ item.pk }}-description"{% endif %} class="item-with-variations{% if event.settings.show_variations_expanded %} details-open{% endif %}" id="item-{{ item.pk }}">
<article aria-labelledby="{{ id_prefix }}item-{{ item.pk }}-legend"{% if item.description %} aria-describedby="{{ id_prefix }}item-{{ item.pk }}-description"{% endif %} class="item-with-variations{% if event.settings.show_variations_expanded %} details-open{% endif %}" id="{{ id_prefix }}item-{{ item.pk }}">
<div class="row product-row headline">
<div class="col-md-8 col-sm-6 col-xs-12">
{% if item.picture %}
@@ -29,9 +29,9 @@
</a>
{% endif %}
<div class="product-description {% if item.picture %}with-picture{% endif %}">
<h4 id="item-{{ item.pk }}-legend">{{ item.name }}</h4>
<h4 id="{{ id_prefix }}item-{{ item.pk }}-legend">{{ item.name }}</h4>
{% if item.description %}
<div id="item-{{ item.pk }}-description" class="product-description">
<div id="{{ id_prefix }}item-{{ item.pk }}-description" class="product-description">
{{ item.description|localize|rich_text }}
</div>
{% endif %}
@@ -98,14 +98,14 @@
</div>
<div class="variations {% if not event.settings.show_variations_expanded %}variations-collapsed{% endif %}">
{% for var in item.available_variations %}
<article aria-labelledby="item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row product-row variation" id="item-{{ item.pk }}-{{ var.pk }}"
<article aria-labelledby="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row product-row variation" id="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}"
{% if not item.free_price %}
data-price="{% if event.settings.display_net_prices %}{{ var.display_price.net|unlocalize }}{% else %}{{ var.display_price.gross|unlocalize }}{% endif %}"
{% endif %}>
<div class="col-md-8 col-sm-6 col-xs-12">
<h5 id="item-{{ item.pk }}-{{ var.pk }}-legend">{{ var }}</h5>
<h5 id="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}-legend">{{ var }}</h5>
{% if var.description %}
<div id="item-{{ item.pk }}-{{ var.pk }}-description" class="variation-description">
<div id="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}-description" class="variation-description">
{{ var.description|localize|rich_text }}
</div>
{% endif %}
@@ -136,11 +136,11 @@
<div class="input-group input-group-price">
<span class="input-group-addon">{{ event.currency }}</span>
<input type="number" class="form-control input-item-price"
id="price-variation-{{ item.pk }}-{{ var.pk }}"
id="{{ id_prefix }}price-variation-{{ item.pk }}-{{ var.pk }}"
{% if not ev.presale_is_running %}disabled{% endif %}
placeholder="0"
min="{% if event.settings.display_net_prices %}{{ var.display_price.net|money_numberfield:event.currency }}{% else %}{{ var.display_price.gross|money_numberfield:event.currency }}{% endif %}"
name="price_{{ item.id }}_{{ var.id }}"
name="{{ id_prefix }}price_{{ item.id }}_{{ var.id }}"
{% if var.suggested_price.gross != var.display_price.gross %}
{% if event.settings.display_net_prices %}
title="{% blocktrans trimmed with item=var.value price=var.display_price.net|money:event.currency %}Modify price for {{ item }}, at least {{ price }}{% endblocktrans %}"
@@ -197,16 +197,16 @@
data-checked-onchange="price-variation-{{ item.pk }}-{{ var.pk }}"
{% endif %}
{% if not ev.presale_is_running %}disabled{% endif %}
id="variation_{{ item.id }}_{{ var.id }}"
name="variation_{{ item.id }}_{{ var.id }}"
id="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}"
name="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}"
aria-label="{% blocktrans with item=item.name var=var %}Add {{ item }}, {{ var }} to cart{% endblocktrans %}"
{% if var.description %} aria-describedby="item-{{ item.pk }}-{{ var.pk }}-description"{% endif %}>
{% if var.description %} aria-describedby="{{ id_prefix }}item-{{ item.pk }}-{{ var.pk }}-description"{% endif %}>
<i class="fa fa-shopping-cart" aria-hidden="true"></i>
{% trans "Select" context "checkbox" %}
</label>
{% else %}
<div class="input-item-count-group">
<button type="button" data-step="-1" data-controls="variation_{{ item.id }}_{{ var.id }}" class="btn btn-default input-item-count-dec" aria-label="{% trans "Decrease quantity" %}"
<button type="button" data-step="-1" data-controls="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}" class="btn btn-default input-item-count-dec" aria-label="{% trans "Decrease quantity" %}"
{% if not ev.presale_is_running %}disabled{% endif %}>-</button>
<input type="number" class="form-control input-item-count" placeholder="0" min="0"
{% if not ev.presale_is_running %}disabled{% endif %}
@@ -214,10 +214,10 @@
data-checked-onchange="price-variation-{{ item.pk }}-{{ var.pk }}"
{% endif %}
max="{{ var.order_max }}"
id="variation_{{ item.id }}_{{ var.id }}"
name="variation_{{ item.id }}_{{ var.id }}"
id="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}"
name="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}"
aria-label="{% blocktrans with item=item.name var=var.name %}Quantity of {{ item }}, {{ var }} to order{% endblocktrans %}">
<button type="button" data-step="1" data-controls="variation_{{ item.id }}_{{ var.id }}" class="btn btn-default input-item-count-inc" aria-label="{% trans "Increase quantity" %}"
<button type="button" data-step="1" data-controls="{{ id_prefix }}variation_{{ item.id }}_{{ var.id }}" class="btn btn-default input-item-count-inc" aria-label="{% trans "Increase quantity" %}"
{% if not ev.presale_is_running %}disabled{% endif %}>+</button>
</div>
{% endif %}
@@ -231,7 +231,7 @@
</div>
</article>
{% else %}
<article aria-labelledby="item-{{ item.pk }}-legend"{% if item.description %} aria-describedby="item-{{ item.pk }}-description"{% endif %} class="row product-row simple" id="item-{{ item.pk }}"
<article aria-labelledby="{{ id_prefix }}item-{{ item.pk }}-legend"{% if item.description %} aria-describedby="{{ id_prefix }}item-{{ item.pk }}-description"{% endif %} class="row product-row simple" id="{{ id_prefix }}item-{{ item.pk }}"
{% if not item.free_price %}
data-price="{% if event.settings.display_net_prices %}{{ item.display_price.net|unlocalize }}{% else %}{{ item.display_price.gross|unlocalize }}{% endif %}"
{% endif %}>
@@ -247,9 +247,9 @@
</a>
{% endif %}
<div class="product-description {% if item.picture %}with-picture{% endif %}">
<h4 id="item-{{ item.pk }}-legend">{{ item.name }}</h4>
<h4 id="{{ id_prefix }}item-{{ item.pk }}-legend">{{ item.name }}</h4>
{% if item.description %}
<div id="item-{{ item.pk }}-description" class="product-description">
<div id="{{ id_prefix }}item-{{ item.pk }}-description" class="product-description">
{{ item.description|localize|rich_text }}
</div>
{% endif %}
@@ -290,10 +290,10 @@
<label class="sr-only" for="price-item-{{ item.pk }}">{% blocktrans trimmed with item=item.name currency=event.currency %}Set price in {{ currency }} for {{ item }}{% endblocktrans %}</label>
<span class="input-group-addon" aria-hidden="true">{{ event.currency }}</span>
<input type="number" class="form-control input-item-price" placeholder="0"
id="price-item-{{ item.pk }}"
id="{{ id_prefix }}price-item-{{ item.pk }}"
{% if not ev.presale_is_running %}disabled{% endif %}
min="{% if event.settings.display_net_prices %}{{ item.display_price.net|money_numberfield:event.currency }}{% else %}{{ item.display_price.gross|money_numberfield:event.currency }}{% endif %}"
name="price_{{ item.id }}"
name="{{ id_prefix }}price_{{ item.id }}"
{% if item.suggested_price.gross != item.display_price.gross %}
{% if event.settings.display_net_prices %}
title="{% blocktrans trimmed with item=item.name price=item.display_price.net|money:event.currency %}Modify price for {{ item }}, at least {{ price }}{% endblocktrans %}"
@@ -349,15 +349,15 @@
data-checked-onchange="price-item-{{ item.pk }}"
{% endif %}
{% if not ev.presale_is_running %}disabled{% endif %}
name="item_{{ item.id }}" id="item_{{ item.id }}"
name="{{ id_prefix }}item_{{ item.id }}" id="{{ id_prefix }}item_{{ item.id }}"
aria-label="{% blocktrans with item=item.name %}Add {{ item }} to cart{% endblocktrans %}"
{% if item.description %} aria-describedby="item-{{ item.id }}-description"{% endif %}>
{% if item.description %} aria-describedby="{{ id_prefix }}item-{{ item.id }}-description"{% endif %}>
<i class="fa fa-shopping-cart" aria-hidden="true"></i>
{% trans "Select" context "checkbox" %}
</label>
{% else %}
<div class="input-item-count-group">
<button type="button" data-step="-1" data-controls="item_{{ item.id }}" class="btn btn-default input-item-count-dec" aria-label="{% trans "Decrease quantity" %}"
<button type="button" data-step="-1" data-controls="{{ id_prefix }}item_{{ item.id }}" class="btn btn-default input-item-count-dec" aria-label="{% trans "Decrease quantity" %}"
{% if not ev.presale_is_running %}disabled{% endif %}>-</button>
<input type="number" class="form-control input-item-count" placeholder="0" min="0"
{% if not ev.presale_is_running %}disabled{% endif %}
@@ -366,11 +366,11 @@
data-checked-onchange="price-item-{{ item.pk }}"
{% endif %}
max="{{ item.order_max }}"
name="item_{{ item.id }}"
id="item_{{ item.id }}"
name="{{ id_prefix }}item_{{ item.id }}"
id="{{ id_prefix }}item_{{ item.id }}"
aria-label="{% blocktrans with item=item.name %}Quantity of {{ item }} to order{% endblocktrans %}"
{% if item.description %} aria-describedby="item-{{ item.id }}-description"{% endif %}>
<button type="button" data-step="1" data-controls="item_{{ item.id }}" class="btn btn-default input-item-count-inc" aria-label="{% trans "Increase quantity" %}"
{% if item.description %} aria-describedby="{{ id_prefix }}item-{{ item.id }}-description"{% endif %}>
<button type="button" data-step="1" data-controls="{{ id_prefix }}item_{{ item.id }}" class="btn btn-default input-item-count-inc" aria-label="{% trans "Increase quantity" %}"
{% if not ev.presale_is_running %}disabled{% endif %}>+</button>
</div>
{% endif %}
@@ -383,4 +383,4 @@
{% endif %}
{% endfor %}
</section>
{% endfor %}
{% endwith %}{% endfor %}
+14 -6
View File
@@ -154,17 +154,25 @@ class CartActionMixin:
if value.strip() == '' or '_' not in key:
return
subevent = None
if key.startswith('subevent_'):
try:
parts = key.split('_', 2)
subevent = int(parts[1])
key = parts[2]
except ValueError:
pass
elif 'subevent' in self.request.POST:
try:
subevent = int(self.request.POST.get('subevent'))
except ValueError:
pass
if not key.startswith('item_') and not key.startswith('variation_') and not key.startswith('seat_'):
return
parts = key.split("_")
price = self.request.POST.get('price_' + "_".join(parts[1:]), "")
subevent = None
if 'subevent' in self.request.POST:
try:
subevent = int(self.request.POST.get('subevent'))
except ValueError:
pass
if key.startswith('seat_'):
try:
+7
View File
@@ -704,6 +704,13 @@ BOOTSTRAP3 = {
},
}
PASSWORD_HASHERS = [
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
"django.contrib.auth.hashers.ScryptPasswordHasher",
]
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+274 -248
View File
@@ -8,8 +8,8 @@
"name": "pretix",
"version": "0.0.0",
"dependencies": {
"@babel/core": "^7.24.3",
"@babel/preset-env": "^7.24.3",
"@babel/core": "^7.24.5",
"@babel/preset-env": "^7.24.5",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.2.3",
"rollup": "^2.79.1",
@@ -43,28 +43,28 @@
}
},
"node_modules/@babel/compat-data": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz",
"integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==",
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
"integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
"version": "7.24.3",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz",
"integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
"integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.2",
"@babel/generator": "^7.24.1",
"@babel/generator": "^7.24.5",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helpers": "^7.24.1",
"@babel/parser": "^7.24.1",
"@babel/helper-module-transforms": "^7.24.5",
"@babel/helpers": "^7.24.5",
"@babel/parser": "^7.24.5",
"@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0",
"@babel/traverse": "^7.24.5",
"@babel/types": "^7.24.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -99,11 +99,11 @@
}
},
"node_modules/@babel/generator": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz",
"integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
"integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"dependencies": {
"@babel/types": "^7.24.0",
"@babel/types": "^7.24.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
@@ -184,18 +184,18 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz",
"integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
"integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-member-expression-to-functions": "^7.23.0",
"@babel/helper-member-expression-to-functions": "^7.24.5",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-replace-supers": "^7.24.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-split-export-declaration": "^7.24.5",
"semver": "^6.3.1"
},
"engines": {
@@ -284,11 +284,11 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
"integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
"integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
"dependencies": {
"@babel/types": "^7.23.0"
"@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -306,15 +306,15 @@
}
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
"integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
"integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-module-imports": "^7.22.15",
"@babel/helper-simple-access": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-validator-identifier": "^7.22.20"
"@babel/helper-module-imports": "^7.24.3",
"@babel/helper-simple-access": "^7.24.5",
"@babel/helper-split-export-declaration": "^7.24.5",
"@babel/helper-validator-identifier": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -335,9 +335,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.24.0",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
"integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
"integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
"engines": {
"node": ">=6.9.0"
}
@@ -375,11 +375,11 @@
}
},
"node_modules/@babel/helper-simple-access": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
"integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
"integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
"dependencies": {
"@babel/types": "^7.22.5"
"@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -397,28 +397,28 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
"integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
"dependencies": {
"@babel/types": "^7.22.5"
"@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.23.4",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
"integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
"integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
"integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
"engines": {
"node": ">=6.9.0"
}
@@ -445,13 +445,13 @@
}
},
"node_modules/@babel/helpers": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz",
"integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz",
"integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
"dependencies": {
"@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0"
"@babel/traverse": "^7.24.5",
"@babel/types": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -472,9 +472,9 @@
}
},
"node_modules/@babel/parser": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz",
"integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
"integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -482,6 +482,21 @@
"node": ">=6.0.0"
}
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz",
"integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz",
@@ -817,11 +832,11 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz",
"integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz",
"integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -846,11 +861,11 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz",
"integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==",
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz",
"integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.24.1",
"@babel/helper-create-class-features-plugin": "^7.24.4",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
},
@@ -862,17 +877,17 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz",
"integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz",
"integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-replace-supers": "^7.24.1",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-split-export-declaration": "^7.24.5",
"globals": "^11.1.0"
},
"engines": {
@@ -898,11 +913,11 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz",
"integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz",
"integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1197,14 +1212,14 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz",
"integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz",
"integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==",
"dependencies": {
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.24.1"
"@babel/plugin-transform-parameters": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1244,11 +1259,11 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz",
"integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz",
"integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
@@ -1260,11 +1275,11 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz",
"integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz",
"integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1289,13 +1304,13 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz",
"integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz",
"integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.24.1",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-create-class-features-plugin": "^7.24.5",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
@@ -1406,11 +1421,11 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz",
"integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz",
"integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1479,14 +1494,15 @@
}
},
"node_modules/@babel/preset-env": {
"version": "7.24.3",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz",
"integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz",
"integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==",
"dependencies": {
"@babel/compat-data": "^7.24.1",
"@babel/compat-data": "^7.24.4",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-validator-option": "^7.23.5",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
@@ -1513,12 +1529,12 @@
"@babel/plugin-transform-async-generator-functions": "^7.24.3",
"@babel/plugin-transform-async-to-generator": "^7.24.1",
"@babel/plugin-transform-block-scoped-functions": "^7.24.1",
"@babel/plugin-transform-block-scoping": "^7.24.1",
"@babel/plugin-transform-block-scoping": "^7.24.5",
"@babel/plugin-transform-class-properties": "^7.24.1",
"@babel/plugin-transform-class-static-block": "^7.24.1",
"@babel/plugin-transform-classes": "^7.24.1",
"@babel/plugin-transform-class-static-block": "^7.24.4",
"@babel/plugin-transform-classes": "^7.24.5",
"@babel/plugin-transform-computed-properties": "^7.24.1",
"@babel/plugin-transform-destructuring": "^7.24.1",
"@babel/plugin-transform-destructuring": "^7.24.5",
"@babel/plugin-transform-dotall-regex": "^7.24.1",
"@babel/plugin-transform-duplicate-keys": "^7.24.1",
"@babel/plugin-transform-dynamic-import": "^7.24.1",
@@ -1538,13 +1554,13 @@
"@babel/plugin-transform-new-target": "^7.24.1",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
"@babel/plugin-transform-numeric-separator": "^7.24.1",
"@babel/plugin-transform-object-rest-spread": "^7.24.1",
"@babel/plugin-transform-object-rest-spread": "^7.24.5",
"@babel/plugin-transform-object-super": "^7.24.1",
"@babel/plugin-transform-optional-catch-binding": "^7.24.1",
"@babel/plugin-transform-optional-chaining": "^7.24.1",
"@babel/plugin-transform-parameters": "^7.24.1",
"@babel/plugin-transform-optional-chaining": "^7.24.5",
"@babel/plugin-transform-parameters": "^7.24.5",
"@babel/plugin-transform-private-methods": "^7.24.1",
"@babel/plugin-transform-private-property-in-object": "^7.24.1",
"@babel/plugin-transform-private-property-in-object": "^7.24.5",
"@babel/plugin-transform-property-literals": "^7.24.1",
"@babel/plugin-transform-regenerator": "^7.24.1",
"@babel/plugin-transform-reserved-words": "^7.24.1",
@@ -1552,7 +1568,7 @@
"@babel/plugin-transform-spread": "^7.24.1",
"@babel/plugin-transform-sticky-regex": "^7.24.1",
"@babel/plugin-transform-template-literals": "^7.24.1",
"@babel/plugin-transform-typeof-symbol": "^7.24.1",
"@babel/plugin-transform-typeof-symbol": "^7.24.5",
"@babel/plugin-transform-unicode-escapes": "^7.24.1",
"@babel/plugin-transform-unicode-property-regex": "^7.24.1",
"@babel/plugin-transform-unicode-regex": "^7.24.1",
@@ -1627,18 +1643,18 @@
}
},
"node_modules/@babel/traverse": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
"integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
"integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
"dependencies": {
"@babel/code-frame": "^7.24.1",
"@babel/generator": "^7.24.1",
"@babel/code-frame": "^7.24.2",
"@babel/generator": "^7.24.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/parser": "^7.24.1",
"@babel/types": "^7.24.0",
"@babel/helper-split-export-declaration": "^7.24.5",
"@babel/parser": "^7.24.5",
"@babel/types": "^7.24.5",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1647,12 +1663,12 @@
}
},
"node_modules/@babel/types": {
"version": "7.24.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
"integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
"integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
"dependencies": {
"@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"@babel/helper-string-parser": "^7.24.1",
"@babel/helper-validator-identifier": "^7.24.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -4158,25 +4174,25 @@
}
},
"@babel/compat-data": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz",
"integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA=="
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
"integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ=="
},
"@babel/core": {
"version": "7.24.3",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz",
"integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
"integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
"requires": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.2",
"@babel/generator": "^7.24.1",
"@babel/generator": "^7.24.5",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helpers": "^7.24.1",
"@babel/parser": "^7.24.1",
"@babel/helper-module-transforms": "^7.24.5",
"@babel/helpers": "^7.24.5",
"@babel/parser": "^7.24.5",
"@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0",
"@babel/traverse": "^7.24.5",
"@babel/types": "^7.24.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -4197,11 +4213,11 @@
}
},
"@babel/generator": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz",
"integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
"integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"requires": {
"@babel/types": "^7.24.0",
"@babel/types": "^7.24.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
@@ -4268,18 +4284,18 @@
}
},
"@babel/helper-create-class-features-plugin": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz",
"integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
"integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-member-expression-to-functions": "^7.23.0",
"@babel/helper-member-expression-to-functions": "^7.24.5",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-replace-supers": "^7.24.1",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-split-export-declaration": "^7.24.5",
"semver": "^6.3.1"
},
"dependencies": {
@@ -4342,11 +4358,11 @@
}
},
"@babel/helper-member-expression-to-functions": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
"integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
"integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
"requires": {
"@babel/types": "^7.23.0"
"@babel/types": "^7.24.5"
}
},
"@babel/helper-module-imports": {
@@ -4358,15 +4374,15 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
"integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
"integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
"requires": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-module-imports": "^7.22.15",
"@babel/helper-simple-access": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-validator-identifier": "^7.22.20"
"@babel/helper-module-imports": "^7.24.3",
"@babel/helper-simple-access": "^7.24.5",
"@babel/helper-split-export-declaration": "^7.24.5",
"@babel/helper-validator-identifier": "^7.24.5"
}
},
"@babel/helper-optimise-call-expression": {
@@ -4378,9 +4394,9 @@
}
},
"@babel/helper-plugin-utils": {
"version": "7.24.0",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
"integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w=="
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
"integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ=="
},
"@babel/helper-remap-async-to-generator": {
"version": "7.22.20",
@@ -4403,11 +4419,11 @@
}
},
"@babel/helper-simple-access": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
"integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
"integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
"requires": {
"@babel/types": "^7.22.5"
"@babel/types": "^7.24.5"
}
},
"@babel/helper-skip-transparent-expression-wrappers": {
@@ -4419,22 +4435,22 @@
}
},
"@babel/helper-split-export-declaration": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
"integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
"requires": {
"@babel/types": "^7.22.5"
"@babel/types": "^7.24.5"
}
},
"@babel/helper-string-parser": {
"version": "7.23.4",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
"integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ=="
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
"integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ=="
},
"@babel/helper-validator-identifier": {
"version": "7.22.20",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
"integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA=="
},
"@babel/helper-validator-option": {
"version": "7.23.5",
@@ -4452,13 +4468,13 @@
}
},
"@babel/helpers": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz",
"integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz",
"integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
"requires": {
"@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0"
"@babel/traverse": "^7.24.5",
"@babel/types": "^7.24.5"
}
},
"@babel/highlight": {
@@ -4473,9 +4489,18 @@
}
},
"@babel/parser": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz",
"integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg=="
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
"integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg=="
},
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz",
"integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==",
"requires": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-plugin-utils": "^7.24.5"
}
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.24.1",
@@ -4693,11 +4718,11 @@
}
},
"@babel/plugin-transform-block-scoping": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz",
"integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz",
"integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==",
"requires": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
}
},
"@babel/plugin-transform-class-properties": {
@@ -4710,27 +4735,27 @@
}
},
"@babel/plugin-transform-class-static-block": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz",
"integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==",
"version": "7.24.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz",
"integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==",
"requires": {
"@babel/helper-create-class-features-plugin": "^7.24.1",
"@babel/helper-create-class-features-plugin": "^7.24.4",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
}
},
"@babel/plugin-transform-classes": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz",
"integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz",
"integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-replace-supers": "^7.24.1",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/helper-split-export-declaration": "^7.24.5",
"globals": "^11.1.0"
}
},
@@ -4744,11 +4769,11 @@
}
},
"@babel/plugin-transform-destructuring": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz",
"integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz",
"integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==",
"requires": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
}
},
"@babel/plugin-transform-dotall-regex": {
@@ -4923,14 +4948,14 @@
}
},
"@babel/plugin-transform-object-rest-spread": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz",
"integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz",
"integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==",
"requires": {
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.24.1"
"@babel/plugin-transform-parameters": "^7.24.5"
}
},
"@babel/plugin-transform-object-super": {
@@ -4952,21 +4977,21 @@
}
},
"@babel/plugin-transform-optional-chaining": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz",
"integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz",
"integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==",
"requires": {
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
"@babel/plugin-syntax-optional-chaining": "^7.8.3"
}
},
"@babel/plugin-transform-parameters": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz",
"integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz",
"integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==",
"requires": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
}
},
"@babel/plugin-transform-private-methods": {
@@ -4979,13 +5004,13 @@
}
},
"@babel/plugin-transform-private-property-in-object": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz",
"integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz",
"integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.24.1",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-create-class-features-plugin": "^7.24.5",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
}
},
@@ -5048,11 +5073,11 @@
}
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz",
"integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz",
"integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==",
"requires": {
"@babel/helper-plugin-utils": "^7.24.0"
"@babel/helper-plugin-utils": "^7.24.5"
}
},
"@babel/plugin-transform-unicode-escapes": {
@@ -5091,14 +5116,15 @@
}
},
"@babel/preset-env": {
"version": "7.24.3",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz",
"integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz",
"integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==",
"requires": {
"@babel/compat-data": "^7.24.1",
"@babel/compat-data": "^7.24.4",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.24.0",
"@babel/helper-plugin-utils": "^7.24.5",
"@babel/helper-validator-option": "^7.23.5",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
@@ -5125,12 +5151,12 @@
"@babel/plugin-transform-async-generator-functions": "^7.24.3",
"@babel/plugin-transform-async-to-generator": "^7.24.1",
"@babel/plugin-transform-block-scoped-functions": "^7.24.1",
"@babel/plugin-transform-block-scoping": "^7.24.1",
"@babel/plugin-transform-block-scoping": "^7.24.5",
"@babel/plugin-transform-class-properties": "^7.24.1",
"@babel/plugin-transform-class-static-block": "^7.24.1",
"@babel/plugin-transform-classes": "^7.24.1",
"@babel/plugin-transform-class-static-block": "^7.24.4",
"@babel/plugin-transform-classes": "^7.24.5",
"@babel/plugin-transform-computed-properties": "^7.24.1",
"@babel/plugin-transform-destructuring": "^7.24.1",
"@babel/plugin-transform-destructuring": "^7.24.5",
"@babel/plugin-transform-dotall-regex": "^7.24.1",
"@babel/plugin-transform-duplicate-keys": "^7.24.1",
"@babel/plugin-transform-dynamic-import": "^7.24.1",
@@ -5150,13 +5176,13 @@
"@babel/plugin-transform-new-target": "^7.24.1",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
"@babel/plugin-transform-numeric-separator": "^7.24.1",
"@babel/plugin-transform-object-rest-spread": "^7.24.1",
"@babel/plugin-transform-object-rest-spread": "^7.24.5",
"@babel/plugin-transform-object-super": "^7.24.1",
"@babel/plugin-transform-optional-catch-binding": "^7.24.1",
"@babel/plugin-transform-optional-chaining": "^7.24.1",
"@babel/plugin-transform-parameters": "^7.24.1",
"@babel/plugin-transform-optional-chaining": "^7.24.5",
"@babel/plugin-transform-parameters": "^7.24.5",
"@babel/plugin-transform-private-methods": "^7.24.1",
"@babel/plugin-transform-private-property-in-object": "^7.24.1",
"@babel/plugin-transform-private-property-in-object": "^7.24.5",
"@babel/plugin-transform-property-literals": "^7.24.1",
"@babel/plugin-transform-regenerator": "^7.24.1",
"@babel/plugin-transform-reserved-words": "^7.24.1",
@@ -5164,7 +5190,7 @@
"@babel/plugin-transform-spread": "^7.24.1",
"@babel/plugin-transform-sticky-regex": "^7.24.1",
"@babel/plugin-transform-template-literals": "^7.24.1",
"@babel/plugin-transform-typeof-symbol": "^7.24.1",
"@babel/plugin-transform-typeof-symbol": "^7.24.5",
"@babel/plugin-transform-unicode-escapes": "^7.24.1",
"@babel/plugin-transform-unicode-property-regex": "^7.24.1",
"@babel/plugin-transform-unicode-regex": "^7.24.1",
@@ -5225,29 +5251,29 @@
}
},
"@babel/traverse": {
"version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
"integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
"integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
"requires": {
"@babel/code-frame": "^7.24.1",
"@babel/generator": "^7.24.1",
"@babel/code-frame": "^7.24.2",
"@babel/generator": "^7.24.5",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
"@babel/parser": "^7.24.1",
"@babel/types": "^7.24.0",
"@babel/helper-split-export-declaration": "^7.24.5",
"@babel/parser": "^7.24.5",
"@babel/types": "^7.24.5",
"debug": "^4.3.1",
"globals": "^11.1.0"
}
},
"@babel/types": {
"version": "7.24.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
"integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
"version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
"integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
"requires": {
"@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"@babel/helper-string-parser": "^7.24.1",
"@babel/helper-validator-identifier": "^7.24.5",
"to-fast-properties": "^2.0.0"
},
"dependencies": {
+2 -2
View File
@@ -4,8 +4,8 @@
"private": true,
"scripts": {},
"dependencies": {
"@babel/core": "^7.24.3",
"@babel/preset-env": "^7.24.3",
"@babel/core": "^7.24.5",
"@babel/preset-env": "^7.24.5",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.2.3",
"vue": "^2.7.16",
+68
View File
@@ -51,6 +51,11 @@ def item2(event):
return event.items.create(name='Ticket II', default_price=Decimal('50.00'))
@pytest.fixture
def item3(event):
return event.items.create(name='Ticket III', default_price=Decimal('42.00'))
@pytest.fixture
def voucher(event):
return event.vouchers.create()
@@ -1338,3 +1343,66 @@ def test_multiple_discounts_with_benefit_condition_overlap(event, item, item2):
new_prices = [p for p, d in apply_discounts(event, 'web', positions)]
assert sorted(new_prices) == sorted(expected)
@pytest.mark.django_db
@scopes_disabled()
def test_multiple_discounts_with_same_condition(event, item, item2, item3):
# "For every 1 item1, you get three item2 for 10 % off." + "For every 1 item1, you get five item3 for 10 % off."
d1 = Discount(
event=event,
condition_min_count=1,
condition_all_products=False,
benefit_only_apply_to_cheapest_n_matches=3,
benefit_discount_matching_percent=10,
benefit_same_products=False,
position=1,
)
d1.save()
d1.condition_limit_products.add(item)
d1.benefit_limit_products.add(item2)
d2 = Discount(
event=event,
condition_min_count=1,
condition_all_products=False,
benefit_only_apply_to_cheapest_n_matches=5,
benefit_discount_matching_percent=10,
benefit_same_products=False,
position=2,
)
d2.save()
d2.condition_limit_products.add(item)
d2.benefit_limit_products.add(item3)
positions = (
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item3.pk, None, Decimal('42.00'), False, False, Decimal('0.00')),
(item2.pk, None, Decimal('50.00'), False, False, Decimal('0.00')),
(item2.pk, None, Decimal('50.00'), False, False, Decimal('0.00')),
(item.pk, None, Decimal('23.00'), False, False, Decimal('0.00')),
(item.pk, None, Decimal('23.00'), False, False, Decimal('0.00')),
)
expected = (
# both item1 remain full price
Decimal('23.00'),
Decimal('23.00'),
# 5 item3 discounted
Decimal('37.80'),
Decimal('37.80'),
Decimal('37.80'),
Decimal('37.80'),
Decimal('37.80'),
# 2 item2 discounted
Decimal('45.00'),
Decimal('45.00'),
# 1 item3 remains untouched
Decimal('42.00'),
)
new_prices = [p for p, d in apply_discounts(event, 'web', positions)]
assert sorted(new_prices) == sorted(expected)