Skip to content
Closed
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
16 changes: 16 additions & 0 deletions membership_group/data/membership_group_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,20 @@
<field name="voting_group" eval="True" />
</record>

<record id="demo_membership_group_board" model="membership.group">
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.

2026-05-05 13:22:31,204 153951 WARNING 18-members-group-pages-abdel-2 odoo.modules.loading: Module membership_group demo data failed to install, installed without demo data 
Traceback (most recent call last):
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/modules/loading.py", line 90, in load_demo
    load_data(env(su=True), idref, mode, kind='demo', package=package)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/modules/loading.py", line 72, in load_data
    tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 662, in convert_file
    convert_xml_import(env, module, fp, idref, mode, noupdate)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 733, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 648, in parse
    self._tag_root(de)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 601, in _tag_root
    raise ParseError(msg) from None  # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
odoo.tools.convert.ParseError: while parsing /home/tarteo/dev/addons-curq-18/membership_group/data/membership_group_demo.xml:25
Only one voting group is allowed

View error context:
'-no context-'

<field name="name">Board of Directors</field>
</record>

<record id="demo_membership_group_sponsors" model="membership.group">
<field name="name">Sponsors</field>
</record>

<record id="demo_membership_group_executive_committee" model="membership.group">
<field name="name">Executive Committee</field>
</record>

<record id="demo_membership_group_advisory_board" model="membership.group">
<field name="name">Advisory Board</field>
</record>

</odoo>
148 changes: 148 additions & 0 deletions membership_group/data/res_partner_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,153 @@
]"
/>
</record>

<!-- Board of Directors Members -->
<record id="demo_partner_board_president" model="res.partner">
<field name="name">Dr. Sarah Mitchell</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_board_vice_president" model="res.partner">
<field name="name">James Anderson</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_board_secretary" model="res.partner">
<field name="name">Maria Garcia</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_board_treasurer" model="res.partner">
<field name="name">Robert Chen</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_board_member_1" model="res.partner">
<field name="name">Emily Watson</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_board_member_2" model="res.partner">
<field name="name">Michael Brown</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_board'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<!-- Sponsors -->
<record id="demo_partner_sponsor_gold" model="res.partner">
<field name="name">TechCorp Industries</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_sponsors'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_sponsor_silver" model="res.partner">
<field name="name">Green Energy Solutions</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_sponsors'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_sponsor_bronze" model="res.partner">
<field name="name">Creative Design Studio</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_sponsors'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_sponsor_startup" model="res.partner">
<field name="name">InnovateLab</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_sponsors'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_sponsor_individual" model="res.partner">
<field name="name">Patricia Johnson</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_sponsors'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<!-- Executive Committee -->
<record id="demo_partner_exec_chair" model="res.partner">
<field name="name">David Thompson</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_executive_committee'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_exec_coordinator" model="res.partner">
<field name="name">Linda Martinez</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_executive_committee'), 'type': 'committee', 'state': 'current'})
]"/>
</record>

<!-- Advisory Board -->
<record id="demo_partner_advisory_1" model="res.partner">
<field name="name">Prof. William Turner</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_advisory_board'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_advisory_2" model="res.partner">
<field name="name">Jennifer Lee</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_advisory_board'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>

<record id="demo_partner_advisory_3" model="res.partner">
<field name="name">Christopher Davis</field>
<field name="free_member" eval="True"/>
<field name="membership_group_member_ids" eval="[
(5, 0),
(0, 0, {'group_id': ref('membership_group.demo_membership_group_advisory_board'), 'type': 'collaborator', 'state': 'current'})
]"/>
</record>
</data>
</odoo>
3 changes: 1 addition & 2 deletions website_membership_group/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
from . import controllers
from . import models
from . import controllers, models
16 changes: 15 additions & 1 deletion website_membership_group/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"name": "Website Membership Group",
"category": "Membership",
"version": "18.0.1.0.0",
"version": "18.0.1.0.3",
"author": "Onestein",
"license": "AGPL-3",
"website": "https://www.onestein.nl",
Expand All @@ -13,7 +13,21 @@
"website_membership",
],
"data": [
"security/website_membership_group_security.xml",
"views/membership_group_view.xml",
"templates/website.xml",
"views/snippets/snippet_options.xml",
],
"demo": [
"demo/website_membership_group_demo.xml",
],
"assets": {
"web.assets_frontend": [
"website_membership_group/static/src/scss/membership_group.scss",
"website_membership_group/static/src/js/membership_group_frontend.esm.js",
],
"website.assets_wysiwyg": [
"website_membership_group/static/src/js/membership_group_options.esm.js",
],
},
}
21 changes: 17 additions & 4 deletions website_membership_group/controllers/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import logging

