Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0] [MIG] mail_activity_team: Migration to 18.0 #1555

Closed
wants to merge 76 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
4eeea28
[ADD] mail_activity_team
JordiBForgeFlow Nov 27, 2018
3166253
[IMP] Some improvements and fixes
MiquelRForgeFlow Nov 27, 2018
97788aa
[ADD] tests
MiquelRForgeFlow Nov 28, 2018
d4f8bca
[MIG] mail_activity_team: Migration to 12.0
MiquelRForgeFlow Dec 3, 2018
c8dba0f
[IMP] Set team responsible as default user when activity is created
AdriaGForgeFlow Dec 21, 2018
5d5f41d
[IMP] Add search filter for My Team Activities
AdriaGForgeFlow Dec 24, 2018
96d77d2
FIX mail_activ_team: always allow superuser
bealdav Jul 10, 2019
7cb4849
[IMP] mail_activity_team: black, isort
pegonzalezspesol Oct 24, 2019
918ea29
[MIG] 13.0 mail_activity_team
pegonzalezspesol Nov 20, 2019
07c79bc
Added translation using Weblate (Italian)
alessandro-fiorino Dec 3, 2020
a800aae
Translated using Weblate (Italian)
alessandro-fiorino Dec 3, 2020
a2f5e38
[IMP] pre-commit run -a
Jan 26, 2021
8698144
[FIX] mail_activity_team: scheduled activity
chienandalu Apr 14, 2021
a030a81
mail_activity_team 13.0.1.0.1
OCA-git-bot Jun 6, 2021
d91019c
Update translation files
oca-transbot Jun 6, 2021
d1d7859
[FIX] mail_activity_team: archived users
chienandalu Jun 17, 2021
cabd71b
mail_activity_team 13.0.1.0.2
OCA-git-bot Jun 17, 2021
b0f8739
Added translation using Weblate (French)
tfossoul Jan 13, 2022
ae75243
Translated using Weblate (French)
tfossoul Jan 13, 2022
6397ce0
[IMP] mail_activity_team: black, isort, prettier
atchuthan Jan 13, 2022
19e1d63
[MIG] mail_activity_team: Migration to 14.0
atchuthan Jan 13, 2022
232315a
[MIG] mail_activity_team: Migration to 15.0
BernatPForgeFlow Jan 17, 2022
7dd7b87
Added translation using Weblate (French)
tfossoul Mar 10, 2022
78e1dab
Translated using Weblate (French)
tfossoul Mar 10, 2022
f4f2b1b
mail_activity_team 15.0.1.1.0
OCA-git-bot Apr 7, 2022
36371bb
[FIX][15.0] mail_activity_team. smart button archive
JoanMForgeFlow Apr 26, 2022
08417fa
mail_activity_team 15.0.1.2.0
OCA-git-bot Apr 26, 2022
5085b1c
Update translation files
oca-transbot Apr 26, 2022
57af106
Update translation files
oca-transbot Aug 30, 2022
d804ee0
[IMP] mail_activity_team: settings menu position
ivantodorovich Oct 31, 2022
f2f1832
mail_activity_team 15.0.1.3.0
OCA-git-bot Nov 2, 2022
90391e2
[IMP] mail_activity_team: Define team on activity types
etobella May 26, 2022
06d81ce
[IMP] mail_activity_team: Improve test using standard methods
etobella May 26, 2022
e67dba0
[IMP] mail_activity_team: Force team on schedule
olgamarcocb Jun 13, 2022
10bcce4
[IMP] mail_activity_team
olgamarcocb Jun 14, 2022
52f2913
[IMP] mail_activity_type: Remove deprecated usage of onchange
kluna1998 Nov 18, 2022
4e47dcd
[FIX] mail_activity_team: activity count
chienandalu Apr 18, 2022
adfdc1b
[FIX] mail_activity_team: restore to my activities when unselecting
etobella Nov 20, 2022
6d12886
[FIX] mail_activity_team: Adapt changes to 15.0
etobella Dec 20, 2022
4a72305
mail_activity_team 15.0.1.4.0
OCA-git-bot Dec 20, 2022
6db8f84
Update translation files
weblate Dec 20, 2022
d58e16b
Translated using Weblate (Italian)
francesco-ooops Jan 3, 2023
aa9c54f
[IMP] mail_activity_team: Allow to force a team on server actions
ivantodorovich Jan 30, 2023
83a9bbf
mail_activity_team 15.0.2.0.0
OCA-git-bot Jan 31, 2023
2a651bc
Update translation files
weblate Jan 31, 2023
e36fb4b
[15.0][FIX] mail_activity_team: warning Two fields have same label
dsolanki-initos Feb 1, 2023
eb1e08b
mail_activity_team 15.0.2.1.0
OCA-git-bot Feb 3, 2023
9686052
Update translation files
weblate Feb 3, 2023
affbc4f
Update translation files
weblate Mar 23, 2023
f3f4f29
[MIG] mail_activity_team: Migration to 16.0
rven Apr 17, 2023
4d42c76
Update translation files
weblate Jun 8, 2023
e0f386c
Translated using Weblate (Italian)
mymage Sep 20, 2023
d4e082c
Update translation files
weblate Oct 18, 2023
3ed69ae
Translated using Weblate (Italian)
mymage Nov 3, 2023
49be896
Added translation using Weblate (Spanish)
Ivorra78 Nov 8, 2023
6be38a9
Translated using Weblate (Spanish)
Ivorra78 Nov 8, 2023
edd9b9b
Translated using Weblate (Spanish)
Ivorra78 Nov 8, 2023
11401b9
Translated using Weblate (Italian)
mymage Dec 1, 2023
3bf8903
Translated using Weblate (Italian)
mymage Dec 20, 2023
20ffce4
Update translation files
weblate Jan 5, 2024
4c578ac
mail_activity_team: Fix bug of the Team Activities filter.
ntodorova Jan 11, 2024
b38bd2e
[IMP] mail_activity_team: pre-commit auto fixes
Mar 5, 2024
3283b0c
[MIG] mail_activity_team: Migration to 17.0
Mar 5, 2024
89da1b1
[UPD] Update mail_activity_team.pot
Apr 5, 2024
0f672a8
[IMP] mail_activity_team: filter fix, follow-up comments
ntodorova Apr 17, 2024
4a670d0
Update translation files
weblate Jul 7, 2024
c786827
[UPD] Update mail_activity_team.pot
Jul 22, 2024
4622bb0
Update translation files
weblate Jul 22, 2024
aeb7515
[BOT] post-merge updates
OCA-git-bot Aug 29, 2024
66f11eb
[17.0][REF] mail_activity_team: use mail.activity.schedule wizard
vvrossem Oct 8, 2024
c970061
Translated using Weblate (Italian)
mymage Jan 16, 2025
e2ade4e
[UPD] Update mail_activity_team.pot
Jan 17, 2025
529c241
[BOT] post-merge updates
OCA-git-bot Jan 17, 2025
7f76f1a
Update translation files
weblate Jan 17, 2025
4c7921c
Translated using Weblate (Italian)
mymage Jan 19, 2025
eb3b9e6
[MIG] mail_activity_team: Migration to 18.0
Wodran14 Jan 23, 2025
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
Prev Previous commit
Next Next commit
[IMP] Some improvements and fixes
MiquelRForgeFlow authored and Wodran14 committed Jan 23, 2025
commit 3166253bb5be329836fdee500f16f34a22d64449
70 changes: 51 additions & 19 deletions mail_activity_team/models/mail_activity.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,66 @@
# Copyright 2018 Eficent Business and IT Consulting Services, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models, fields
from odoo import api, models, fields, _
from odoo.exceptions import ValidationError


class MailActivity(models.Model):
_inherit = "mail.activity"

def _get_default_team_id(self):
res_model = self.env.context.get('default_res_model', False)
model = self.env['ir.model'].search([('model', '=', res_model)],
limit=1)
domain = [('member_ids', 'in', [self.env.uid])]
def _get_default_team_id(self, user_id=None):
if not user_id:
user_id = self.env.uid
res_model = self.env.context.get('default_res_model')
model = self.env['ir.model'].search(
[('model', '=', res_model)], limit=1)
domain = [('member_ids', 'in', [user_id])]
if res_model:
domain.extend(['|', ('res_model_ids', '=', False),
('res_model_ids', 'in', model.ids)])
return self.env['mail.activity.team'].search(domain, limit=1)

team_id = fields.Many2one('mail.activity.team',
default=lambda s: s._get_default_team_id(),)
team_id = fields.Many2one(
comodel_name='mail.activity.team',
default=lambda s: s._get_default_team_id(),
)

@api.onchange('res_model_id', 'user_id')
def _onchange_model_user(self):
@api.onchange('user_id')
def _onchange_user_id(self):
res = {'domain': {'team_id': []}}
if self.team_id:
if self.user_id not in self.team_id.member_ids:
self.team_id = False
if self.res_model_id:
res['domain']['team_id'] = [
('res_model_ids', 'in', self.res_model_id.ids)]
if self.user_id:
res['domain']['team_id'] = [
('member_ids', 'in', self.user_id.ids)]
if not self.user_id:
return res
res['domain']['team_id'] = [
'|',
('res_model_ids', '=', False),
('res_model_ids', 'in', self.res_model_id.ids)]
if self.team_id and self.user_id in self.team_id.member_ids:
return res
self.team_id = self.with_context(
default_res_model=self.res_model_id.id).\
_get_default_team_id(user_id=self.user_id.id)
return res

