Hello guys,
This is a change/feature that affect mostly the
magentoerpconnect users (they now have a list, see:
https://launchpad.net/~magentoerpconnect-community
) for now, but I'm also sending that mail to the framework expert team
so they gain awareness of generic the base_external_referentials module
(as we believe it's very useful, we would rather like all
ecommerce/other external systems to reuse it instead of adding their
own foreign keys and mappings and not being multi-referential's) and
what we just changed in it.
So we inform you that in last revision of the connector and
dependent modules, especially base_external_referentials, we made an
important change.
Indeed, instead of the new ir_model_data external_referential_id
to be a normal foreign key field, it's now a computed field that infer
the referential from the ir_model_data module name, provided the name
is structured as follow:
extref.referential_name
in that case referential_name is used to match the referential
by it's name. In any case, we keep storing the referential key using
store=True to allow efficient SQL and easier backward compatibility.
Why we did that:
- ir_model_data has a unicity constraint upon its name: must
have a unique name per module. This was incompatible with the
multi-referential usage potentially!
- actually, the "module" field of ir_model_data already plays
the role of the referential reference. In our case we just want to add
a referential object with custom mapping and other properties, that's
why we need an external_referential_id key, but in any case, it should
not be redundant with the "module" key.
- doing this way has a better adherence to existing OpenERP
import/export feature. Indeed, once those tools let you specify or read
the module (I talk about that with Fabien and he said it was a possible
evol), then you could specify / read the external referential using
built'in features only.
How to migrate:
I'll hopefully come back and post the SQL command, but basically
you should update your ir_model_data of your entities that are sunch'ed
with an external referential in order to have the module name matching:
extref.referential_name instead of the old
"base_external_referentials_keep" dummy name.
PS: their is one more change I would like to make
in base_external_referentials: rather than introducing the
intermediary external_osv layer between osv.osv and business objects, I
think it would be better to monkey patch osv.osv directly. Well it's
not the worst monkey patching in the world as we would only add
the external_osv feature and not change existing features. The
advantage of extending osv.osv directly is that you wouldn't need
anymore to have to code anything to have OpenERP managing the
multi-references of some entity, you could just open your referential
entity and add custom in/out external mappings as you like. However,
that new change will luckily be transparent for migrations and updating
the code will be trivial.
I think the framework expert list is the best place if you want
to discuss the architecture of base_external_referentials.
Best regards,
Raphaël Valyi
_______________________________________________
Mailing list: https://launchpad.net/~openerp-expert-framework
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-expert-framework
More help : https://help.launchpad.net/ListHelp