← Back to team overview

c2c-oerpscenario team mailing list archive

Re: [Bug 693308] Re: Import / Export to review in Trunk

 

Fabien,

for the import I believe it's ok you can specify the referential indeed.

Now, I believe for the export you can still no choose a specific
referential/module, indeed, here is how the get_xml_id method is implemented
in server/bin/orm.py:

    def get_xml_id(self, cr, uid, ids, *args, **kwargs):
        """Find out the XML ID of any database record, if there
        is one. This method works as a possible implementation
        for a function field, to be able to add it to any
        model object easily, referencing it as ``osv.osv.get_xml_id``.

        **Synopsis**: ``get_xml_id(cr, uid, ids) -> { 'id': 'module.xml_id'
}``

        :return: the fully qualified XML ID of the given object,
                 defaulting to an empty string when there's none
                 (to be usable as a function field).
        """
        result = dict.fromkeys(ids, '')
        model_data_obj = self.pool.get('ir.model.data')
        data_ids = model_data_obj.search(cr, uid,
                [('model', '=', self._name), ('res_id', 'in', ids)])
        data_results = model_data_obj.read(cr, uid, data_ids,
                ['name', 'module', 'res_id'])
        for record in data_results:
            result[record['res_id']] = '%(module)s.%(name)s' % record
        return result


I think, that in the case your record has several ids in different
referentials (a common case), then you have several data_results for the
same result[record['res_id']], no?
But in that case, only the last record in data_results will be returned or I
missed something?

IMHO, even if it's not implemented in the clients, in order to maximize the
future server API stability, I think it would be nice this get_xml_id method
accepts a 'module' argument in its context.
If present, the given module will restrict the search in  data_ids =
model_data_obj.search(cr, uid, [('model', '=', self._name), ('res_id', 'in',
ids)])

Then it will only be about adding the feature in the clients, migration will
be smooth. I believe this has added value.
On a side note: I personally don't really like calling this id "xml_id", I
mean XML is just a format you used to feed those ids, could also have been
YAML, webservices, whatever.
Not sure what would be more appropriate, may be something like module_ref_id
? Not sure. In any case naming is very important for the success of a
framework/API.

Did I miss something?
BTW, thanks for the video, will definitely help lots of folks getting
started to OpenERP import/export.


On Wed, Dec 29, 2010 at 3:29 PM, Fabien (Open ERP) <fp@xxxxxxxxxxx> wrote:

> @Raphaël Valyi
> The import / export we made support external referancials (through xml id,
> accepting a module name)
>
> Note that this bug report is just for the UI of the import / export that
> has already been implemented in trunk GTK:
> http://www.youtube.com/watch?v=e1LbaiSa1aM
>
> --
> You received this bug notification because you are a member of OpenERP
> Framework Experts, which is subscribed to OpenObject Web Client.
> https://bugs.launchpad.net/bugs/693308
>
> Title:
>  Import / Export to review in Trunk
>
> Status in OpenObject Web Client:
>   In Progress
>
> Bug description:
>  Hello,
>
> The import/export tool must be reviewed completly in trunk in order to be
> easier to use. The main change is the "import compatible" option that allows
> to export any kind of data (including one2many, many2one, etc) and reimport
> the file after to update or create new data. The v5 behaviour was unuseable
> at all.
>
> I already commited the changes in the server and GTK client to support
> this. Only the web client is remaining.
>
> Have a look at the attached PDF file for the useability of the two screens
> to review.
>
> Import Tool
> -----------
>
> The import tool must be simplified. We don't need to select the fields
> anymore, it will automatically take the columns defined by the first row of
> the .CSV file.
>
> When you select a file, the web client should make a preview of the first
> three rows. You can change the CSV options "field separator, field
> delimitor, encoding". Just display the columns as it, without any
> interpretation. (if they are ID or XML ID, just display the IDs).
>
> Export Tool
> -----------
>
> There is a real difference between the normal mode and the "Import
> Compatible" mode.
>
> If you set the import compatible mode:
> 1. For every field:
>   - many2one: just display two children: id and .id
>   - many2many: just display this field without children
>   - one2many: normal behaviour
> 2. When you export, put the name of the fields in the first columns, and
> not their label. (example: partner_id/id)
>
> If you don't set the import compatible mode. For every:
> 1. For every field:
>   - many2one: you can see all children
>   - many2many: you can see all children
>   - one2many: you can see all children
> 2. When you export, put the label of the fields in the first columns, and
> not their name. (example: Partner/ID)
>
> I changed the format of the csv file. Instead of "db_id", I used ".id". An
> example of "import compatible" file exported from partners:
>
>   id,.id,name,address.id,address/id,address/name
>
>   base.res_partner_agrolait,3,Agrolait,11,base.res_partner_address_8delivery,Paul
>
> This has to be done in trunk, before v6.0. I think it's critical for
> OpenERP Online users.
>
> Test with the GTK client to be sure the behaviour is the same in the web
> and GTK client.
>
>
>
>

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/693308

Title:
  Import / Export to review in Trunk

Status in OpenObject Web Client:
  In Progress

Bug description:
  Hello,

The import/export tool must be reviewed completly in trunk in order to be easier to use. The main change is the "import compatible" option that allows to export any kind of data (including one2many, many2one, etc) and reimport the file after to update or create new data. The v5 behaviour was unuseable at all.

I already commited the changes in the server and GTK client to support this. Only the web client is remaining.

Have a look at the attached PDF file for the useability of the two screens to review.

Import Tool
-----------

The import tool must be simplified. We don't need to select the fields anymore, it will automatically take the columns defined by the first row of the .CSV file.

When you select a file, the web client should make a preview of the first three rows. You can change the CSV options "field separator, field delimitor, encoding". Just display the columns as it, without any interpretation. (if they are ID or XML ID, just display the IDs).

Export Tool
-----------

There is a real difference between the normal mode and the "Import Compatible" mode.

If you set the import compatible mode:
1. For every field:
  - many2one: just display two children: id and .id
  - many2many: just display this field without children
  - one2many: normal behaviour
2. When you export, put the name of the fields in the first columns, and not their label. (example: partner_id/id)

If you don't set the import compatible mode. For every:
1. For every field:
  - many2one: you can see all children
  - many2many: you can see all children
  - one2many: you can see all children
2. When you export, put the label of the fields in the first columns, and not their name. (example: Partner/ID)

I changed the format of the csv file. Instead of "db_id", I used ".id". An example of "import compatible" file exported from partners:

  id,.id,name,address.id,address/id,address/name
  base.res_partner_agrolait,3,Agrolait,11,base.res_partner_address_8delivery,Paul

This has to be done in trunk, before v6.0. I think it's critical for OpenERP Online users.

Test with the GTK client to be sure the behaviour is the same in the web and GTK client.






Follow ups

References