@api.onchange('team_id')
def _onchange_team_id(self):
res = {'domain': {'user_id': []}}
if not self.team_id:
return res
res['domain']['user_id'] = [('id', 'in', self.team_id.member_ids.ids)]
if self.user_id and self.user_id in self.team_id.member_ids:
return res
if self.team_id.user_id:
self.user_id = self.team_id.user_id
elif self.env.user in self.team_id.member_ids.ids:
self.user_id = self.env.user
else:
self.user_id = self.env['res.users']
return res

@api.multi
@api.constrains('team_id', 'user_id')
def _check_team_and_user(self):
for activity in self:
if activity.team_id and activity.user_id and \
activity.user_id not in self.team_id.member_ids:
raise ValidationError(
_('The assigned user is not member of the team.'))
69 changes: 63 additions & 6 deletions mail_activity_team/models/mail_activity_team.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,71 @@
# Copyright 2018 Eficent Business and IT Consulting Services, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
from odoo import api, fields, models


class MailActivityTeam(models.Model):
_name = "mail.activity.team"
_description = 'Mail Activity Team'

name = fields.Char(string='Name', required=True, translate=True)
active = fields.Boolean(string='Active', default=True)
res_model_ids = fields.Many2many('ir.model', string='Used models')
member_ids = fields.Many2many('res.users', 'mail_activity_team_users_rel',
string="Team Members")
@api.depends('res_model_ids', 'member_ids')
def _compute_missing_activities(self):
activity_model = self.env['mail.activity']
for team in self:
domain = [('team_id', '=', False)]
if team.member_ids:
domain.append(('user_id', 'in', team.member_ids.ids))
if team.res_model_ids:
domain.append(('res_model_id', 'in', team.res_model_ids.ids))
team.count_missing_activities = activity_model.search(
domain, count=True)

name = fields.Char(
string='Name',
required=True,
translate=True,
)
active = fields.Boolean(
string='Active',
default=True,
)
res_model_ids = fields.Many2many(
comodel_name='ir.model',
string='Used models',
domain=lambda self: [
('model', 'in',
[k for k in self.env.registry if issubclass(
type(self.env[k]), type(self.env['mail.activity.mixin']))
and self.env[k]._auto])
],
)
member_ids = fields.Many2many(
comodel_name='res.users',
relation='mail_activity_team_users_rel',
string="Team Members",
)
user_id = fields.Many2one(
comodel_name='res.users',
string='Team Leader',
domain="[('id', 'in', member_ids)]",
)
count_missing_activities = fields.Integer(
string="Missing Activities",
compute='_compute_missing_activities',
default=0,
)

