diff --git a/addons/account/models/account.py b/addons/account/models/account.py index cabee127276..05141e2e857 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -203,7 +203,7 @@ class AccountAccount(models.Model): result.append((account.id, name)) return result - @api.one + @api.multi @api.returns('self', lambda value: value.id) def copy(self, default=None): default = dict(default or {}) @@ -510,7 +510,7 @@ class AccountJournal(models.Model): bank_accounts.unlink() return ret - @api.one + @api.multi @api.returns('self', lambda value: value.id) def copy(self, default=None): default = dict(default or {}) @@ -811,7 +811,7 @@ class AccountTax(models.Model): if not all(child.type_tax_use in ('none', self.type_tax_use) for child in self.children_tax_ids): raise ValidationError(_('The application scope of taxes in a group must be either the same as the group or "None".')) - @api.one + @api.multi @api.returns('self', lambda value: value.id) def copy(self, default=None): default = dict(default or {}, name=_("%s (Copy)") % self.name) diff --git a/addons/account_check_printing/models/account_journal.py b/addons/account_check_printing/models/account_journal.py index 24244272521..154d4c2fbd6 100644 --- a/addons/account_check_printing/models/account_journal.py +++ b/addons/account_check_printing/models/account_journal.py @@ -44,7 +44,7 @@ class AccountJournal(models.Model): rec._create_check_sequence() return rec - @api.one + @api.multi @api.returns('self', lambda value: value.id) def copy(self, default=None): rec = super(AccountJournal, self).copy(default) diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py index c91cf78a3fc..a1679362973 100644 --- a/addons/auth_signup/models/res_users.py +++ b/addons/auth_signup/models/res_users.py @@ -150,6 +150,7 @@ class ResUsers(models.Model): return user @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() sup = super(ResUsers, self) diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py index 0d32bd038c6..cb0b6db40dc 100644 --- a/addons/calendar/models/calendar.py +++ b/addons/calendar/models/calendar.py @@ -151,6 +151,7 @@ class Attendee(models.Model): return super(Attendee, self).create(values) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): raise UserError(_('You cannot duplicate a calendar attendee.')) @@ -1681,6 +1682,7 @@ class Meeting(models.Model): return events @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = default or {} diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index c4dbdc2e496..8c2371e2c6c 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -313,6 +313,7 @@ class Lead(models.Model): return super(Lead, self).write(vals) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() # set default value in context, if not already set (Put stage to 'new' stage) diff --git a/addons/event/models/event.py b/addons/event/models/event.py index 8551c6ec389..aab8f6596a6 100644 --- a/addons/event/models/event.py +++ b/addons/event/models/event.py @@ -292,6 +292,7 @@ class EventEvent(models.Model): return res @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = dict(default or {}, name=_("%s (copy)") % (self.name)) diff --git a/addons/google_calendar/models/calendar.py b/addons/google_calendar/models/calendar.py index ce8e50f6852..65a3cfee564 100644 --- a/addons/google_calendar/models/calendar.py +++ b/addons/google_calendar/models/calendar.py @@ -25,6 +25,7 @@ class Meeting(models.Model): return super(Meeting, self).write(values) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): default = default or {} if default.get('write_type', False): diff --git a/addons/hr/models/hr.py b/addons/hr/models/hr.py index 49d8a9e0859..9d2f9778f9e 100644 --- a/addons/hr/models/hr.py +++ b/addons/hr/models/hr.py @@ -68,6 +68,7 @@ class Job(models.Model): return super(Job, self.with_context(mail_create_nosubscribe=True)).create(values) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = dict(default or {}) diff --git a/addons/hr_attendance/models/hr_attendance.py b/addons/hr_attendance/models/hr_attendance.py index 1e43f98cd69..7a88460c20a 100644 --- a/addons/hr_attendance/models/hr_attendance.py +++ b/addons/hr_attendance/models/hr_attendance.py @@ -102,5 +102,6 @@ class HrAttendance(models.Model): }) @api.multi + @api.returns('self', lambda value: value.id) def copy(self): raise exceptions.UserError(_('You cannot duplicate an attendance.')) diff --git a/addons/hr_payroll/models/hr_salary_rule.py b/addons/hr_payroll/models/hr_salary_rule.py index 5d6c49a0bf7..95c06cbcb56 100644 --- a/addons/hr_payroll/models/hr_salary_rule.py +++ b/addons/hr_payroll/models/hr_salary_rule.py @@ -36,6 +36,7 @@ class HrPayrollStructure(models.Model): raise ValidationError(_('Error ! You cannot create a recursive Salary Structure.')) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = dict(default or {}, code=_("%s (copy)") % (self.code)) diff --git a/addons/l10n_be_invoice_bba/models/account_invoice.py b/addons/l10n_be_invoice_bba/models/account_invoice.py index 3cf74d36d97..d729efec3a3 100644 --- a/addons/l10n_be_invoice_bba/models/account_invoice.py +++ b/addons/l10n_be_invoice_bba/models/account_invoice.py @@ -173,6 +173,7 @@ class AccountInvoice(models.Model): return super(AccountInvoice, self).write(vals) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = default or {} diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py index 586c5e9c281..2407e58fdbd 100644 --- a/addons/mail/models/mail_template.py +++ b/addons/mail/models/mail_template.py @@ -274,6 +274,7 @@ class MailTemplate(models.Model): return super(MailTemplate, self).unlink() @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): default = dict(default or {}, name=_("%s (copy)") % self.name) diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index a41176235c1..24370c1be2c 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -548,6 +548,7 @@ class MassMailing(models.Model): return mass_mailing.name_get()[0] @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() default = dict(default or {}, diff --git a/addons/pad/models/pad.py b/addons/pad/models/pad.py index a1e31bf485a..0a90175bdc5 100644 --- a/addons/pad/models/pad.py +++ b/addons/pad/models/pad.py @@ -142,6 +142,7 @@ class PadCommon(models.AbstractModel): vals[field.pad_content_field] = self.pad_get_content(v) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() if not default: diff --git a/addons/pad_project/models/project.py b/addons/pad_project/models/project.py index eae27a4f6a7..6062135f7ea 100644 --- a/addons/pad_project/models/project.py +++ b/addons/pad_project/models/project.py @@ -20,6 +20,7 @@ class ProjectTask(models.Model): return super(ProjectTask, self).create(vals) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): if not self.use_pad: self = self.with_context(pad_no_create=True) diff --git a/addons/product/models/product.py b/addons/product/models/product.py index e3ed1900db9..4af2e5355ce 100644 --- a/addons/product/models/product.py +++ b/addons/product/models/product.py @@ -331,6 +331,7 @@ class ProductProduct(models.Model): return res @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): # TDE FIXME: clean context / variant brol if default is None: diff --git a/addons/product/models/product_template.py b/addons/product/models/product_template.py index 3f93f08d450..c00265e711e 100644 --- a/addons/product/models/product_template.py +++ b/addons/product/models/product_template.py @@ -336,6 +336,7 @@ class ProductTemplate(models.Model): return res @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): # TDE FIXME: should probably be copy_data self.ensure_one() diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 0bdbbf2fab6..8de21782852 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -293,6 +293,7 @@ class Project(models.Model): return self.browse(new_project_id).write({'tasks': [(6, 0, tasks.ids)]}) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): if default is None: default = {} @@ -642,6 +643,7 @@ class Task(models.Model): raise ValidationError(_('Task %s can not have a parent task and subtasks. Only one subtask level is allowed.' % (task.name,))) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): if default is None: default = {} diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index b3e2afe4399..2703757f2e8 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -222,6 +222,7 @@ class PurchaseOrder(models.Model): return super(PurchaseOrder, self).unlink() @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): new_po = super(PurchaseOrder, self).copy(default=default) for line in new_po.order_line: diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index a25dd6946f9..2182e4f5adb 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -722,6 +722,7 @@ class ResourceResource(models.Model): return super(ResourceResource, self).create(values) @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): self.ensure_one() if default is None: diff --git a/addons/website/models/website.py b/addons/website/models/website.py index d6deb298eb2..027f1641eba 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -714,6 +714,7 @@ class Page(models.Model): return True @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): view = self.env['ir.ui.view'].browse(self.view_id.id) # website.page's ir.ui.view should have a different key than the one it diff --git a/addons/website_quote/models/sale_order.py b/addons/website_quote/models/sale_order.py index 6824284b84e..65fb384fe77 100644 --- a/addons/website_quote/models/sale_order.py +++ b/addons/website_quote/models/sale_order.py @@ -75,6 +75,7 @@ class SaleOrder(models.Model): "request the payment when issuing the invoice.") @api.multi + @api.returns('self', lambda value: value.id) def copy(self, default=None): if self.template_id and self.template_id.number_of_days > 0: default = dict(default or {})