Skip to content

Commit

Permalink
[UPD] Code refactoring to ease addons customization
Browse files Browse the repository at this point in the history
  • Loading branch information
Stéphan Sainléger authored and Nicolas JEUDY committed May 16, 2022
1 parent bb874d7 commit 1cc3135
Show file tree
Hide file tree
Showing 8 changed files with 257 additions and 233 deletions.
4 changes: 3 additions & 1 deletion lcc_members_portal/controllers/auth_signup.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@ def do_signup(self, qcontext):

if qcontext.get("firstname") or qcontext.get("lastname"):
"""Shared helper that creates a res.partner out of a token"""
# The only change compared to the parent function is the addition of the keys of the new field
# Addition of the keys of the new fields
values = {
key: qcontext.get(key)
for key in ("login", "lastname", "password", "firstname")
}
# Name computation depending on the values
if qcontext.get("firstname") and qcontext.get("lastname"):
values["name"] = (
qcontext.get("firstname") + " " + qcontext.get("lastname")
Expand All @@ -31,6 +32,7 @@ def do_signup(self, qcontext):
values["name"] = qcontext.get("firstname")
elif qcontext.get("lastname"):
values["name"] = qcontext.get("lastname")
# Next lines are the same than in parent function
if not values:
raise UserError(_("The form was not properly filled in."))
if values.get("password") != qcontext.get("confirm_password"):
Expand Down
1 change: 1 addition & 0 deletions lcc_members_portal/controllers/custom_portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class CustomCustomerPortal(CustomerPortal):
@route(["/my/account"], type="http", auth="user", website=True)
def account(self, redirect=None, **post):
response = super(CustomCustomerPortal, self).account(redirect, **post)
# If email is modified, the user is logged out
if post and request.httprequest.method == "POST":
error, error_message = self.details_form_validate(post)
if not error:
Expand Down
49 changes: 25 additions & 24 deletions lcc_members_portal/controllers/portal_affiliation_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from odoo.addons.portal.controllers.portal import CustomerPortal


class PortalOrganizationRegistration(CustomerPortal):
class PortalOrganizationAffiliation(CustomerPortal):
_AFFILIATION_REQUEST_FIELDS = [
"company_name",
"function",
Expand Down Expand Up @@ -38,11 +38,9 @@ def _affiliation_get_page_view_values(self, partner, access_token, **kwargs):
)
def portal_affiliation_request(self, access_token=None, redirect=None, **kw):
partner = request.env.user.partner_id

values = self._affiliation_get_page_view_values(partner, access_token, **kw)
error = dict()
error_message = []

values.update(
{
"error": error,
Expand All @@ -51,6 +49,28 @@ def portal_affiliation_request(self, access_token=None, redirect=None, **kw):
)
return request.render("lcc_members_portal.portal_affiliation_request", values)

def _compute_affiliation_form_data(self, data):
partner = request.env.user.partner_id
values = {
"partner_id": partner.id,
"type": "opportunity",
"lead_type": "affiliation_request",
"edit_structure_main_profile": data.get("manage_main_profile", "off")
== "on",
"edit_structure_public_profile": data.get("manage_public_profile", "off")
== "on",
}
for field in self._AFFILIATION_REQUEST_FIELDS:
if data.get(field):
values[field] = data.pop(field)
for field in self._EXTRA_FIELDS:
if data.get(field):
values[field] = data.pop(field)
values["name"] = (
"[AFFILIATION] " + partner.name + " in " + values["company_name"]
)
return values

@http.route(
["/affiliation/send_request"],
type="http",
Expand All @@ -59,26 +79,7 @@ def portal_affiliation_request(self, access_token=None, redirect=None, **kw):
)
def send_affiliation_request(self, **kwargs):
# Create a new lead
values = {}
for field in self._AFFILIATION_REQUEST_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
for field in self._EXTRA_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
partner = request.env.user.partner_id
values["name"] = (
"[AFFILIATION] " + partner.name + " in " + values["company_name"]
)
values["partner_id"] = partner.id
values["type"] = "opportunity"
values["lead_type"] = "affiliation_request"
values["edit_structure_main_profile"] = (
kwargs.get("manage_main_profile", "off") == "on"
)
values["edit_structure_public_profile"] = (
kwargs.get("manage_public_profile", "off") == "on"
)
values = self._compute_affiliation_form_data(kwargs)
lead = request.env["crm.lead"].sudo().create(values)
lead.team_id = partner.team_id
lead.team_id = request.env.user.partner_id.team_id
return request.render("lcc_members_portal.portal_affiliation_request_saved", {})
70 changes: 39 additions & 31 deletions lcc_members_portal/controllers/portal_organization_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,44 @@ def portal_organization_registration(self, access_token=None, redirect=None, **k
"lcc_members_portal.portal_organization_registration", values
)

def _compute_organization_form_data(self, data):
partner = request.env.user.partner_id
values = {
"partner_id": partner.id,
"company_id": partner.company_id.id,
"type": "opportunity",
"lead_type": "membership_web_application",
"accept_coupons": data.get("accept_coupons", "off") == "on",
"accept_digital_currency": data.get("accept_digital_currency", "off")
== "on",
"itinerant": data.get("itinerant", "off") == "on",
"want_newsletter_subscription": data.get(
"want_newsletter_subscription", "off"
)
== "on",
"accept_policy": data.get("accept_policy", "off") == "on",
}

if float(data.get("total_membership", False)):
values["total_membership"] = float(data.get("total_membership"))
else:
values[
"total_membership"
] = self.get_organization_membership_product().list_price

for field in self._ORGANIZATION_REGISTRATION_FIELDS:
if data.get(field):
values[field] = data.pop(field)
for field in self._EXTRA_FIELDS:
if data.get(field):
values[field] = data.pop(field)

values["name"] = "[NEW APPLICATION] " + values["company_name"]
values.update({"zip": values.pop("zipcode", "")})
values.update({"website": values.pop("website_url", "")})

return values

@http.route(
["/membership/send_request"],
type="http",
Expand All @@ -113,37 +151,7 @@ def portal_organization_registration(self, access_token=None, redirect=None, **k
)
def send_registration_request(self, **kwargs):
# Create a new lead
values = {}
for field in self._ORGANIZATION_REGISTRATION_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
for field in self._EXTRA_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
values["name"] = "[NEW APPLICATION] " + values["company_name"]
main_partner = request.env.user.partner_id
values["partner_id"] = main_partner.id
values["company_id"] = main_partner.company_id.id
values["type"] = "opportunity"
values["lead_type"] = "membership_web_application"
values.update({"zip": values.pop("zipcode", "")})
values.update({"website": values.pop("website_url", "")})
values["accept_coupons"] = kwargs.get("accept_coupons", "off") == "on"
values["accept_digital_currency"] = (
kwargs.get("accept_digital_currency", "off") == "on"
)
values["itinerant"] = kwargs.get("itinerant", "off") == "on"
values["want_newsletter_subscription"] = (
kwargs.get("want_newsletter_subscription", "off") == "on"
)
values["accept_policy"] = kwargs.get("accept_policy", "off") == "on"
if float(kwargs.get("total_membership", False)):
values["total_membership"] = float(kwargs.get("total_membership"))
else:
values[
"total_membership"
] = self.get_organization_membership_product().list_price

values = self._compute_organization_form_data(kwargs)
lead = request.env["crm.lead"].sudo().create(values)
lead.team_id = kwargs.pop(
"team_id"
Expand Down
72 changes: 40 additions & 32 deletions lcc_members_portal/controllers/portal_organization_renewal.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,44 @@ def portal_organization_renewal(self, access_token=None, redirect=None, **kw):
)
return request.render("lcc_members_portal.portal_organization_renewal", values)

def _compute_renewal_form_data(self, data):
partner = request.env.user.partner_id
values = {
"partner_id": partner.id,
"company_id": partner.company_id.id,
"type": "opportunity",
"lead_type": "renewal_request",
"accept_coupons": data.get("accept_coupons", "off") == "on",
"accept_digital_currency": data.get("accept_digital_currency", "off")
== "on",
"itinerant": data.get("itinerant", "off") == "on",
"want_newsletter_subscription": data.get(
"want_newsletter_subscription", "off"
)
== "on",
"accept_policy": data.get("accept_policy", "off") == "on",
}

if float(data.get("total_membership", False)):
values["total_membership"] = float(data.get("total_membership"))
else:
values[
"total_membership"
] = self.get_organization_membership_product().list_price

for field in self._ORGANIZATION_RENEWAL_FIELDS:
if data.get(field):
values[field] = data.pop(field)
for field in self._EXTRA_FIELDS:
if data.get(field):
values[field] = data.pop(field)

values["name"] = ("[RENEWAL] " + values["company_name"],)
values.update({"zip": values.pop("zipcode", "")})
values.update({"website": values.pop("website_url", "")})

return values

@http.route(
["/membership/organization_renewal_request"],
type="http",
Expand All @@ -85,39 +123,9 @@ def portal_organization_renewal(self, access_token=None, redirect=None, **kw):
)
def send_renewal_request(self, **kwargs):
# Create a new lead
values = {}
for field in self._ORGANIZATION_RENEWAL_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
for field in self._EXTRA_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
values["name"] = "[RENEWAL] " + values["company_name"]
main_partner = request.env.user.partner_id
values["partner_id"] = main_partner.id
values["company_id"] = main_partner.company_id.id
values["type"] = "opportunity"
values["lead_type"] = "renewal_request"
values.update({"zip": values.pop("zipcode", "")})
values.update({"website": values.pop("website_url", "")})
values["accept_coupons"] = kwargs.get("accept_coupons", "off") == "on"
values["accept_digital_currency"] = (
kwargs.get("accept_digital_currency", "off") == "on"
)
values["itinerant"] = kwargs.get("itinerant", "off") == "on"
values["want_newsletter_subscription"] = (
kwargs.get("want_newsletter_subscription", "off") == "on"
)
values["accept_policy"] = kwargs.get("accept_policy", "off") == "on"
if float(kwargs.get("total_membership", False)):
values["total_membership"] = float(kwargs.get("total_membership"))
else:
values[
"total_membership"
] = self.get_organization_membership_product().list_price

values = self._compute_renewal_form_data(kwargs)
lead = request.env["crm.lead"].sudo().create(values)
lead.team_id = main_partner.team_id
lead.team_id = request.env.user.partner_id.team_id
return request.render(
"lcc_members_portal.portal_organization_renewal_saved", {}
)
34 changes: 19 additions & 15 deletions lcc_members_portal/controllers/portal_private_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,31 +80,35 @@ def portal_private_registration(self, access_token=None, redirect=None, **kw):
)
return request.render("lcc_members_portal.portal_private_registration", values)

@http.route(
["/membership/subscribe_member"],
type="http",
auth="public",
website=True,
)
def membership_subscription(self, **kwargs):
# Update the partner data
main_partner = request.env.user.partner_id
def _compute_private_form_data(self, data):
values = {}
for field in self._PRIVATE_REGISTRATION_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
if data.get(field):
values[field] = data.pop(field)
for field in self._EXTRA_FIELDS:
if kwargs.get(field):
values[field] = kwargs.pop(field)
if data.get(field):
values[field] = data.pop(field)
values["lastname"] = values["lastname"].upper()
values["firstname"] = values["firstname"].title()
values["name"] = values["firstname"] + " " + values["lastname"]
values.update({"zip": values.pop("zipcode", "")})

values["want_newsletter_subscription"] = (
kwargs.get("want_newsletter_subscription", "off") == "on"
data.get("want_newsletter_subscription", "off") == "on"
)
values["accept_policy"] = kwargs.get("accept_policy", "off") == "on"
values["accept_policy"] = data.get("accept_policy", "off") == "on"
return values

@http.route(
["/membership/subscribe_member"],
type="http",
auth="public",
website=True,
)
def membership_subscription(self, **kwargs):
# Update the partner data
main_partner = request.env.user.partner_id
values = self._compute_private_form_data(kwargs)
main_partner.sudo().write(values)

# Create sale order to finalize the registration process
Expand Down
Loading

0 comments on commit 1cc3135

Please sign in to comment.