Impacted versions: all

On the model "ir.model.field" there is a field called "copy" : https://github.com/odoo/odoo/blob/master/odoo/addons/base/models/ir_model.py#L322

This name conflict with the method "copy" that exist browse record
https://github.com/odoo/odoo/blob/master/odoo/models.py#L4203

This make impossible to use the method copy on ir.model.field
And also raise warning when we make an inherits of the class ir.model.field (https://github.com/odoo/odoo/blob/master/odoo/models.py) as the field conflict with the method name

@odony @rco-odoo 

self.assertEqual(ir_field.state, 'manual' if field.manual else 'base')
                self.assertEqual(ir_field.index, bool(field.index))
                self.assertEqual(ir_field.store, bool(field.store))
                self.assertEqual(ir_field.copy, bool(field.copy))
                self.assertEqual(ir_field.related, bool(field.related) and ".".join(field.related))
                self.assertEqual(ir_field.readonly, bool(field.readonly))
                self.assertEqual(ir_field.required, bool(field.required))
                self.assertEqual(ir_field.selectable, bool(field.search or field.store))
                self.assertEqual(ir_field.translate, bool(field.translate))
                if field.relational:
                    self.assertEqual(ir_field.relation, field.comodel_name)
                if field.type == 'one2many' and field.store:
                    self.assertEqual(ir_field.relation_field, field.inverse_name)
                if field.type == 'many2many' and field.store:
                    self.assertEqual(ir_field.relation_table, field.relation)
                    self.assertEqual(ir_field.column1, field.column1)
                    self.assertEqual(ir_field.column2, field.column2)
                    relation = self.env['ir.model.relation'].search([('name', '=', field.relation)])
                    self.assertTrue(relation)
                    self.assertIn(relation.model.model, [field.model_name, field.comodel_name])
class TestSchema(common.TransactionCase):
    def get_table_data(self, tablename):
        query = ''' SELECT table_catalog, table_schema, table_name, table_type,
                           user_defined_type_catalog, user_defined_type_schema,
                           user_defined_type_name, is_insertable_into, is_typed
                    FROM information_schema.tables
                    WHERE table_name=%s '''
        self.cr.execute(query, [tablename])
        return self.cr.dictfetchone()
    def get_columns_data(self, tablename):