add website_membership_signup_required: force to create user before add to cart a membership product
This commit is contained in:
parent
80f24bcc46
commit
c4d32c6add
22 changed files with 1202 additions and 0 deletions
33
website_membership_signup_required/models/website.py
Normal file
33
website_membership_signup_required/models/website.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class Website(models.Model):
|
||||
_inherit = "website"
|
||||
|
||||
membership_signup_required = fields.Boolean(
|
||||
string="Force signup for membership products",
|
||||
help="When enabled, anonymous users trying to add a membership product "
|
||||
"to cart are redirected to /web/signup before the product is "
|
||||
"added. Only affects the e-commerce flow.",
|
||||
default=True,
|
||||
)
|
||||
|
||||
def _membership_signup_required_for(self, product_id, is_public):
|
||||
"""Decide whether the given `product_id` requires forcing a signup
|
||||
step before it can be added to cart by an anonymous visitor.
|
||||
|
||||
Centralised here (model layer) so it can be unit-tested without HTTP
|
||||
and reused by future extensions. The controller delegates to this
|
||||
helper.
|
||||
"""
|
||||
self.ensure_one()
|
||||
if not self.membership_signup_required:
|
||||
return False
|
||||
if not is_public:
|
||||
return False
|
||||
if not product_id:
|
||||
return False
|
||||
product = self.env["product.product"].sudo().browse(int(product_id)).exists()
|
||||
return bool(product and product.product_tmpl_id.membership)
|
||||
Loading…
Add table
Add a link
Reference in a new issue