[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.
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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=[
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user