@api.onchange('member_ids')
def _onchange_member_ids(self):
if self.user_id and self.user_id not in self.member_ids:
self.user_id = False

def assign_team_to_unassigned_activities(self):
activity_model = self.env['mail.activity']
for team in self:
domain = [('team_id', '=', False)]
if team.member_ids:
domain.append(('user_id', 'in', team.member_ids.ids))
if team.res_model_ids:
domain.append(('res_model_id', 'in', team.res_model_ids.ids))
missing_activities = activity_model.search(domain)
missing_activities.write({'team_id': team.id})
8 changes: 5 additions & 3 deletions mail_activity_team/models/res_users.py
Original file line number Diff line number Diff line change
@@ -6,6 +6,8 @@
class ResUsers(models.Model):
_inherit = "res.users"

activity_team_ids = fields.Many2many('mail.activity.team',
'mail_activity_team_users_rel',
string="Activity Teams")
activity_team_ids = fields.Many2many(
comodel_name='mail.activity.team',
relation='mail_activity_team_users_rel',
string="Activity Teams",
)
2 changes: 1 addition & 1 deletion mail_activity_team/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
access_mail_activity_team_all,mail.activity.team.all,model_mail_activity_team,,1,0,0,0
access_mail_activity_team_user,mail.activity.team.user,model_mail_activity_team,base.group_user,1,1,0,0
access_mail_activity_team_system_user,mail.activity.team.system.user,model_mail_activity_team,base.group_system_user,1,1,1,1
access_mail_activity_team_system_user,mail.activity.team.system.user,model_mail_activity_team,base.group_system,1,1,1,1
4 changes: 2 additions & 2 deletions mail_activity_team/security/mail_activity_team_security.xml
Original file line number Diff line number Diff line change
@@ -4,10 +4,10 @@
<record id="mail_activity_rule_my_team" model="ir.rule">
<field name="name">mail.activity: user: my team</field>
<field name="model_id" ref="mail.model_mail_activity"/>
<field name="domain_force">['|', '&amp;'('team_id', '=', False),('user_id', '=', user.id),('team_id', '=', user.team_ids.ids)]</field>
<field name="domain_force">["|", ('team_id', 'in', user.activity_team_ids.ids), "&amp;", ('team_id', '=', False), ('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="perm_create" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_read" eval="False"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
16 changes: 12 additions & 4 deletions mail_activity_team/views/mail_activity_team_views.xml
Original file line number Diff line number Diff line change
@@ -4,26 +4,34 @@
VIEWS
-->


<!-- FORM VIEW -->
<record id="mail_activity_team_view_form" model="ir.ui.view">
<field name="name">mail.activity.team.view.form</field>
<field name="model">mail.activity.team</field>
<field name="arch" type="xml">
<form string="Activity Team">
<header>
<field name="count_missing_activities" invisible="1"/>
<button name="assign_team_to_unassigned_activities" string="Assign to missing activities"
type="object" class="oe_highlight"
groups="base.group_no_one"
attrs="{'invisible': [('count_missing_activities', '=', 0)]}"/>
</header>
<sheet string="Activity Team">
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object"
class="oe_stat_button" icon="fa-archive">
class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button"
options='{"terminology": "archive"}'/></button>
options='{"terminology": "archive"}'/></button>
</div>
<group>
<group name="base">
<field name="name"/>
<field name="user_id" attrs="{'invisible': [('member_ids', '=', [])]}"/>
</group>
<group name="models">
<field name="res_model_ids" widget="many2many_tags"/>
<field name="res_model_ids" widget="many2many_tags"
options="{'no_create': True, 'no_open': True}"/>
</group>
</group>
<notebook>