from openerp import models, fields

'''
This module  create module of Courso
'''


class Course(models.Model):
    '''
    This class create module of Course
    '''

    _name = 'openacademy.course'  # Model odoo name

    name = fields.Char(string='Title', required=True)   # Field reserved to identified name rec
    description = fields.Text(string='Description')
    responsible_id = fields.Many2one('res.users',
        ondelete='set null', string="Responsible", index=True)
    session_ids = fields.One2many(
        'openacademy.session', 'course_id', string="Sessions")

    _sql_constraints = [
        ('name_description_check',
         'CHECK(name != description)',
         "The title of the course should not be the description"),

        ('name_unique',
         'UNIQUE(name)',
         "The course title must be unique"),
    ]

from openerp import api, models, fields

'''
This module  create module of Courso
'''


class Course(models.Model):
    '''
    This class create module of Course
    '''

    _name = 'openacademy.course'  # Model odoo name

    name = fields.Char(string='Title', required=True)   # Field reserved to identified name rec
    description = fields.Text(string='Description')
    responsible_id = fields.Many2one('res.users',
        ondelete='set null', string="Responsible", index=True)
    session_ids = fields.One2many(
        'openacademy.session', 'course_id', string="Sessions")

    _sql_constraints = [
        ('name_description_check',
         'CHECK(name != description)',
         "The title of the course should not be the description"),

        ('name_unique',
         'UNIQUE(name)',
         "The course title must be unique"),
    ]

    @api.one
    def copy(self, default=None):
        default = dict(default or {})

        copied_count = self.search_count(
            [('name', '=like', u"Copy of {}%".format(self.name))])
        if not copied_count:
            new_name = u"Copy of {}".format(self.name)
        else:
            new_name = u"Copy of {} ({})".format(self.name, copied_count)

        default['name'] = new_name
        return super(Course, self).copy(default)

Modify copy method into inherit
[REF] openacademy: Modify copy method into inherit

- from openerp import models, fields
+ from openerp import api, models, fields
  
  '''
  This module  create module of Courso
  '''
  
  
  class Course(models.Model):
      '''
      This class create module of Course
      '''
  
      _name = 'openacademy.course'  # Model odoo name
  
      name = fields.Char(string='Title', required=True)   # Field reserved to identified name rec
      description = fields.Text(string='Description')
      responsible_id = fields.Many2one('res.users',
          ondelete='set null', string="Responsible", index=True)
      session_ids = fields.One2many(
          'openacademy.session', 'course_id', string="Sessions")
  
      _sql_constraints = [
          ('name_description_check',
           'CHECK(name != description)',
           "The title of the course should not be the description"),
  
          ('name_unique',
           'UNIQUE(name)',
           "The course title must be unique"),
      ]
  
+     @api.one
+     def copy(self, default=None):
+         default = dict(default or {})
+ 
+         copied_count = self.search_count(
+             [('name', '=like', u"Copy of {}%".format(self.name))])
+         if not copied_count:
+             new_name = u"Copy of {}".format(self.name)
+         else:
+             new_name = u"Copy of {} ({})".format(self.name, copied_count)
+ 
+         default['name'] = new_name
+         return super(Course, self).copy(default)
+ 
Modify copy method into inherit
## Code Before:
from openerp import models, fields

'''
This module  create module of Courso
'''


class Course(models.Model):
    '''
    This class create module of Course
    '''

    _name = 'openacademy.course'  # Model odoo name

    name = fields.Char(string='Title', required=True)   # Field reserved to identified name rec
    description = fields.Text(string='Description')
    responsible_id = fields.Many2one('res.users',
        ondelete='set null', string="Responsible", index=True)
    session_ids = fields.One2many(
        'openacademy.session', 'course_id', string="Sessions")

    _sql_constraints = [
        ('name_description_check',
         'CHECK(name != description)',
         "The title of the course should not be the description"),

        ('name_unique',
         'UNIQUE(name)',
         "The course title must be unique"),
    ]

## Instruction:
Modify copy method into inherit
## Code After:
from openerp import api, models, fields

'''
This module  create module of Courso
'''


class Course(models.Model):
    '''
    This class create module of Course
    '''

    _name = 'openacademy.course'  # Model odoo name

    name = fields.Char(string='Title', required=True)   # Field reserved to identified name rec
    description = fields.Text(string='Description')
    responsible_id = fields.Many2one('res.users',
        ondelete='set null', string="Responsible", index=True)
    session_ids = fields.One2many(
        'openacademy.session', 'course_id', string="Sessions")

    _sql_constraints = [
        ('name_description_check',
         'CHECK(name != description)',
         "The title of the course should not be the description"),

        ('name_unique',
         'UNIQUE(name)',
         "The course title must be unique"),
    ]

    @api.one
    def copy(self, default=None):
        default = dict(default or {})

        copied_count = self.search_count(
            [('name', '=like', u"Copy of {}%".format(self.name))])
        if not copied_count:
            new_name = u"Copy of {}".format(self.name)
        else:
            new_name = u"Copy of {} ({})".format(self.name, copied_count)

        default['name'] = new_name
        return super(Course, self).copy(default)
