Skip to main content

Python CSV to Odoo importation library

Project description

csv2odoo is a Python converter from the csv format to OpenObject data

models.

csv2odoo is an easy way to import records from heterogeneous datas by editing a simple script as the manner of Odoo data model. You can specify pre-treatment(s) before any records insertions, you can also, according to criteria, omit the insertion of an entire record, mofify it or just create it (CRUD abilities).

Some features of csv2odoo include abilities of Python csv module to specify input file configuration. It also include some useful functions to make specific value operations on each individual columns (See callbacks for more informations).

Quick start

Sample:

#!/usr/bin/env python
#.. your_script.py
from csv2odoo import Model, Field, Odoo, Session

#
# Configure Odoo connection
#

odoo = Odoo(
    host='198.168.0.1', port=8069,
    user='admin', pwd='admin', dbname='database',
    lang'fr_FR')

#
# Create a new importation instance::
#

session = Session(
    'file.csv', delimiter=';', quotechar='"', encoding='utf-8',
    offset=1, limit=10)

#
# Define your mapping to link both csv and Odoo::
#

# res.partner is unique by siren and will not be updated if exists
res_partner = Model('res.partner', fields=[
        Field('name', columns=[1]),
        Field('siren', columns=[2]),
        Field('website', columns=[16]),
    ], update=False, search=['siren'])

# res.country is unique by code and name and will not be updated if exists
res_country = Model('res.country', fields=[
        Field('code', columns=[13], default='FR'),
        Field('name', columns=[13], default='FRANCE'),
    ], update=False, search=['code', 'name'])

# res.partner.address is unique by type and partner_id
res_partner_address = Model('res.partner.address', fields=[

        # Simple fields, some with default value and some unique between records
        Field('zip', columns=[9], default='35000'),
        Field('city', columns=[10], default='RENNES'),
        Field('phone', column=[14]),
        Field('fax', columns=[15]),
        Field('email', columns=[17], unique=True, ignore=True),
        Field('cedex', columns=[68]),

        # Mixing columns (by concatenation or selection)
        Field('street', columns=[7, 6], method='selection'),
        Field('street2', columns=[8, 5], method='concatenate'),

        # Model's relations with res.partner which must exists
        Field('country_id', relation=res_country),
        Field('partner_id', relation=res_partner, required=True),

        # Adding a custom value to a missing field in the `csv` file
        Field('type', custom='delivery'),
    ], search=['type', 'partner_id'])

#
# Finally join objects to the session which starts the import process
#

# There is no particular needs to also inject res.partner model, as it's
# already contained as a relation of res.partner.address
session.bind(odoo, [res_partner_address, ])

#
# Optionaly: show statistics of records's activities during the importation process
#

csv2odoo.show_stats()

Supported Python versions

csv2odoo support Python versions 2.7.

License

This software is made available under the LGPLv3 license.

Bugs or suggestions

Please, feel free to report bugs or suggestions in the Bug Tracker!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csv2odoo-0.7.5.tar.gz (1.8 MB view details)

Uploaded Source

File details

Details for the file csv2odoo-0.7.5.tar.gz.

File metadata

  • Download URL: csv2odoo-0.7.5.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for csv2odoo-0.7.5.tar.gz
Algorithm Hash digest
SHA256 4bbc0e7848ff6b5291b417111995cf87886716a74dd1bb822ba9bad123cf259e
MD5 581df44083e004800cc78d3749105f8f
BLAKE2b-256 abf6d393152527d59a465b0b2ec7bf4ae96553e47dee06e4f28c63c31497fd51

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page