from odoo import http
from odoo.http import request

_logger = logging.getLogger(__name__)


class MembershipGroupController(http.Controller):
def _membership_group_page_render_vals(self, membership_group):
Expand Down Expand Up @@ -29,9 +33,18 @@ def display_membership_group_page(self, membership_group):
if not membership_group_sudo.is_published and not is_website_designer:
return request.not_found()

if membership_group_sudo.page_id:
return request.redirect(membership_group_sudo.page_id.url)

vals = self._membership_group_page_render_vals(membership_group_sudo)

return request.render("website_membership_group.membership_group_page", vals)
view_key = membership_group_sudo.page_id.view_id.key
if not view_key:
return request.not_found()

try:
return request.render(view_key, vals)
except ValueError:
return request.not_found()
except Exception:
_logger.exception(
"Unexpected error rendering membership group page for view %s", view_key
)
return request.not_found()
100 changes: 100 additions & 0 deletions website_membership_group/demo/website_membership_group_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<!-- Set website-specific fields on demo groups -->
<record id="membership_group.demo_membership_group_board" model="membership.group">
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.

2026-05-05 13:16:46,250 151280 WARNING 18-members-group-pages-abdel odoo.modules.loading: Module website_membership_group demo data failed to install, installed without demo data 
Traceback (most recent call last):
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 590, in _tag_root
    f(rec)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 374, in _tag_record
    raise Exception("Cannot update missing record %r" % xid)
Exception: Cannot update missing record 'membership_group.demo_membership_group_board'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/modules/loading.py", line 90, in load_demo
    load_data(env(su=True), idref, mode, kind='demo', package=package)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/modules/loading.py", line 72, in load_data
    tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 662, in convert_file
    convert_xml_import(env, module, fp, idref, mode, noupdate)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 733, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 648, in parse
    self._tag_root(de)
  File "/home/tarteo/dev/addons-curq-18/.repos/odoo/odoo/tools/convert.py", line 603, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/tarteo/dev/addons-curq-18/website_membership_group/demo/website_membership_group_demo.xml:4, somewhere inside
<record id="membership_group.demo_membership_group_board" model="membership.group">
        <field name="is_published" eval="True"/>
    </record>

<field name="is_published" eval="True"/>
</record>

<record id="membership_group.demo_membership_group_sponsors" model="membership.group">
<field name="is_published" eval="True"/>
</record>

<record id="membership_group.demo_membership_group_executive_committee" model="membership.group">
<field name="is_published" eval="True"/>
</record>

<record id="membership_group.demo_membership_group_advisory_board" model="membership.group">
<field name="is_published" eval="True"/>
</record>

<!-- Set website-specific fields on demo partners -->
<record id="membership_group.demo_partner_board_president" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">President of the Board with 15 years of experience in non-profit leadership.</field>
</record>

<record id="membership_group.demo_partner_board_vice_president" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Vice President focusing on strategic partnerships and community outreach.</field>
</record>

<record id="membership_group.demo_partner_board_secretary" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Secretary with expertise in governance and compliance.</field>
</record>

<record id="membership_group.demo_partner_board_treasurer" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Treasurer with 20 years of financial management experience.</field>
</record>

<record id="membership_group.demo_partner_board_member_1" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Board member specializing in marketing and communications.</field>
</record>

<record id="membership_group.demo_partner_board_member_2" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Board member with background in technology and innovation.</field>
</record>

<record id="membership_group.demo_partner_sponsor_gold" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Gold Sponsor - Leading technology solutions provider</field>
</record>

<record id="membership_group.demo_partner_sponsor_silver" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Silver Sponsor - Sustainable energy advocate</field>
</record>

<record id="membership_group.demo_partner_sponsor_bronze" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Bronze Sponsor - Award-winning design agency</field>
</record>

<record id="membership_group.demo_partner_sponsor_startup" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Startup Sponsor - Fostering innovation in the community</field>
</record>

<record id="membership_group.demo_partner_sponsor_individual" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Individual Sponsor - Community advocate and supporter</field>
</record>

<record id="membership_group.demo_partner_exec_chair" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Executive Chair leading organizational strategy</field>
</record>

<record id="membership_group.demo_partner_exec_coordinator" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Program Coordinator managing daily operations</field>
</record>

<record id="membership_group.demo_partner_advisory_1" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Academic advisor with expertise in public policy</field>
</record>

<record id="membership_group.demo_partner_advisory_2" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Legal advisor specializing in non-profit law</field>
</record>

<record id="membership_group.demo_partner_advisory_3" model="res.partner">
<field name="website_published" eval="True"/>
<field name="website_description">Financial advisor with expertise in investment management</field>
</record>
</odoo>
Loading
Loading