internal team model update
This commit is contained in:
parent
5f267e96da
commit
2dbdb58127
|
|
@ -11,6 +11,24 @@ class InternalTeams(models.Model):
|
||||||
active = fields.Boolean(default=True, help="Set active to false to hide the Teams without removing it.")
|
active = fields.Boolean(default=True, help="Set active to false to hide the Teams without removing it.")
|
||||||
|
|
||||||
|
|
||||||
|
parent_id = fields.Many2one('internal.teams', string="Parent Team",
|
||||||
|
domain="[('id', '!=', id)]")
|
||||||
|
child_ids = fields.One2many('internal.teams', 'parent_id', string="Child Teams")
|
||||||
|
active = fields.Boolean(default=True)
|
||||||
|
|
||||||
|
# Computed field to include members + child team members and leads
|
||||||
|
all_members_ids = fields.Many2many(
|
||||||
|
'res.users', compute='_compute_all_members', string="All Members", store=False
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.depends('members_ids', 'child_ids.members_ids', 'child_ids.team_lead')
|
||||||
|
def _compute_all_members(self):
|
||||||
|
for rec in self:
|
||||||
|
all_members = rec.members_ids
|
||||||
|
for child in rec.child_ids:
|
||||||
|
all_members |= child.members_ids | child.team_lead
|
||||||
|
rec.all_members_ids = all_members
|
||||||
|
|
||||||
|
|
||||||
def _compute_display_name(self):
|
def _compute_display_name(self):
|
||||||
""" Custom display_name in case a registration is nott linked to an attendee
|
""" Custom display_name in case a registration is nott linked to an attendee
|
||||||
|
|
|
||||||
|
|
@ -66,5 +66,8 @@
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
</list>
|
</list>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="internal_teams_form_view" model="ir.ui.view">
|
<record id="internal_teams_form_view" model="ir.ui.view">
|
||||||
<field name="name">internal.teams.form.view</field>
|
<field name="name">internal.teams.form.view</field>
|
||||||
<field name="model">internal.teams</field>
|
<field name="model">internal.teams</field>
|
||||||
|
|
@ -20,37 +21,56 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="team_name"/>
|
<field name="team_name"/>
|
||||||
<field name="team_lead"/>
|
<field name="team_lead"/>
|
||||||
<notebook>
|
<!-- ✅ added -->
|
||||||
<page name="team_members" string="Team">
|
<field name="parent_id"/>
|
||||||
<field name="members_ids" widget="many2many">
|
|
||||||
<kanban quick_create="false" create="false" delete="true">
|
|
||||||
<field name="id"/>
|
|
||||||
<field name="name"/>
|
|
||||||
<templates>
|
|
||||||
<t t-name="kanban-box">
|
|
||||||
<div class="oe_kanban_global_click" style="max-width: 200px">
|
|
||||||
<div class="o_kanban_record_top">
|
|
||||||
<img t-att-src="kanban_image('res.users', 'image_1920', record.id.raw_value)"
|
|
||||||
height="40" width="40"
|
|
||||||
class="oe_avatar oe_kanban_avatar_smallbox mb0"
|
|
||||||
alt="Avatar"/>
|
|
||||||
<div class="o_kanban_record_headings ml8">
|
|
||||||
<strong class="o_kanban_record_title">
|
|
||||||
<field name="name"/>
|
|
||||||
</strong>
|
|
||||||
</div>
|
|
||||||
<a t-if="! read_only_mode" type="delete" class="text-danger">
|
|
||||||
<i class="fa fa-times" title="Delete"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</templates>
|
|
||||||
</kanban>
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
<notebook>
|
||||||
|
<page name="team_members" string="Team">
|
||||||
|
<field name="members_ids" widget="many2many">
|
||||||
|
<kanban quick_create="false" create="false" delete="true">
|
||||||
|
<field name="id"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<templates>
|
||||||
|
<t t-name="kanban-box">
|
||||||
|
<div class="oe_kanban_global_click" style="max-width: 200px">
|
||||||
|
<div class="o_kanban_record_top">
|
||||||
|
<img t-att-src="kanban_image('res.users', 'image_1920', record.id.raw_value)"
|
||||||
|
height="40" width="40"
|
||||||
|
class="oe_avatar oe_kanban_avatar_smallbox mb0"
|
||||||
|
alt="Avatar"/>
|
||||||
|
<div class="o_kanban_record_headings ml8">
|
||||||
|
<strong class="o_kanban_record_title">
|
||||||
|
<field name="name"/>
|
||||||
|
</strong>
|
||||||
|
</div>
|
||||||
|
<a t-if="! read_only_mode" type="delete" class="text-danger">
|
||||||
|
<i class="fa fa-times" title="Delete"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</templates>
|
||||||
|
</kanban>
|
||||||
|
</field>
|
||||||
|
|
||||||
|
<!-- ✅ added: show combined team members including child team leads and members -->
|
||||||
|
<field name="all_members_ids" widget="many2many_tags" readonly="1"
|
||||||
|
string="Including Child Teams"/>
|
||||||
|
</page>
|
||||||
|
|
||||||
|
<!-- ✅ added: Child Teams tab -->
|
||||||
|
<page name="child_teams" string="Child Teams">
|
||||||
|
<field name="child_ids">
|
||||||
|
<list editable="bottom">
|
||||||
|
<field name="team_name"/>
|
||||||
|
<field name="team_lead"/>
|
||||||
|
<field name="members_ids" widget="many2many_tags"/>
|
||||||
|
</list>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
|
||||||
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
|
|
@ -63,8 +83,7 @@
|
||||||
<field name="view_mode">list,form</field>
|
<field name="view_mode">list,form</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<menuitem id="internal_teams_menu" name="Internal Teams"
|
||||||
<menuitem id="internal_teams_menu" name="Internal Teams" action="internal_teams_action_tree"
|
action="internal_teams_action_tree"
|
||||||
parent="project.menu_project_config"/>
|
parent="project.menu_project_config"/>
|
||||||
|
</odoo>
|
||||||
</odoo>
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue