Fix etransaction_data endpoint

This commit is contained in:
Antoine Bartuccio 2025-04-15 18:50:25 +02:00
parent bc99390b25
commit 2ae9baa82f
3 changed files with 13 additions and 10 deletions

View File

@ -1,22 +1,20 @@
from ninja_extra import ControllerBase, api_controller, route
from ninja_extra.exceptions import NotFound
from ninja_extra.permissions import IsAuthenticated
from core.auth.api_permissions import CanView
from counter.models import BillingInfo
from eboutic.models import Basket
@api_controller("/etransaction", permissions=[IsAuthenticated])
@api_controller("/etransaction", permissions=[CanView])
class EtransactionInfoController(ControllerBase):
@route.get("/data", url_name="etransaction_data")
def fetch_etransaction_data(self):
@route.get("/data/{basket_id}", url_name="etransaction_data")
def fetch_etransaction_data(self, basket_id: int):
"""Generate the data to pay an eboutic command with paybox.
The data is generated with the basket that is used by the current session.
"""
basket = Basket.from_session(self.context.request.session)
if basket is None:
raise NotFound
basket: Basket = self.get_object_or_exception(Basket, pk=basket_id)
try:
return dict(basket.get_e_transaction_data())
except BillingInfo.DoesNotExist as e:

View File

@ -1,13 +1,18 @@
import { etransactioninfoFetchEtransactionData } from "#openapi";
document.addEventListener("alpine:init", () => {
Alpine.data("etransaction", (initialData) => ({
Alpine.data("etransaction", (initialData, basketId: number) => ({
data: initialData,
isCbAvailable: Object.keys(initialData).length > 0,
async fill() {
this.isCbAvailable = false;
const res = await etransactioninfoFetchEtransactionData();
const res = await etransactioninfoFetchEtransactionData({
path: {
// biome-ignore lint/style/useNamingConvention: api is in snake_case
basket_id: basketId,
},
});
if (res.response.ok) {
this.data = res.data;
this.isCbAvailable = true;

View File

@ -19,7 +19,7 @@
let billingInfos = {{ billing_infos|safe }};
</script>
<div x-data="etransaction(billingInfos)">
<div x-data="etransaction(billingInfos, {{ basket.id }})">
<p>{% trans %}Basket: {% endtrans %}</p>
<table>
<thead>