diff options
| author | Kunal Chavda (OpenERP) <kch@tinyerp.com> | 2011-08-29 18:17:43 +0530 |
|---|---|---|
| committer | Kunal Chavda (OpenERP) <kch@tinyerp.com> | 2011-08-29 18:17:43 +0530 |
| commit | 4e8923ec8c50d455437c80fbcb5d4b8f9542b1d6 (patch) | |
| tree | 6919e8af8cab836c565ca93adf8e4a6c83469200 | |
| parent | a49a0288b83f55ecc0cf912af8712c0c9a64148c (diff) | |
[IMP]Implement selection box of list of fields under the header.
bzr revid: kch@tinyerp.com-20110829124743-0pcuv3e0u37cbpjf
| -rw-r--r-- | addons/base/controllers/main.py | 12 | ||||
| -rw-r--r-- | addons/base/static/src/js/data_import.js | 9 | ||||
| -rw-r--r-- | addons/base/static/src/xml/base.xml | 18 |
3 files changed, 32 insertions, 7 deletions
diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index ca4b8c76f7a..c56a66342f0 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -436,7 +436,7 @@ def clean_action(req, action): context = req.session.eval_context(req.context) eval_ctx = req.session.evaluation_context(context) action.setdefault('flags', {}) - + # values come from the server, we can just eval them if isinstance(action.get('context'), basestring): action['context'] = eval( action['context'], eval_ctx ) or {} @@ -1289,7 +1289,7 @@ class Import(View): _fields = {} _fields_invert = {} error = None - + all_fields = [] fields = dict(req.session.model(params.get('model')).fields_get(False, req.session.eval_context(req.context))) fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) @@ -1320,7 +1320,7 @@ class Import(View): prefix_node+field, None, st_name+'/', level-1) fields.update({'id':{'string':'ID'},'.id':{'string':'Database ID'}}) model_populate(fields) - + all_fields = fields.keys() try: data = csv.reader(params.get('csvfile').file, quotechar=str(params.get('csvdel')), delimiter=str(params.get('csvsep'))) except: @@ -1336,6 +1336,7 @@ class Import(View): records.append(row) if i == limit: break + for line in records: for word in line: word = str(word.decode(params.get('csvcode'))) @@ -1344,7 +1345,8 @@ class Import(View): elif word in _fields_invert.keys(): fields.append((_fields_invert[word], word)) else: - error = {'message':("You cannot import the field '%s', because we cannot auto-detect it" % (word,))} + fields.append((word, word)) +# error = {'message':("You cannot import the field '%s', because we cannot auto-detect it" % (word,))} break except: error = {'message':('Error processing the first line of the file. Field "%s" is unknown') % (word,)} @@ -1354,7 +1356,7 @@ class Import(View): error=dict(error, preview=params.get('csvfile').file.read(200)) return simplejson.dumps({'error':error}) - return simplejson.dumps({'records':records[1:],'fields':fields}) + return simplejson.dumps({'records':records[1:],'fields':fields,'all_fields':all_fields}) @openerpweb.httprequest def import_data(self, req, **params): diff --git a/addons/base/static/src/js/data_import.js b/addons/base/static/src/js/data_import.js index 6450f8709a3..a98f387eeaf 100644 --- a/addons/base/static/src/js/data_import.js +++ b/addons/base/static/src/js/data_import.js @@ -54,10 +54,11 @@ openerp.base.DataImport = openerp.base.Dialog.extend({ }, import_results:function(res){ $('#result, #success').empty(); + $(".ui-button-text:contains('Import File')").parent().attr("disabled",false); var results = $.parseJSON(res); var result_node = $("#result"); if (results['records']){ - records = {'header':results['fields'],'row':results['records']}; + records = {'header':results['fields'],'sel':results['all_fields'],'row':results['records']}; result_node.append(QWeb.render('ImportView-result',{'records':records})); }else if(results['error']){ result_node.append(QWeb.render('ImportView-result',{'error': results['error']})); @@ -65,6 +66,12 @@ openerp.base.DataImport = openerp.base.Dialog.extend({ var success_node = $("#success"); success_node.append(QWeb.render('ImportView-result',{'success': results['success']})); } + $('td #header').each(function(){ + var head = $(this).text(); + if (jQuery.inArray(head,results['all_fields']) <= -1){ + $(".ui-button-text:contains('Import File')").parent().attr("disabled",true); + } + }); }, stop: function() { $(this.$dialog).remove(); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 60b9c4c4c08..7fd999d00d5 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1459,7 +1459,23 @@ <t t-if="record=='header'"> <tr class="oe_import_grid-header"> <t t-foreach="records.header" t-as="header"> - <th class="oe_import_grid-cell"><t t-esc="header[0]"/></th> + <td class="oe_import_grid-cell" id="header"><t t-esc="header[0]"/></td> + </t> + </tr> + </t> + <t t-if="record=='sel'"> + <tr> + <t t-foreach="records.header" t-as="header"> + <td> + <select name="fld" id="fld"> + <option selected="selected" value=""></option> + <t t-foreach="records.sel" t-as="selection"> + <option t-att="{'selected': header[0] === selection ? 'selected' : null}" + t-att-value="selection"><t t-esc="selection"/> + </option> + </t> + </select> + </td> </t> </tr> </t> |
