Compare commits

..
Author SHA1 Message Date
dependabot[bot]andGitHub f4cefb2e4b Update stripe requirement from ==7.9.* to ==15.4.*
Updates the requirements on [stripe](https://github.com/stripe/stripe-python) to permit the latest version.
- [Release notes](https://github.com/stripe/stripe-python/releases)
- [Changelog](https://github.com/stripe/stripe-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-python/compare/v7.9.0b1...v15.4.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-version: 15.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-03 18:13:16 +00:00
11 changed files with 32 additions and 51 deletions
+2 -2
View File
@@ -2038,7 +2038,7 @@ Manipulating individual positions
* ``order`` (mandatory, specified as a string mapping to a ``code``)
* ``addon_to`` (optional, specified as an integer mapping to ``positionid`` - the number of the position within the order, see :ref:`_order-position-resource` - of the parent position)
* ``addon_to`` (optional, specified as an integer mapping to the ``positionid`` of the parent position)
* ``item`` (mandatory)
@@ -2348,7 +2348,7 @@ otherwise, such as splitting an order or changing fees.
"subevent": 562,
"seat": "seat-guid-2",
"price": "99.99",
"addon_to": 1,
"addon_to": 12374,
"attendee_name": "Peter",
}
],
+4 -4
View File
@@ -33,12 +33,12 @@ dependencies = [
"bleach==6.4.*",
"celery==5.6.*",
"chardet==5.2.*",
"cryptography>=50.0.0",
"cryptography>=49.0.0",
"css-inline==0.21.*",
"defusedcsv>=3.0.0",
"dnspython==2.*",
"Django[argon2]==5.2.*",
"django-bootstrap3==26.2",
"django-bootstrap3==26.1",
"django-compressor==4.6.0",
"django-countries==9.0.*",
"django-filter==26.1",
@@ -67,7 +67,7 @@ dependencies = [
"kombu==5.6.*",
"libsass==0.23.*",
"lxml",
"markdown==3.10.3", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.10.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
"mt-940==4.30.*",
"oauthlib==3.3.*",
@@ -96,7 +96,7 @@ dependencies = [
"requests==2.34.*",
"sentry-sdk==2.66.*",
"sepaxml==2.7.*",
"stripe==7.9.*",
"stripe==15.4.*",
"text-unidecode==1.*",
"tlds>=2026072401",
"tqdm==4.*",
+5 -12
View File
@@ -45,8 +45,7 @@ from pretix.base.models import (
)
from pretix.base.models.organizer import TeamQuerySet
from pretix.base.services.export import (
ExportError, export, init_event_exporters, init_organizer_exporters,
multiexport,
export, init_event_exporters, init_organizer_exporters, multiexport,
)
from pretix.helpers.http import ChunkBasedFileResponse
@@ -150,11 +149,8 @@ class EventExportersViewSet(ExportersMixin, viewsets.ViewSet):
))
exporters = []
for ex in sorted(raw_exporters, key=lambda ex: str(ex.verbose_name)):
try:
ex._serializer = JobRunSerializer(exporter=ex)
exporters.append(ex)
except ExportError:
pass
ex._serializer = JobRunSerializer(exporter=ex)
exporters.append(ex)
return exporters
def do_export(self, cf, instance, data):
@@ -184,11 +180,8 @@ class OrganizerExportersViewSet(ExportersMixin, viewsets.ViewSet):
))
exporters = []
for ex in sorted(raw_exporters, key=lambda ex: str(ex.verbose_name)):
try:
ex._serializer = JobRunSerializer(exporter=ex)
exporters.append(ex)
except ExportError:
pass
ex._serializer = JobRunSerializer(exporter=ex)
exporters.append(ex)
return exporters
def do_export(self, cf, instance, data):
+1 -1
View File
@@ -147,7 +147,7 @@ def get_font_stylesheet(font_name, organizer: Organizer = None, event: Event = N
stylesheet = []
font = get_fonts(event)[font_name]
for sty, formats in font.items():
if sty in ['sample', 'pdf_only']:
if sty == 'sample':
continue
stylesheet.append('@font-face { ')
stylesheet.append('font-family: "{}";'.format(font_name))
-1
View File
@@ -795,7 +795,6 @@ class WidgetAPIProductList(EventListMixin, View):
'target_url': eventreverse_absolute(request.event, 'presale:event.index'),
'subevent': self.subevent.pk if self.subevent else None,
'currency': request.event.currency,
'currency_places': settings.CURRENCY_PLACES.get(request.event.currency, 2),
'display_net_prices': request.event.settings.display_net_prices,
'use_native_spinners': request.event.settings.widget_use_native_spinners,
'show_variations_expanded': request.event.settings.show_variations_expanded,
@@ -380,16 +380,16 @@ Vue.component('pricebox', {
},
display_price: function () {
if (this.$root.display_net_prices) {
return floatformat(this.price.net, this.$root.currency_places);
return floatformat(parseFloat(this.price.net), 2);
} else {
return floatformat(this.price.gross, this.$root.currency_places);
return floatformat(parseFloat(this.price.gross), 2);
}
},
display_price_nonlocalized: function () {
if (this.$root.display_net_prices) {
return parseFloat(this.price.net).toFixed(this.$root.currency_places);
return parseFloat(this.price.net).toFixed(2);
} else {
return parseFloat(this.price.gross).toFixed(this.$root.currency_places);
return parseFloat(this.price.gross).toFixed(2);
}
},
suggested_price_nonlocalized: function () {
@@ -398,9 +398,9 @@ Vue.component('pricebox', {
price = this.price;
}
if (this.$root.display_net_prices) {
return parseFloat(price.net).toFixed(this.$root.currency_places);
return parseFloat(price.net).toFixed(2);
} else {
return parseFloat(price.gross).toFixed(this.$root.currency_places);
return parseFloat(price.gross).toFixed(2);
}
},
original_price_aria_label: function () {
@@ -410,7 +410,7 @@ Vue.component('pricebox', {
return django.interpolate(strings.new_price, [this.stripHTML(this.priceline)]);
},
original_line: function () {
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + floatformat(this.original_price, this.$root.currency_places);
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + floatformat(parseFloat(this.original_price), 2);
},
priceline: function () {
if (this.price.gross === "0.00") {
@@ -645,19 +645,19 @@ Vue.component('item', {
if (this.item.free_price) {
return django.interpolate(strings.price_from, {
'currency': this.$root.currency,
'price': floatformat(this.item.min_price, this.$root.currency_places)
'price': floatformat(this.item.min_price, 2)
}, true).replace(this.$root.currency, '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + '</span>');
} else if (this.item.min_price !== this.item.max_price) {
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> "
+ floatformat(this.item.min_price, this.$root.currency_places) + " "
+ floatformat(this.item.max_price, this.$root.currency_places);
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> "
+ floatformat(this.item.min_price, 2) + " "
+ floatformat(this.item.max_price, 2);
} else if (this.item.min_price === "0.00" && this.item.max_price === "0.00") {
if (this.item.mandatory_priced_addons) {
return "\xA0"; // nbsp, because an empty string would cause the HTML element to collapse
}
return strings.free;
} else {
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + floatformat(this.item.min_price, this.$root.currency_places);
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + floatformat(this.item.min_price, 2);
}
},
variationsToggleLabel: function () {
@@ -1949,7 +1949,6 @@ var shared_root_methods = {
root.location = data.location;
root.categories = data.items_by_category;
root.currency = data.currency;
root.currency_places = data.currency_places;
root.display_net_prices = data.display_net_prices;
root.voucher_explanation_text = data.voucher_explanation_text;
root.error = data.error;
@@ -1984,7 +1983,6 @@ var shared_root_methods = {
}, function (error) {
root.categories = [];
root.currency = '';
root.currency_places = 2;
if (error.status === 429) {
root.error = strings['loading_error_429'];
root.connection_error = true;
@@ -2341,7 +2339,6 @@ var create_widget = function (element, html_id=null) {
is_button: false,
categories: null,
currency: null,
currency_places: 2,
name: null,
date_range: null,
location: null,
@@ -22,7 +22,6 @@ export interface ProductListResponse {
location?: string
items_by_category?: Category[]
currency?: string
currency_places?: number
display_net_prices?: boolean
voucher_explanation_text?: string
error?: string
@@ -72,7 +72,7 @@ const pricerange = computed(() => {
STRINGS.price_from,
{
currency: store.currency,
price: floatformat(props.item.min_price || '0', store.currency_places),
price: floatformat(props.item.min_price || '0', 2),
},
true
).replace(
@@ -80,14 +80,14 @@ const pricerange = computed(() => {
`<span class="pretix-widget-pricebox-currency">${store.currency}</span>`
)
} else if (props.item.min_price !== props.item.max_price) {
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(props.item.min_price || '0', store.currency_places)} ${floatformat(props.item.max_price || '0', store.currency_places)}`
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(props.item.min_price || '0', 2)} ${floatformat(props.item.max_price || '0', 2)}`
} else if (props.item.min_price === '0.00' && props.item.max_price === '0.00') {
if (props.item.mandatory_priced_addons) {
return '\xA0' // nbsp, because an empty string would cause the HTML element to collapse
}
return STRINGS.free
} else {
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(props.item.min_price || '0', store.currency_places)}`
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(props.item.min_price || '0', 2)}`
}
})
@@ -25,9 +25,9 @@ const ariaLabelledby = computed(() => `${store.htmlId}-item-label-${props.itemId
const displayPrice = computed(() => {
if (store.displayNetPrices) {
return floatformat(props.price.net, store.currency_places)
return floatformat(parseFloat(props.price.net), 2)
}
return floatformat(props.price.gross, store.currency_places)
return floatformat(parseFloat(props.price.gross), 2)
})
const displayPriceNonlocalized = computed(() => {
@@ -40,15 +40,15 @@ const displayPriceNonlocalized = computed(() => {
const suggestedPriceNonlocalized = computed(() => {
const price = props.suggestedPrice ?? props.price
if (store.displayNetPrices) {
return parseFloat(price.net).toFixed(store.currency_places)
return parseFloat(price.net).toFixed(2)
}
return parseFloat(price.gross).toFixed(store.currency_places)
return parseFloat(price.gross).toFixed(2)
})
// TODO BAD
const originalLine = computed(() => {
if (!props.originalPrice) return ''
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(props.originalPrice, store.currency_places)}`
return `<span class="pretix-widget-pricebox-currency">${store.currency}</span> ${floatformat(parseFloat(props.originalPrice), 2)}`
})
// TODO BAD
@@ -71,7 +71,6 @@ export function createWidgetStore (config: {
frontpageText: null as string | null,
categories: [] as Category[],
currency: '',
currency_places: 2,
displayNetPrices: false,
voucherExplanationText: null as string | null,
displayAddToCart: false,
@@ -300,7 +299,6 @@ export function createWidgetStore (config: {
this.location = data.location ?? null
this.categories = data.items_by_category ?? []
this.currency = data.currency ?? ''
this.currency_places = data.currency_places ?? 2
this.displayNetPrices = data.display_net_prices ?? false
this.voucherExplanationText = data.voucher_explanation_text ?? null
this.error = data.error ?? null
@@ -340,7 +338,6 @@ export function createWidgetStore (config: {
} catch (e) {
this.categories = []
this.currency = ''
this.currency_places = 2
if (e instanceof ApiError && e.status === 429) {
this.error = STRINGS.loading_error_429
} else {
-4
View File
@@ -173,7 +173,6 @@ class WidgetCartTest(CartTestMixin, TestCase):
"frontpage_text": "",
"location": "",
"currency": "EUR",
"currency_places": 2,
"show_variations_expanded": False,
"display_net_prices": False,
"use_native_spinners": False,
@@ -380,7 +379,6 @@ class WidgetCartTest(CartTestMixin, TestCase):
"frontpage_text": "",
"location": "",
"currency": "EUR",
"currency_places": 2,
"show_variations_expanded": False,
"display_net_prices": False,
"use_native_spinners": False,
@@ -441,7 +439,6 @@ class WidgetCartTest(CartTestMixin, TestCase):
"frontpage_text": "",
"location": "",
"currency": "EUR",
"currency_places": 2,
"show_variations_expanded": False,
"display_net_prices": False,
"use_native_spinners": False,
@@ -527,7 +524,6 @@ class WidgetCartTest(CartTestMixin, TestCase):
"frontpage_text": "",
"location": "",
"currency": "EUR",
"currency_places": 2,
'poweredby': '<a href="https://pretix.eu" target="_blank" rel="noopener">ticketing powered by pretix</a>',
"show_variations_expanded": False,
"display_net_prices": False,