Python CSV to OpenERP importation library
Project description
csv2oerp is a simple tool to perform a data migration, through an OpenERP mapping bounded to a CSV file. You can easily order your data as the manner of OpenERP (models, fields). The structure of the mapping is simple and intuitive, you can also perform a pre-process on data being imported, omit it or just modify it.
Quick start
Import csv2oerp and some callbacks:
>>> from csv2oerp import Import_session >>> from csv2oerp.fields import Column, Custom, Relation >>> from csv2oerp.callbacks import get_id, get_ids
Configure OpenERP connection:
>>> host = '198.168.0.1' >>> port = 8069 >>> dbname = 'database' >>> user = 'admin' >>> pwd = 'admin' >>> csv2oerp.connect(host, port, user, pwd, dbname)
Create a new importation instance:
>>> example_file = Import_session()
Set the CSV file to use:
>>> example_file.set_input_file('example_file.csv', ',', '"', 'utf-8')
Define a custom callback(Field’s value pre-treatment):
>>> def country_code(self, model, field, value, line): ... """Return the first two uppered characters from current column value ... """ ... return value[:2].upper()
Define your mapping to link both csv and OpenERP:
>>> mapping = { ... # Define a base model (Always in list form) ... 'res.partner.address': [ ... { ... ... # Custom field's value ... 'type': Custom('default', search=True), ... ... # Concatenated columns fields ... 'street': Column([7, 6]), ... 'street2': Column([8, 5]), ... ... # Simple fields ... 'zip': Column(9), ... 'city': Column(10), ... 'cedex': Column(68), ... 'phone': Column(14), ... 'fax': Column(15), ... 'email': Column(17), ... ... # Model's relation with dynamic insertion from OpenERP database ... # Not native object from OpenERP framework ... 'region_id': Custom(11, get_id('res.region', ['name'])) ... 'dep_id': Custom(12, get_id('res.dep', ['name'])) ... ... # Model's relations not updated if exists ... 'country_id': Relation('REL_res_partner_address,NO_UPDATE::res.country'), ... ... # Model's relations with unique value between objects ... 'partner_id': Relation('REL_res_partner_address::res.partner', search=True), ... ... }, ... ], ... ... # Define relations between models ... 'REL_res_partner_address::res.partner': { ... 'name': Column(1), ... 'siren': Column(2), ... 'website': Column(16), ... 'comment': Column(56), ... }, ... ... # Relation without write if exists ... 'REL_res_partner_address,NO_UPDATE::res.country': { ... 'code': Column(13, callback=_country_code, search=True), ... 'name': Column(13, search=True), ... }, ... }) >>> example_file.set_mapping(mapping)
Finally start the import process:
>>> example_file.start()
And show statistics of objects’s activities during the importation process:
>>> csv2oerp.show_stats()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.