Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions partner_segmentation/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
],
"data": [
"security/ir.model.access.csv",
"data/partner_segmentation_links.xml",
"data/partner_segmentation_data.xml",
"data/partner_segmentation_survey.xml",
"views/survey_view.xml",
Expand Down
450 changes: 80 additions & 370 deletions partner_segmentation/data/partner_segmentation_data.xml

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions partner_segmentation/data/partner_segmentation_links.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record
Comment on lines +2 to +3
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a clear candidate for noupdate as we don't wan't to maintain the module data while the users could edit the links or the resources from the user interface.

Suggested change
<odoo>
<record
<odoo>
<data noupdate="1">
<record

id="segment_link_latest_updates_fr"
model="res.partner.segment.link"
>
<field name="label">Latest Updates (FR)</field>
<field name="url">https://compassion.ch/news/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record
id="segment_link_latest_updates_de"
model="res.partner.segment.link"
>
<field name="label">Latest Updates (DE)</field>
<field name="url">https://compassion.ch/de/neues/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record
id="segment_link_latest_updates_it"
model="res.partner.segment.link"
>
<field name="label">Latest Updates (IT)</field>
<field name="url">https://compassion.ch/it/notizie/</field>
<field name="language_id" ref="base.lang_it" />
</record>

<record id="segment_link_finances_fr" model="res.partner.segment.link">
<field name="label">Finances (FR)</field>
<field name="url">https://compassion.ch/finances/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record id="segment_link_finances_de" model="res.partner.segment.link">
<field name="label">Finances (DE)</field>
<field name="url">https://compassion.ch/de/finanzen/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record id="segment_link_finances_it" model="res.partner.segment.link">
<field name="label">Finances (IT)</field>
<field name="url">https://compassion.ch/it/finanze/</field>
<field name="language_id" ref="base.lang_it" />
</record>

<record id="segment_link_volunteering_fr" model="res.partner.segment.link">
<field name="label">Volunteering (FR)</field>
<field name="url">https://compassion.ch/participer/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record id="segment_link_volunteering_de" model="res.partner.segment.link">
<field name="label">Volunteering (DE)</field>
<field name="url">https://compassion.ch/de/sich-mehr-engagieren/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record id="segment_link_volunteering_it" model="res.partner.segment.link">
<field name="label">Volunteering (IT)</field>
<field name="url">https://compassion.ch/it/participare/</field>
<field name="language_id" ref="base.lang_it" />
</record>

<record id="segment_link_support_funds_fr" model="res.partner.segment.link">
<field name="label">Support Funds (FR)</field>
<field name="url">https://compassion.ch/donations/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record id="segment_link_support_funds_de" model="res.partner.segment.link">
<field name="label">Support Funds (DE)</field>
<field name="url">https://compassion.ch/de/spenden/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record id="segment_link_support_funds_it" model="res.partner.segment.link">
<field name="label">Support Funds (IT)</field>
<field name="url">https://compassion.ch/it/donare/</field>
<field name="language_id" ref="base.lang_it" />
</record>

<record id="segment_link_facebook_fr" model="res.partner.segment.link">
<field name="label">Facebook (FR)</field>
<field name="url">https://facebook.com/compassionsuisse/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record id="segment_link_facebook_de" model="res.partner.segment.link">
<field name="label">Facebook (DE)</field>
<field name="url">https://facebook.com/compassionschweiz/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record id="segment_link_facebook_it" model="res.partner.segment.link">
<field name="label">Facebook (IT)</field>
<field name="url">https://www.facebook.com/compassionsvizzera</field>
<field name="language_id" ref="base.lang_it" />
</record>
<record id="segment_link_instagram" model="res.partner.segment.link">
<field name="label">Instagram</field>
<field name="url">https://www.instagram.com/compassionswiss/</field>
<field name="language_id" ref="base.lang_en" />
</record>
<record id="segment_link_vimeo" model="res.partner.segment.link">
<field name="label">Vimeo</field>
<field name="url">https://vimeo.com/compassionswitzerland</field>
<field name="language_id" ref="base.lang_en" />
</record>
<record id="segment_link_watch_videos" model="res.partner.segment.link">
<field name="label">Watch Videos</field>
<field name="url">https://vimeo.com/compassionswitzerland</field>
<field name="language_id" ref="base.lang_en" />
</record>

<record id="segment_link_together_project" model="res.partner.segment.link">
<field name="label">TOGETHER Project</field>
<field name="url">https://together.compassion.ch/homepage</field>
<field name="language_id" ref="base.lang_en" />
</record>
<record id="segment_link_sims_fr" model="res.partner.segment.link">
<field name="label">Step In My Shoes (FR)</field>
<field
name="url"
>https://compassion.ch/bienvenue-dans-mon-monde-philippines/</field>
<field name="language_id" ref="base.lang_fr_CH" />
</record>
<record id="segment_link_sims_de" model="res.partner.segment.link">
<field name="label">Step In My Shoes (DE)</field>
<field name="url">https://compassion.ch/de/komm-mit/</field>
<field name="language_id" ref="base.lang_de" />
</record>
<record id="segment_link_cool_de" model="res.partner.segment.link">
<field name="label">Cool (DE)</field>
<field
name="url"
>https://compassion.ch/de/sonntagschulmaterial//</field>
<field name="language_id" ref="base.lang_de" />
</record>
</odoo>
1 change: 1 addition & 0 deletions partner_segmentation/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
parter_segment_affinity,
partner_compassion,
partner_segment,
partner_segment_link,
survey,
survey_user_input,
)
9 changes: 8 additions & 1 deletion partner_segmentation/models/partner_segment.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,14 @@ class ResPartnerSegment(models.Model):
)

