diff --git a/odoo/addons/base/base.sql b/odoo/addons/base/base.sql index 31b7061cf78..9e3efde69a6 100644 --- a/odoo/addons/base/base.sql +++ b/odoo/addons/base/base.sql @@ -12,49 +12,6 @@ CREATE TABLE ir_act_url (primary key(id)) INHERITS (ir_actions); CREATE TABLE ir_act_server (primary key(id)) INHERITS (ir_actions); CREATE TABLE ir_act_client (primary key(id)) INHERITS (ir_actions); - -CREATE TABLE ir_model ( - id serial, - model varchar NOT NULL, - name varchar, - state varchar, - info text, - transient boolean, - primary key(id) -); - -CREATE TABLE ir_model_fields ( - id serial, - model varchar NOT NULL, - model_id integer references ir_model on delete cascade, - name varchar NOT NULL, - state varchar default 'base', - field_description varchar, - help varchar, - ttype varchar, - relation varchar, - relation_field varchar, - index boolean, - copy boolean, - related varchar, - readonly boolean default False, - required boolean default False, - selectable boolean default False, - translate boolean default False, - relation_table varchar, - column1 varchar, - column2 varchar, - store boolean, - primary key(id) -); - -CREATE TABLE res_lang ( - id serial, - name VARCHAR(64) NOT NULL UNIQUE, - code VARCHAR(16) NOT NULL UNIQUE, - primary key(id) -); - CREATE TABLE res_users ( id serial NOT NULL, active boolean default True, @@ -137,34 +94,6 @@ CREATE TABLE ir_model_data ( primary key(id) ); --- Records foreign keys and constraints installed by a module (so they can be --- removed when the module is uninstalled): --- - for a foreign key: type is 'f', --- - for a constraint: type is 'u' (this is the convention PostgreSQL uses). -CREATE TABLE ir_model_constraint ( - id serial NOT NULL, - date_init timestamp without time zone, - date_update timestamp without time zone, - module integer NOT NULL references ir_module_module on delete restrict, - model integer NOT NULL references ir_model on delete restrict, - type character varying(1) NOT NULL, - definition varchar, - name varchar NOT NULL, - primary key(id) -); - --- Records relation tables (i.e. implementing many2many) installed by a module --- (so they can be removed when the module is uninstalled). -CREATE TABLE ir_model_relation ( - id serial NOT NULL, - date_init timestamp without time zone, - date_update timestamp without time zone, - module integer NOT NULL references ir_module_module on delete restrict, - model integer NOT NULL references ir_model on delete restrict, - name varchar NOT NULL, - primary key(id) -); - CREATE TABLE res_currency ( id serial, name varchar NOT NULL, diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py index ebf2ead262a..723b99b9a32 100644 --- a/odoo/addons/base/ir/ir_model.py +++ b/odoo/addons/base/ir/ir_model.py @@ -674,6 +674,7 @@ class IrModelFields(models.Model): 'field_description': field.string, 'help': field.help or None, 'ttype': field.type, + 'state': 'manual' if field.manual else 'base', 'relation': field.comodel_name or None, 'index': bool(field.index), 'store': bool(field.store), diff --git a/odoo/models.py b/odoo/models.py index 3acf21dd204..5fe192d32b8 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -544,6 +544,8 @@ class BaseModel(object): @api.model def _add_manual_fields(self, partial): + if not self.pool._init_modules: + return IrModelFields = self.env['ir.model.fields'] manual_fields = self.pool.get_manual_fields(self._cr, self._name) for name, field_data in manual_fields.iteritems(): diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index db22649edf6..18a9731a892 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -275,12 +275,13 @@ class Registry(Mapping): lazy_property.reset_all(self) env = odoo.api.Environment(cr, SUPERUSER_ID, {}) - # load custom models - ir_model = env['ir.model'] - cr.execute('SELECT * FROM ir_model WHERE state=%s', ('manual',)) - for model_data in cr.dictfetchall(): - model_class = ir_model._instanciate(model_data) - model_class._build_model(self, cr) + # load custom models (except when loading 'base') + if self._init_modules: + ir_model = env['ir.model'] + cr.execute('SELECT * FROM ir_model WHERE state=%s', ('manual',)) + for model_data in cr.dictfetchall(): + model_class = ir_model._instanciate(model_data) + model_class._build_model(self, cr) # prepare the setup on all models models = env.values()