[18.0][website_sale_empty_cart] TypeError on /shop/cart when website_sale_loyalty is installed

オープン 初心者向け
#1,237 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
python
領域
backend, web-dev

調査の方向性

website_sale_empty_cart/controllers/main.py の cart メソッドから始め、親コントローラーの呼び出し方を確認してください。website_sale_loyalty がインストールされている場合に関係する cart のオーバーライドを確認し、記載されたモジュールのインストール手順で問題を再現してください。/shop/cart がレンダリングされ、empty_cart パラメーターの有無にかかわらず空のカートのアクションが動作すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

bug
Module

website_sale_empty_cart (18.0)

Odoo version

18.0

Current behavior

Accessing /shop/cart raises:

TypeError: WebsiteSale.cart() takes 1 positional argument but 3 were given

Expected behavior

Cart page should render normally, and empty-cart action should work.

Steps to reproduce
  1. Install website_sale
  2. Install website_sale_empty_cart
  3. Install website_sale_loyalty
  4. Go to /shop/cart
  5. Trigger cart route (with or without empty_cart param)
Traceback

Traceback (most recent call last):
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/http.py", line 2167, in _transactioning
return service_model.retrying(func, env=self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/service/model.py", line 157, in retrying
result = func()
^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/http.py", line 2134, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/http.py", line 2295, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/http.py", line 754, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/extra-addons/e-commerce.git-6916c9356ea0f/website_sale_empty_cart/controllers/main.py", line 18, in cart
return super().cart(access_token, revive, **post)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/odoo/staging-ordonnanceur.odoo.kiub.fr/src/odoo/http.py", line 754, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: WebsiteSale.cart() takes 1 positional argument but 3 were given

Analysis

website_sale_empty_cart calls parent with positional args:
super().cart(access_token, revive, **post)

In a stack where another controller override defines cart as kwargs-only (e.g. loyalty override), this fails with the positional-argument TypeError.

Proposed fix

Use keyword arguments when calling super:
super().cart(access_token=access_token, revive=revive, **post)

This is compatible with both parent signatures.

主要言語
HTML
スター
206
フォーク
578
平均マージ
4日 7時間
マージ済み PR(30日)
10

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

OCA/e-commerce のほかの issue

OCA/e-commerce の issue をすべて見る

似ている issue

Backend & API Design の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。