survey_result = fields.Html(translate=True, sanitize=False)
personalized_links = fields.Html(translate=True, sanitize=False)

link_ids = fields.One2many(
"res.partner.segment.link",
"category_id",
string="Personalized Links",
help="Useful resources for partners in this segment",
)

image = fields.Binary(help="segment illustration")

primary_partners_ids = fields.One2many(
Expand Down
45 changes: 45 additions & 0 deletions partner_segmentation/models/partner_segment_link.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
##############################################################################
#
# Copyright (C) 2026 Compassion CH (http://www.compassion.ch)
Comment thread
Danielgergely marked this conversation as resolved.
# Releasing children from poverty in Jesus' name
# @author: Daniel Gergely <dgergely@compassion.ch>
#
# The licence is in the file __manifest__.py
#
##############################################################################
from odoo import fields, models


class ResPartnerSegmentLink(models.Model):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would go beyond just "links" and think broader with this object as a useful "segment resource" available for this segment of donors. Could you please update the model accordingly?

For now we would only have links but why not including files later (documents), images or videos, etc?

Suggested change
class ResPartnerSegmentLink(models.Model):
class ResPartnerSegmentResource(models.Model):

"""
Model to store the
- URL
- Label
- Language
- Category
of a partner segmentation link, which then can be used to
provide useful links to the partners based on their segmentation
category and language.
"""

_name = "res.partner.segment.link"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
_name = "res.partner.segment.link"
_name = "res.partner.segment.resource"

_description = "Partner Segmentation Link"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
_description = "Partner Segmentation Link"
_description = "Partner Segmentation Resource"


url = fields.Char(
required=True, help="URL of the link to be provided to the partner"
)
label = fields.Char(
required=True, help="Label of the link to be provided to the partner"
)
language_id = fields.Many2one(
"res.lang",
string="Language",
help="Language of the link, used to provide the link to "
"the partner based on their language",
)
Comment on lines +28 to +39
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not using translated fields instead of adding records for every language? Translations should be added in .po files This can greatly simplify the architecture in my opinion:

Suggested change
url = fields.Char(
required=True, help="URL of the link to be provided to the partner"
)
label = fields.Char(
required=True, help="Label of the link to be provided to the partner"
)
language_id = fields.Many2one(
"res.lang",
string="Language",
help="Language of the link, used to provide the link to "
"the partner based on their language",
)
resource_type = fields.Selection(
[("url", "URL")],
default="url",
required=True,
)
resource_url = fields.Char(
required=True,
translate=True,
help="URL of the link to be provided to the partner",
)
label = fields.Char(
required=True,
translate=True,
help="Label of the link to be provided to the partner"
)

category_id = fields.Many2one(
"res.partner.segment",
string="Category",
help="Segmentation category of the link, used to provide the "
"link to the partner based on their segmentation category",
)
2 changes: 2 additions & 0 deletions partner_segmentation/security/ir.model.access.csv
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ full_access_partner_segmentation, Full access on partner segmentation,model_res_
read_access_partner_segmentation_affinity, Read access on partner segmentation affinity,model_res_partner_segment_affinity,base.group_user,1,0,0,0
read_access_partner_segmentation_affinity_portal, Read access on partner segmentation affinity,model_res_partner_segment_affinity,base.group_portal,1,0,0,0
full_access_partner_segmentation_affinity, Full access on partner segmentation affinity,model_res_partner_segment_affinity,base.group_system,1,1,1,1
read_access_res_partner_segmentation_link, Read access on partner segmentation link,model_res_partner_segment_link,base.group_user,1,0,0,0
full_access_partner_segmentation_link, Full access on partner segmentation link,model_res_partner_segment_link,base.group_system,1,1,1,1
9 changes: 8 additions & 1 deletion partner_segmentation/views/partner_segmentation_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,14 @@
</group>
<group>
<field name="survey_result" />
<field name="personalized_links" />
<field name="link_ids">
<tree editable="bottom">
<field name="label" />
<field name="url" />
<field name="language_id" />
<field name="category_id" invisible="1" />
</tree>
</field>
</group>
<group>
<group string="Primary Partners">
Expand Down