← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-server/trunk-import_data_imp-tfr into lp:openobject-server

 

tfr (Openerp) has proposed merging lp:~openerp-dev/openobject-server/trunk-import_data_imp-tfr into lp:openobject-server.

Requested reviews:
  Olivier Dony (OpenERP) (odo)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-import_data_imp-tfr/+merge/59663
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-import_data_imp-tfr/+merge/59663
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/trunk-import_data_imp-tfr.
=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py	2011-04-26 10:54:26 +0000
+++ openerp/osv/orm.py	2011-05-02 14:22:30 +0000
@@ -772,7 +772,13 @@
                     if line[i] and skip:
                         return False
                     continue
-
+                
+                #set the mode for m2o, o2m, m2m : xml_id/id/name
+                if len(field) == len(prefix)+1:
+                    mode = False
+                else:
+                    mode = field[len(prefix)+1]
+                    
                 # ID of the record using a XML ID
                 if field[len(prefix)]=='id':
                     try:
@@ -796,6 +802,14 @@
                     newfd = relation_obj.fields_get( cr, uid, context=context )
                     pos = position
                     res = []
+                    
+                    
+                    objects_to_link = line[i].split(config.get('csv_internal_sep'))
+                    if len(objects_to_link) > 1:
+                        for db_id in objects_to_link:
+                            res.append( _get_id(fields_def[field[len(prefix)]]['relation'], db_id, current_module, mode) )
+                        res = [(6,0,res)]
+                    
                     first = 0
                     while pos < len(datas):
                         res2 = process_liness(self, datas, prefix + [field[len(prefix)]], current_module, relation_obj._name, newfd, pos, first)
@@ -805,24 +819,22 @@
                         nbrmax = max(nbrmax, pos)
                         warning += w2
                         first += 1
+                        
+                        if data_res_id2:
+                            res.append( (4, data_res_id2) ) #6 or 4 that's the question
+                                
                         if (not newrow) or not reduce(lambda x, y: x or y, newrow.values(), 0):
                             break
+
                         res.append( (data_res_id2 and 1 or 0, data_res_id2 or 0, newrow) )
+                        
 
                 elif fields_def[field[len(prefix)]]['type']=='many2one':
                     relation = fields_def[field[len(prefix)]]['relation']
-                    if len(field) == len(prefix)+1:
-                        mode = False
-                    else:
-                        mode = field[len(prefix)+1]
                     res = _get_id(relation, line[i], current_module, mode)
 
                 elif fields_def[field[len(prefix)]]['type']=='many2many':
                     relation = fields_def[field[len(prefix)]]['relation']
-                    if len(field) == len(prefix)+1:
-                        mode = False
-                    else:
-                        mode = field[len(prefix)+1]
 
                     # TODO: improve this by using csv.csv_reader
                     res = []
@@ -848,7 +860,7 @@
                         warning += [_("Key/value '%s' not found in selection field '%s'") % (line[i], field[len(prefix)])]
                 else:
                     res = line[i]
-
+                    
                 row[field[len(prefix)]] = res or False
 
             result = (row, nbrmax, warning, data_res_id, xml_id)
@@ -863,7 +875,7 @@
         position = 0
         while position<len(datas):
             res = {}
-
+            
             (res, position, warning, res_id, xml_id) = \
                     process_liness(self, datas, [], current_module, self._name, fields_def, position=position)
             if len(warning):


Follow ups