summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Feyens <vfe@odoo.com>2020-07-14 14:32:37 +0000
committerVictor Feyens <vfe@odoo.com>2020-07-23 16:38:17 +0000
commit5dc8b7bdd8ea8a760d1929333cd8461047e5b4e6 (patch)
treea726b57bea6d1f801f802767396e2f7f736725c4
parent71ab12840bc787ca486202255cd6faa21281b9e1 (diff)
[IMP] *: replace default_get overrides by default attribute on fields.
Leave the generic management of fields default to the orm as much as possible. * Default method is not called unless necessary. * Default values are correctly post-processed by the orm when necessary.
-rw-r--r--addons/base_gengo/wizard/base_gengo_translations.py16
-rw-r--r--addons/crm/wizard/crm_lead_to_opportunity_mass.py11
-rw-r--r--addons/fleet/models/fleet_vehicle_cost.py17
-rw-r--r--addons/hr/wizard/hr_departure_wizard.py13
-rw-r--r--addons/hr/wizard/hr_plan_wizard.py13
-rw-r--r--addons/hr_timesheet/wizard/project_task_create_timesheet.py15
-rw-r--r--addons/project/models/project.py9
-rw-r--r--addons/snailmail/wizard/snailmail_letter_format_error.py20
-rw-r--r--addons/website/wizard/website_robots.py9
9 files changed, 36 insertions, 87 deletions
diff --git a/addons/base_gengo/wizard/base_gengo_translations.py b/addons/base_gengo/wizard/base_gengo_translations.py
index bf860bb7473..df75643ebb6 100644
--- a/addons/base_gengo/wizard/base_gengo_translations.py
+++ b/addons/base_gengo/wizard/base_gengo_translations.py
@@ -28,23 +28,17 @@ class BaseGengoTranslations(models.TransientModel):
_name = 'base.gengo.translations'
_description = 'Base Gengo Translations'
- @api.model
- def default_get(self, fields):
- res = super(BaseGengoTranslations, self).default_get(fields)
- if 'authorize_credentials' in fields:
- res['authorized_credentials'], gengo = self.gengo_authentication()
- if 'lang_id' in fields:
- res['lang_id'] = get_lang(self.env).id
- return res
-
sync_type = fields.Selection([
('send', 'Send New Terms'),
('receive', 'Receive Translation'),
('both', 'Both')
], "Sync Type", default='both', required=True)
- lang_id = fields.Many2one('res.lang', 'Language', required=True)
+ lang_id = fields.Many2one(
+ 'res.lang', 'Language', required=True,
+ default=lambda s: get_lang(s.env).id)
sync_limit = fields.Integer("No. of terms to sync", default=20)
- authorized_credentials = fields.Boolean('The private and public keys are valid')
+ authorized_credentials = fields.Boolean(
+ 'The private and public keys are valid', default=lambda s: s.gengo_authentication()[0])
def init(self):
icp = self.env['ir.config_parameter'].sudo()
diff --git a/addons/crm/wizard/crm_lead_to_opportunity_mass.py b/addons/crm/wizard/crm_lead_to_opportunity_mass.py
index 8748325b80b..19f2c73a886 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity_mass.py
+++ b/addons/crm/wizard/crm_lead_to_opportunity_mass.py
@@ -9,17 +9,12 @@ class Lead2OpportunityMassConvert(models.TransientModel):
_description = 'Convert Lead to Opportunity (in mass)'
_inherit = 'crm.lead2opportunity.partner'
- @api.model
- def default_get(self, fields):
- res = super(Lead2OpportunityMassConvert, self).default_get(fields)
- if 'lead_tomerge_ids' in fields and not res.get('lead_tomerge_ids'):
- res['lead_tomerge_ids'] = self.env.context.get('active_ids', [])
- return res
-
lead_id = fields.Many2one(required=False)
lead_tomerge_ids = fields.Many2many(
'crm.lead', 'crm_convert_lead_mass_lead_rel',
- string='Active Leads', context={'active_test': False})
+ string='Active Leads', context={'active_test': False},
+ default=lambda self: self.env.context.get('active_ids', []),
+ )
user_ids = fields.Many2many('res.users', string='Salespersons')
deduplicate = fields.Boolean('Apply deduplication', default=True, help='Merge with existing leads/opportunities of each partner')
action = fields.Selection(selection_add=[
diff --git a/addons/fleet/models/fleet_vehicle_cost.py b/addons/fleet/models/fleet_vehicle_cost.py
index fb039a4c125..818217faafc 100644
--- a/addons/fleet/models/fleet_vehicle_cost.py
+++ b/addons/fleet/models/fleet_vehicle_cost.py
@@ -130,16 +130,6 @@ class FleetVehicleLogServices(models.Model):
_rec_name = 'service_type_id'
_description = 'Services for vehicles'
- @api.model
- def default_get(self, default_fields):
- res = super(FleetVehicleLogServices, self).default_get(default_fields)
- service = self.env.ref('fleet.type_service_service_8', raise_if_not_found=False)
- res.update({
- 'date': fields.Date.context_today(self),
- 'service_type_id': service.id if service else None,
- })
- return res
-
active = fields.Boolean(default=True)
vehicle_id = fields.Many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this log')
amount = fields.Monetary('Cost')
@@ -148,14 +138,17 @@ class FleetVehicleLogServices(models.Model):
odometer = fields.Float(compute="_get_odometer", inverse='_set_odometer', string='Odometer Value',
help='Odometer measure of the vehicle at the moment of this log')
odometer_unit = fields.Selection(related='vehicle_id.odometer_unit', string="Unit", readonly=True)
- date = fields.Date(help='Date when the cost has been executed')
+ date = fields.Date(help='Date when the cost has been executed', default=fields.Date.context_today)
company_id = fields.Many2one('res.company', 'Company', default=lambda self: self.env.company)
currency_id = fields.Many2one('res.currency', related='company_id.currency_id')
purchaser_id = fields.Many2one('res.partner', string="Driver", compute='_compute_purchaser_id', readonly=False, store=True)
inv_ref = fields.Char('Vendor Reference')
vendor_id = fields.Many2one('res.partner', 'Vendor')
notes = fields.Text()
- service_type_id = fields.Many2one('fleet.service.type', 'Service Type', required=True)
+ service_type_id = fields.Many2one(
+ 'fleet.service.type', 'Service Type', required=True,
+ default=lambda self: self.env.ref('fleet.type_service_service_8', raise_if_not_found=False),
+ )
state = fields.Selection([
('todo', 'To Do'),
('running', 'Running'),
diff --git a/addons/hr/wizard/hr_departure_wizard.py b/addons/hr/wizard/hr_departure_wizard.py
index 5e7782a1648..af8619270d8 100644
--- a/addons/hr/wizard/hr_departure_wizard.py
+++ b/addons/hr/wizard/hr_departure_wizard.py
@@ -8,14 +8,6 @@ class HrDepartureWizard(models.TransientModel):
_name = 'hr.departure.wizard'
_description = 'Departure Wizard'
- @api.model
- def default_get(self, fields):
- res = super(HrDepartureWizard, self).default_get(fields)
- if (not fields or 'employee_id' in fields) and 'employee_id' not in res:
- if self.env.context.get('active_id'):
- res['employee_id'] = self.env.context['active_id']
- return res
-
departure_reason = fields.Selection([
('fired', 'Fired'),
('resigned', 'Resigned'),
@@ -23,7 +15,10 @@ class HrDepartureWizard(models.TransientModel):
], string="Departure Reason", default="fired")
departure_description = fields.Text(string="Additional Information")
departure_date = fields.Date(string="Departure Date", required=True, default=fields.Date.today)
- employee_id = fields.Many2one('hr.employee', string='Employee', required=True)
+ employee_id = fields.Many2one(
+ 'hr.employee', string='Employee', required=True,
+ default=lambda self: self.env.context.get('active_id', None),
+ )
archive_private_address = fields.Boolean('Archive Private Address', default=True)
def action_register_departure(self):
diff --git a/addons/hr/wizard/hr_plan_wizard.py b/addons/hr/wizard/hr_plan_wizard.py
index 0a9e27c35ea..69e1ee280b9 100644
--- a/addons/hr/wizard/hr_plan_wizard.py
+++ b/addons/hr/wizard/hr_plan_wizard.py
@@ -8,16 +8,11 @@ class HrPlanWizard(models.TransientModel):
_name = 'hr.plan.wizard'
_description = 'Plan Wizard'
- @api.model
- def default_get(self, fields_list):
- res = super(HrPlanWizard, self).default_get(fields_list)
- if (not fields_list or 'employee_id' in fields_list) and 'employee_id' not in res:
- if self.env.context.get('active_id'):
- res['employee_id'] = self.env.context['active_id']
- return res
-
plan_id = fields.Many2one('hr.plan', default=lambda self: self.env['hr.plan'].search([], limit=1))
- employee_id = fields.Many2one('hr.employee', string='Employee', required=True)
+ employee_id = fields.Many2one(
+ 'hr.employee', string='Employee', required=True,
+ default=lambda self: self.env.context.get('active_id', None),
+ )
def action_launch(self):
for activity_type in self.plan_id.plan_activity_type_ids:
diff --git a/addons/hr_timesheet/wizard/project_task_create_timesheet.py b/addons/hr_timesheet/wizard/project_task_create_timesheet.py
index e55043e982d..b919361822b 100644
--- a/addons/hr_timesheet/wizard/project_task_create_timesheet.py
+++ b/addons/hr_timesheet/wizard/project_task_create_timesheet.py
@@ -11,18 +11,13 @@ class ProjectTaskCreateTimesheet(models.TransientModel):
_sql_constraints = [('time_positive', 'CHECK(time_spent > 0)', 'The timesheet\'s time must be positive' )]
- @api.model
- def default_get(self, fields):
- result = super(ProjectTaskCreateTimesheet, self).default_get(fields)
-
- active_id = self._context.get('active_id')
- if 'task_id' in fields and active_id:
- result['task_id'] = active_id
- return result
-
time_spent = fields.Float('Time', digits=(16, 2))
description = fields.Char('Description')
- task_id = fields.Many2one('project.task', "Task", help="Task for which we are creating a sales order", required=True)
+ task_id = fields.Many2one(
+ 'project.task', "Task", required=True,
+ default=lambda self: self.env.context.get('active_id', None),
+ help="Task for which we are creating a sales order",
+ )
def save_timesheet(self):
values = {
diff --git a/addons/project/models/project.py b/addons/project/models/project.py
index 6509cac3e25..a8725944b39 100644
--- a/addons/project/models/project.py
+++ b/addons/project/models/project.py
@@ -209,7 +209,7 @@ class Project(models.Model):
date = fields.Date(string='Expiration Date', index=True, tracking=True)
subtask_project_id = fields.Many2one('project.project', string='Sub-task Project', ondelete="restrict",
help="Project in which sub-tasks of the current project will be created. It can be the current project itself.")
- allow_subtasks = fields.Boolean('Sub-tasks')
+ allow_subtasks = fields.Boolean('Sub-tasks', default=lambda self: self.env.user.has_group('project.group_subtask_project'))
# rating fields
rating_request_deadline = fields.Datetime(compute='_compute_rating_request_deadline', store=True)
@@ -234,13 +234,6 @@ class Project(models.Model):
('project_date_greater', 'check(date >= date_start)', 'Error! project start-date must be lower than project end-date.')
]
- @api.model
- def default_get(self, *args, **kwargs):
- defaults = super().default_get(*args, **kwargs)
- if 'allow_subtasks' not in defaults:
- defaults['allow_subtasks'] = self.env.user.has_group('project.group_subtask_project')
- return defaults
-
def _compute_alias_enabled(self):
for project in self:
project.alias_enabled = project.alias_domain and project.alias_id.alias_name
diff --git a/addons/snailmail/wizard/snailmail_letter_format_error.py b/addons/snailmail/wizard/snailmail_letter_format_error.py
index d8b6c06bd69..38168101e55 100644
--- a/addons/snailmail/wizard/snailmail_letter_format_error.py
+++ b/addons/snailmail/wizard/snailmail_letter_format_error.py
@@ -5,18 +5,14 @@ class SnailmailLetterFormatError(models.TransientModel):
_name = 'snailmail.letter.format.error'
_description = 'Format Error Sending a Snailmail Letter'
- message_id = fields.Many2one('mail.message')
- snailmail_cover = fields.Boolean(string='Add a Cover Page')
-
- @api.model
- def default_get(self, fields):
- res = super(SnailmailLetterFormatError, self).default_get(fields)
- snailmail_cover = self.env.company.snailmail_cover
- res.update({
- 'message_id': self.env.context.get('message_id'),
- 'snailmail_cover': snailmail_cover,
- })
- return res
+ message_id = fields.Many2one(
+ 'mail.message',
+ default=lambda self: self.env.context.get('message_id', None),
+ )
+ snailmail_cover = fields.Boolean(
+ string='Add a Cover Page',
+ default=lambda self: self.env.company.snailmail_cover,
+ )
def update_resend_action(self):
self.env.company.write({'snailmail_cover': self.snailmail_cover})
diff --git a/addons/website/wizard/website_robots.py b/addons/website/wizard/website_robots.py
index 7172a3aa6b1..1d68aa4f22a 100644
--- a/addons/website/wizard/website_robots.py
+++ b/addons/website/wizard/website_robots.py
@@ -7,14 +7,7 @@ class WebsiteRobots(models.TransientModel):
_name = "website.robots"
_description = "Robots.txt Editor"
- content = fields.Text()
-
- @api.model
- def default_get(self, fields):
- defaults = super(WebsiteRobots, self).default_get(fields)
- if 'content' in fields:
- defaults['content'] = self.env['website'].get_current_website().robots_txt
- return defaults
+ content = fields.Text(default=lambda s: s.env['website'].get_current_website().robots_txt)
def action_save(self):
self.env['website'].get_current_website().robots_txt = self.content