Skip to content
Snippets Groups Projects

Feature/close form

Merged Dani Quilez requested to merge feature/close-form into dev
Files
3
@@ -295,11 +295,13 @@ class WebsiteCommunityData(http.Controller):
@@ -295,11 +295,13 @@ class WebsiteCommunityData(http.Controller):
)
)
def _is_lead_pack(self, lead_id, pack_tag_ext_id):
def _is_lead_pack(self, lead_id, pack_tag_ext_id):
lead = request.env["crm.lead"].sudo().search([("id", "=", lead_id)])[0]
leads = request.env["crm.lead"].sudo().search([("id", "=", lead_id)])
pack_tag = lead.tag_ids.filtered(
if leads:
lambda tag: tag.tag_ext_id == "energy_communities." + pack_tag_ext_id
lead = leads[0]
)
pack_tag = lead.tag_ids.filtered(
return bool(pack_tag)
lambda tag: tag.tag_ext_id == "energy_communities." + pack_tag_ext_id
 
)
 
return bool(pack_tag)
def _get_energy_service_tag_ids(self):
def _get_energy_service_tag_ids(self):
return (
return (
@@ -326,33 +328,38 @@ class WebsiteCommunityData(http.Controller):
@@ -326,33 +328,38 @@ class WebsiteCommunityData(http.Controller):
return legal_forms
return legal_forms
def _get_lead_values(self, lead_id):
def _get_lead_values(self, lead_id):
lead_values = {}
leads = request.env["crm.lead"].sudo().search([("id", "=", lead_id)])
lead = request.env["crm.lead"].sudo().search([("id", "=", lead_id)])[0]
lead_values = {"closed_lead": False}
for field_key in _COMMUNITY_DATA__GENERAL_FIELDS.keys():
if leads:
meta_line = lead.metadata_line_ids.filtered(
lead = leads[0]
lambda meta_data_line: meta_data_line.key == field_key
if lead.probability >= 100 or lead.stage_id.is_won:
)
lead_values["closed_lead"] = True
if meta_line:
lead_values[field_key] = meta_line.value
for field_key in _COMMUNITY_DATA__GENERAL_FIELDS.keys():
for field_key in _COMMUNITY_DATA__IMAGE_FIELDS.keys():
meta_line = lead.metadata_line_ids.filtered(
meta_line = lead.metadata_line_ids.filtered(
lambda meta_data_line: meta_data_line.key == field_key
lambda meta_data_line: meta_data_line.key == field_key
)
if meta_line:
attachment = (
request.env["ir.attachment"]
.sudo()
.search([("id", "=", meta_line.value)])
)
)
if attachment:
if meta_line:
lead_values[
lead_values[field_key] = meta_line.value
field_key
for field_key in _COMMUNITY_DATA__IMAGE_FIELDS.keys():
] = "{base_url}/web/image/{attachment_id}".format(
meta_line = lead.metadata_line_ids.filtered(
base_url=request.env["ir.config_parameter"]
lambda meta_data_line: meta_data_line.key == field_key
 
)
 
if meta_line:
 
attachment = (
 
request.env["ir.attachment"]
.sudo()
.sudo()
.get_param("web.base.url"),
.search([("id", "=", meta_line.value)])
attachment_id=attachment.id,
)
)
 
if attachment:
 
lead_values[
 
field_key
 
] = "{base_url}/web/image/{attachment_id}".format(
 
base_url=request.env["ir.config_parameter"]
 
.sudo()
 
.get_param("web.base.url"),
 
attachment_id=attachment.id,
 
)
return lead_values
return lead_values
#
#
@@ -431,39 +438,64 @@ class WebsiteCommunityData(http.Controller):
@@ -431,39 +438,64 @@ class WebsiteCommunityData(http.Controller):
# form/messages visibility
# form/messages visibility
values["display_success"] = display_success
values["display_success"] = display_success
values["display_form"] = display_form
values["display_form"] = display_form
 
values["closed_form"] = False
 
# if lead is won close form
 
if "closed_lead" in values.keys():
 
values["closed_form"] = values["closed_lead"]
return values
return values
#
#
# VALIDATION
# VALIDATION
#
#
def _lead_id_validation(self, values):
def _lead_id_validation(self, values):
 
# lead_id not defined
values["lead_id"] = values.get("lead_id", False)
values["lead_id"] = values.get("lead_id", False)
if not values["lead_id"]:
if not values["lead_id"]:
values["error_msgs"] = [
return {
_("lead_id param must be defined on the url in order to use the form")
"error_msgs": [
]
_(
values = self._fill_values(values, False, False)
"lead_id param must be defined on the url in order to use the form"
return values
)
 
],
 
"global_error": True,
 
}
 
# lead_id numeric
try:
try:
values["lead_id"] = int(values["lead_id"])
values["lead_id"] = int(values["lead_id"])
except ValueError:
except ValueError:
values["error_msgs"] = [
return {
_("lead_id must be defined on the url as a numeric value")
"error_msgs": [
]
_("lead_id must be defined on the url as a numeric value")
values = self._fill_values(values, False, False)
],
return values
"global_error": True,
}
 
# lead_id not lost
 
related_lead = (
 
request.env["crm.lead"]
 
.sudo()
 
.search([("active", "=", False), ("id", "=", values["lead_id"])])
 
)
 
if related_lead:
 
return {
 
"error_msgs": [_("Related Lead closed.")],
 
"ce_name": related_lead.name,
 
"display_success": False,
 
"display_form": False,
 
"closed_form": True,
 
}
 
# lead_id not found
related_lead = (
related_lead = (
request.env["crm.lead"].sudo().search([("id", "=", values["lead_id"])])
request.env["crm.lead"].sudo().search([("id", "=", values["lead_id"])])
)
)
if not related_lead:
if not related_lead:
values["error_msgs"] = [
return {
_(
"error_msgs": [
"Related Lead not found. The url is not correct. lead_id param invalid."
_(
)
"Related Lead not found. The url is not correct. lead_id param invalid."
]
)
values = self._fill_values(values, False, False)
],
return values
"global_error": True,
 
}
return values
return values
def _validate_regex(self, value, regex_string):
def _validate_regex(self, value, regex_string):
Loading