[IMP] gamification, google_drive, project: limit usage of search on ir.model
Purpose of this commit is to globally improve code performance by limiting search impact by using cache when accessing ir.model. Note that tests are left untouched as they are generally done using admin (or at least data preparation is done as admin). Diff is kept small currently. Task-2638444 PR odoo/odoo#76005 Co-Authored-By: Thibault Delavallée <tde@odoo.com> Co-Authored-By: Victor Feyens <vfe@odoo.com>
This commit is contained in:
co-authored by
Victor Feyens
parent
2625d92b8b
commit
d875bcd79d
@@ -56,9 +56,7 @@ class Meeting(models.Model):
|
||||
# super default_model='crm.lead' for easier use in addons
|
||||
if self.env.context.get('default_res_model') and not self.env.context.get('default_res_model_id'):
|
||||
self = self.with_context(
|
||||
default_res_model_id=self.env['ir.model'].sudo().search([
|
||||
('model', '=', self.env.context['default_res_model'])
|
||||
], limit=1).id
|
||||
default_res_model_id=self.env['ir.model']._get_id(self.env.context['default_res_model'])
|
||||
)
|
||||
|
||||
defaults = super(Meeting, self).default_get(fields)
|
||||
@@ -66,7 +64,7 @@ class Meeting(models.Model):
|
||||
# support active_model / active_id as replacement of default_* if not already given
|
||||
if 'res_model_id' not in defaults and 'res_model_id' in fields and \
|
||||
self.env.context.get('active_model') and self.env.context['active_model'] != 'calendar.event':
|
||||
defaults['res_model_id'] = self.env['ir.model'].sudo().search([('model', '=', self.env.context['active_model'])], limit=1).id
|
||||
defaults['res_model_id'] = self.env['ir.model']._get_id(self.env.context['active_model'])
|
||||
defaults['res_model'] = self.env.context.get('active_model')
|
||||
if 'res_id' not in defaults and 'res_id' in fields and \
|
||||
defaults.get('res_model_id') and self.env.context.get('active_id'):
|
||||
|
||||
@@ -262,18 +262,18 @@ class Challenge(models.Model):
|
||||
|
||||
for challenge in self:
|
||||
if challenge.last_report_date != fields.Date.today():
|
||||
# goals closed but still opened at the last report date
|
||||
closed_goals_to_report = Goals.search([
|
||||
('challenge_id', '=', challenge.id),
|
||||
('start_date', '>=', challenge.last_report_date),
|
||||
('end_date', '<=', challenge.last_report_date)
|
||||
])
|
||||
|
||||
if challenge.next_report_date and fields.Date.today() >= challenge.next_report_date:
|
||||
challenge.report_progress()
|
||||
elif closed_goals_to_report:
|
||||
# some goals need a final report
|
||||
challenge.report_progress(subset_goals=closed_goals_to_report)
|
||||
else:
|
||||
# goals closed but still opened at the last report date
|
||||
closed_goals_to_report = Goals.search([
|
||||
('challenge_id', '=', challenge.id),
|
||||
('start_date', '>=', challenge.last_report_date),
|
||||
('end_date', '<=', challenge.last_report_date)
|
||||
])
|
||||
if closed_goals_to_report:
|
||||
# some goals need a final report
|
||||
challenge.report_progress(subset_goals=closed_goals_to_report)
|
||||
|
||||
self._check_challenge_reward()
|
||||
return True
|
||||
|
||||
@@ -154,7 +154,7 @@ class GoogleDrive(models.Model):
|
||||
'''
|
||||
# TO DO in master: fix my signature and my model
|
||||
if isinstance(res_model, str):
|
||||
res_model = self.env['ir.model'].sudo().search([('model', '=', res_model)]).id
|
||||
res_model = self.env['ir.model']._get_id(res_model)
|
||||
if not res_id:
|
||||
raise UserError(_("Creating google drive may only be done by one at a time."))
|
||||
# check if a model is configured with a template
|
||||
|
||||
@@ -21,7 +21,8 @@ class ProjectShareWizard(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def _selection_target_model(self):
|
||||
return [(model.model, model.name) for model in self.env['ir.model'].sudo().search([('model', '=', 'project.project')])]
|
||||
project_model = self.env['ir.model']._get('project.project')
|
||||
return [(project_model.model, project_model.name)]
|
||||
|
||||
access_mode = fields.Selection([('read', 'Readonly'), ('edit', 'Edit')])
|
||||
display_access_mode = fields.Boolean()
|
||||
|
||||
Reference in New Issue
Block a user