Skip to content

Instantly share code, notes, and snippets.

@sebalix
Created September 14, 2016 16:42
Show Gist options
  • Save sebalix/296f74839aa9cf4ff8a72a8ce4d62f88 to your computer and use it in GitHub Desktop.
Save sebalix/296f74839aa9cf4ff8a72a8ce4d62f88 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
# Copyright 2016 ABF OSIELL <http://osiell.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import sys
from openerp import models, fields, SUPERUSER_ID
from openerp.modules.registry import RegistryManager
MODELS = ['my.model1', 'my.model2']
def camelize_model_name(model_name):
return ''.join([x.capitalize() for x in model_name.split('.')])
class ModelBuilder(models.AbstractModel):
_name = 'model.builder'
def _register_hook(self, cr):
super(ModelBuilder, self)._register_hook(cr)
for model_name in MODELS:
# Prepare the data model class
camel_name = camelize_model_name(model_name)
DataModel = type(
camel_name, (models.Model,), {
'_name': model_name,
'name': fields.Char(),
})
setattr(sys.modules[__name__], camel_name, DataModel)
# Register the data models
model = DataModel._build_model(self.pool, cr))
model._prepare_setup(cr, SUPERUSER_ID, False)
model._setup_base(cr, SUPERUSER_ID, False)
model._setup_fields(cr, SUPERUSER_ID)
model._setup_complete(cr, SUPERUSER_ID)
RegistryManager.signal_registry_change(cr.dbname)
assert model is self.pool[model._name]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment