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%',
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-web
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-web
More help : https://help.launchpad.net/ListHelp