Skip to content
Snippets Groups Projects

Feature/company data public form

Merged Dani Quilez requested to merge feature/company-data-public-form into dev
Files
5
@@ -260,6 +260,7 @@ class WebsiteCommunityData(http.Controller):
def _get_langs(self):
return (
request.env["res.lang"]
.sudo()
.search([("active", "=", 1)])
.mapped(lambda r: {"id": r.code, "name": r.name})
)
@@ -267,6 +268,7 @@ class WebsiteCommunityData(http.Controller):
def _get_energy_service_tags(self):
return (
request.env["crm.tag"]
.sudo()
.search([("tag_type", "=", "energy_service")])
.mapped(
lambda r: {
@@ -286,6 +288,7 @@ class WebsiteCommunityData(http.Controller):
def _get_energy_service_tag_ids(self):
return (
request.env["crm.tag"]
.sudo()
.search([("tag_type", "=", "energy_service")])
.mapped(lambda r: r.tag_ext_id.replace("energy_communities.", ""))
)
@@ -356,6 +359,8 @@ class WebsiteCommunityData(http.Controller):
):
values["ce_state"] = False
# energy_services selection
if "ce_services" not in values.keys() or values["ce_services"] == "":
values["ce_services"] = []
values["energy_service_options"] = self._get_energy_service_tags()
# community_status selection
values["yes_no_options"] = _YES_NO_OPTIONS
@@ -375,6 +380,12 @@ class WebsiteCommunityData(http.Controller):
] = _COMMUNITY_CONSTITUTION_STATUS_OPTIONS
# community_legal_form selection
values["community_legal_form_options"] = self._get_legal_forms()
# image preselection from db (if necessary)
for image_field_key in _COMMUNITY_DATA__IMAGE_FIELDS.keys():
if image_field_key not in values.keys():
lead_values = self._get_lead_values(values["lead_id"])
if image_field_key in lead_values:
values[image_field_key] = lead_values[image_field_key]
# form/messages visibility
values["display_success"] = display_success
values["display_form"] = display_form
@@ -438,6 +449,13 @@ class WebsiteCommunityData(http.Controller):
if "error_msgs" in values.keys():
return request.render("energy_communities.community_data_page", values)
# ce_services validation
if "ce_services" not in values.keys():
error.append("ce_services")
error_msgs.append(
"Please select at least one Energy service in order to submit the form"
)
# image validation
for image_field_key in _COMMUNITY_DATA__IMAGE_FIELDS.keys():
if image_field_key in values.keys():
@@ -488,16 +506,40 @@ class WebsiteCommunityData(http.Controller):
# DATA PROCESSING
#
def _process_lead_metadata(self, values):
changed_data = []
related_lead = (
request.env["crm.lead"].sudo().search([("id", "=", values["lead_id"])])
)
for meta_key in _COMMUNITY_DATA__GENERAL_FIELDS.keys():
if meta_key in values.keys():
related_lead.create_update_metadata(meta_key, values[meta_key])
changed = related_lead.create_update_metadata(
meta_key, values[meta_key]
)
if changed:
changed_data.append(meta_key)
for meta_key in _COMMUNITY_DATA__IMAGE_FIELDS.keys():
if meta_key in values.keys():
attachment = self._create_attachment(related_lead, values[meta_key])
related_lead.create_update_metadata(meta_key, attachment.id)
changed = related_lead.create_update_metadata(meta_key, attachment.id)
if changed:
changed_data.append(meta_key)
# notification message
if bool(changed_data):
changed_data_msg_body = "<h6>{}</h6><ul>".format(
_("Public community data changed:")
)
for meta_key in changed_data:
changed_data_msg_body += "<li>{label}: {value}</li>".format(
label=_COMMUNITY_DATA__FIELDS[meta_key], value=values[meta_key]
)
changed_data_msg_body += "</ul>"
related_lead.sudo().message_post(
subject="{} public form submission".format(related_lead.name),
body=changed_data_msg_body,
subtype_id=None,
message_type="notification",
subtype_xmlid="mail.mt_comment",
)
def _create_attachment(self, lead, value):
return (
Loading