Alaguraj0361 1b6647104e
Some checks failed
CI / Brand-leak check (push) Has been cancelled
CI / flake8 / pylint-odoo / manifest completeness (push) Has been cancelled
CI / Install all modules with --test-enable (push) Has been cancelled
add tncsc_deployment Odoo module with executive dashboard and sidebar
2026-09-29 13:03:05 +05:30

100 lines
5.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<!-- TNCSC-branded role names. Each is a thin wrapper implying the
generic product-layer groups - the actual access control logic
lives entirely in the community_* modules; these just give board
members role labels they recognize in Settings > Users. -->
<record id="module_category_tncsc_roles" model="ir.module.category">
<field name="name">TNCSC Roles</field>
<field name="sequence">5</field>
</record>
<record id="privilege_tncsc_roles" model="res.groups.privilege">
<field name="name">TNCSC Roles</field>
<field name="category_id" ref="module_category_tncsc_roles"/>
</record>
<record id="group_tncsc_board_admin" model="res.groups">
<field name="name">Board Admin</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Full access across membership, school, classifieds, benefits, events, and Interac payments.</field>
<field name="implied_ids" eval="[
(4, ref('community_membership.group_membership_manager')),
(4, ref('community_school.group_school_coordinator')),
(4, ref('community_classifieds.group_classifieds_moderator')),
(4, ref('community_benefits.group_benefits_manager')),
(4, ref('community_interac.group_interac_verifier')),
(4, ref('event.group_event_manager')),
]"/>
<!-- Without this, a fresh install leaves the installing admin user
out of every product-module manager group, so their backend
app switcher only shows stock apps (Events, eLearning, ...)
and none of the CommunityOS ones - each app's root menu is
group-restricted and admin isn't a member of any of those
groups by default. Confirmed empirically against a live
container; this is the automated fix for the manual step
HANDOFF.md previously described doing by hand for the School
Coordinator group alone. -->
<field name="user_ids" eval="[(4, ref('base.user_admin'))]"/>
</record>
<record id="group_tncsc_treasurer" model="res.groups">
<field name="name">Treasurer</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Confirms Interac e-Transfer payments and manages accounting.</field>
<field name="implied_ids" eval="[
(4, ref('community_interac.group_interac_verifier')),
(4, ref('account.group_account_invoice')),
]"/>
</record>
<record id="group_tncsc_events_officer" model="res.groups">
<field name="name">Events Officer</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Manages events and staffs the check-in desk.</field>
<field name="implied_ids" eval="[(4, ref('event.group_event_manager'))]"/>
</record>
<record id="group_tncsc_school_coordinator" model="res.groups">
<field name="name">School Coordinator</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Manages Tamil School terms, classes, students, and enrollment.</field>
<field name="implied_ids" eval="[(4, ref('community_school.group_school_coordinator'))]"/>
</record>
<record id="group_tncsc_teacher" model="res.groups">
<field name="name">Teacher</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Takes attendance for their own Tamil School classes.</field>
<field name="implied_ids" eval="[(4, ref('community_school.group_school_teacher'))]"/>
</record>
<record id="group_tncsc_classifieds_moderator" model="res.groups">
<field name="name">Classifieds Moderator</field>
<field name="privilege_id" ref="privilege_tncsc_roles"/>
<field name="comment">Reviews and publishes classified listings.</field>
<field name="implied_ids" eval="[(4, ref('community_classifieds.group_classifieds_moderator'))]"/>
</record>
<!-- Public & Portal read-only access to event.stage for event badges and status display -->
<record id="access_event_stage_public" model="ir.model.access">
<field name="name">event.stage.public</field>
<field name="model_id" ref="event.model_event_stage"/>
<field name="group_id" ref="base.group_public"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="0"/>
<field name="perm_create" eval="0"/>
<field name="perm_unlink" eval="0"/>
</record>
<record id="access_event_stage_portal" model="ir.model.access">
<field name="name">event.stage.portal</field>
<field name="model_id" ref="event.model_event_stage"/>
<field name="group_id" ref="base.group_portal"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="0"/>
<field name="perm_create" eval="0"/>
<field name="perm_unlink" eval="0"/>
</record>
</odoo>