← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client-web/trunk-bug-748465-kch into lp:openobject-client-web

 

Kunal Chavda (OpenERP) has proposed merging lp:~openerp-dev/openobject-client-web/trunk-bug-748465-kch into lp:openobject-client-web.

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)
Related bugs:
  Bug #748465 in OpenERP Web Client: "fields export - missing field / wrong name"
  https://bugs.launchpad.net/openobject-client-web/+bug/748465

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client-web/trunk-bug-748465-kch/+merge/56556

Hello,
We have one object for Invoice (account.invoice) but we can have various types of invoices (Customer inv, customer refund, supplier inv..) so such situation we pass context on their actions.

So for export data we must pass view_id for exact fields for view.

Thanks.
-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/trunk-bug-748465-kch/+merge/56556
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/trunk-bug-748465-kch.
=== modified file 'addons/openerp/controllers/impex.py'
--- addons/openerp/controllers/impex.py	2011-03-03 10:02:38 +0000
+++ addons/openerp/controllers/impex.py	2011-04-06 11:58:24 +0000
@@ -92,7 +92,7 @@
     data = fp.read()
     return data
 
-def _fields_get_all(model, context=None):
+def _fields_get_all(model, views, context=None):
 
     context = context or {}
 
@@ -118,8 +118,8 @@
 
     proxy = rpc.RPCProxy(model)
 
-    tree_view = proxy.fields_view_get(False, 'tree', context)
-    form_view = proxy.fields_view_get(False, 'form', context)
+    tree_view = proxy.fields_view_get(views.get('tree', False), 'tree', context)
+    form_view = proxy.fields_view_get(views.get('form', False), 'form', context)
 
     fields = {}
     fields.update(get_view_fields(tree_view))
@@ -138,6 +138,12 @@
         params, data = TinyDict.split(kw)
         ctx = dict((params.context or {}), **rpc.get_session().context)
 
+        views = {}
+        if params.view_mode and params.view_ids:
+            for i, view in enumerate(params.view_mode):
+                if params.view_ids[i]:
+                    views[view] = params.view_ids[i]
+
         exports = rpc.RPCProxy('ir.exports')
 
         headers = [{'string' : 'Name', 'name' : 'name', 'type' : 'char'}]
@@ -147,6 +153,7 @@
                                  url=tools.url('/openerp/impex/get_fields'),
                                  field_parent='relation',
                                  context=ctx,
+                                 views=views,
                                  import_compat=int(import_compat))
 
         tree.show_headers = False
@@ -156,7 +163,7 @@
             [], ctx)
 
         return dict(existing_exports=existing_exports, model=params.model, ids=params.ids, ctx=ctx,
-                    search_domain=params.search_domain, tree=tree, import_compat=import_compat)
+                    search_domain=params.search_domain, tree=tree, import_compat=import_compat, view_mode=params.view_mode, view_ids=params.view_ids)
 
     @expose()
     def save_exp(self, **kw):
@@ -189,6 +196,7 @@
     def get_fields(self, model, prefix='', name='', field_parent=None, **kw):
 
         parent_field = kw.get('ids').split(',')[0].split('/')
+
         if len(parent_field) == 1:
             parent_field = parent_field[0]
         else:
@@ -204,12 +212,14 @@
 
         ctx.update(**rpc.get_session().context)
 
-        try:
-            views = ast.literal_eval(kw['views'])
-        except:
-            views = {}
+        views = {}
+        if not kw.get('ids'):
+            try:
+                views = ast.literal_eval(kw['views'])
+            except:
+                views
 
-        fields = _fields_get_all(model, ctx)
+        fields = _fields_get_all(model, views, ctx)
         m2ofields = cherrypy.session.get('fld')
         if m2ofields:
             for i in m2ofields:
@@ -403,7 +413,7 @@
             return False
         result = result.get('datas',[])
 
-        if import_compat:
+        if bool(int(import_compat)):
             params.fields2 = flds
 
         if export_format == 'xls':

=== modified file 'addons/openerp/controllers/templates/exp.mako'
--- addons/openerp/controllers/templates/exp.mako	2011-02-21 14:45:50 +0000
+++ addons/openerp/controllers/templates/exp.mako	2011-04-06 11:58:24 +0000
@@ -81,7 +81,9 @@
         function do_import_cmp(){
             jQuery('#view_form').attr({
                 'action': openobject.http.getURL('/openerp/impex/exp', {
-                    'import_compat': jQuery('#import_compat').val()
+                    'import_compat': jQuery('#import_compat').val(),
+                    '_terp_view_ids' : jQuery('#_terp_view_ids').val(),
+            		'_terp_view_mode' : jQuery('#_terp_view_mode').val()
                 })
             }).submit();
         }
@@ -142,6 +144,8 @@
     <input type="hidden" id="_terp_search_domain" name="_terp_search_domain" value="${search_domain}"/>
     <input type="hidden" id="_terp_fields2" name="_terp_fields2" value="[]"/>
     <input type="hidden" id="_terp_context" name="_terp_context" value="${ctx}"/>
+	<input type="hidden" id="_terp_view_ids" name="_terp_view_ids" value="${view_ids}"/>
+    <input type="hidden" id="_terp_view_mode" name="_terp_view_mode" value="${view_mode}"/>
 
     <table class="view" cellspacing="5" border="0" width="100%">
         <tr>

=== modified file 'addons/openerp/static/javascript/form.js'
--- addons/openerp/static/javascript/form.js	2011-04-04 15:17:27 +0000
+++ addons/openerp/static/javascript/form.js	2011-04-06 11:58:24 +0000
@@ -637,7 +637,7 @@
 						var _val = value.split(',');
 						var ref_val = _val[0];
 						var ref_id = _val[1];
-						
+
 						jQuery('option[value="'+ref_val+'"]', idSelector(k+'_reference')).attr('selected', 'selected')
 						if($caller.attr('kind') == 'many2one') {
 							var caller_id = $caller.attr('id');
@@ -1340,7 +1340,7 @@
 	        _terp_search_domain: jQuery(idSelector('_terp_search_domain')).val(),
 	        _terp_ids: jQuery(idSelector('_terp_ids')).val(),
 	        _terp_view_ids : jQuery(idSelector('_terp_view_ids')).val(),
-	        _terp_view_mode : jQuery(idSelector('#_terp_view_mode')).val() 
+	        _terp_view_mode : jQuery(idSelector('_terp_view_mode')).val()
 		})
     }, null, {
         height: '98%',
@@ -1352,9 +1352,9 @@
 
     jQuery.frame_dialog({src:openobject.http.getURL('/openerp/impex/imp', {
 	        _terp_model: jQuery(idSelector('_terp_model')).val(),
-	        _terp_context: jQuery(idSelector('#_terp_context')).val(),
+	        _terp_context: jQuery(idSelector('_terp_context')).val(),
 	        _terp_view_ids : jQuery(idSelector('_terp_view_ids')).val(),
-	        _terp_view_mode : jQuery(idSelector('#_terp_view_mode')).val() 
+	        _terp_view_mode : jQuery(idSelector('_terp_view_mode')).val()
 		})
     }, null, {
         height: '98%',


Follow ups