[IMP] Integrate import into sidebar. Use fields_get instead of parsing views.
bzr revid: fme@openerp.com-20110728161853-21ml7wc7kgtfha45
This commit is contained in:
parent
e71bb13c01
commit
506e483974
|
@ -972,35 +972,6 @@ def node_attributes(node):
|
|||
return dict([(str(attrs.item(i).localName), attrs.item(i).nodeValue)
|
||||
for i in range(attrs.length)])
|
||||
|
||||
def _fields_get_all(req, model, views, context=None):
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
def parse(root, fields):
|
||||
for node in root.childNodes:
|
||||
if node.nodeName in ('form', 'notebook', 'page', 'group', 'tree', 'hpaned', 'vpaned'):
|
||||
parse(node, fields)
|
||||
elif node.nodeName=='field':
|
||||
attrs = node_attributes(node)
|
||||
name = attrs['name']
|
||||
fields[name].update(attrs)
|
||||
return fields
|
||||
|
||||
def get_view_fields(view):
|
||||
return parse(
|
||||
xml.dom.minidom.parseString(view['arch'].encode('utf-8')).documentElement,
|
||||
view['fields'])
|
||||
|
||||
model_obj = req.session.model(model)
|
||||
tree_view = model_obj.fields_view_get(views.get('tree', False), 'tree', context)
|
||||
form_view = model_obj.fields_view_get(views.get('form', False), 'form', context)
|
||||
fields = {}
|
||||
fields.update(get_view_fields(tree_view))
|
||||
fields.update(get_view_fields(form_view))
|
||||
return fields
|
||||
|
||||
|
||||
class Export(View):
|
||||
_cp_path = "/base/export"
|
||||
|
||||
|
@ -1012,9 +983,8 @@ class Export(View):
|
|||
@openerpweb.jsonrequest
|
||||
def get_fields(self, req, model, prefix='', name= '', field_parent=None, params={}):
|
||||
import_compat = params.get("import_compat", False)
|
||||
views_id = params.get("views_id", {})
|
||||
|
||||
fields = _fields_get_all(req, model, views=views_id, context=req.session.eval_context(req.context))
|
||||
fields = self.fields_get(req, model)
|
||||
field_parent_type = params.get("parent_field_type",False)
|
||||
|
||||
if import_compat and field_parent_type and field_parent_type == "many2one":
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
openerp.base.data_export = function(openerp) {
|
||||
openerp.base.DataExport = openerp.base.Dialog.extend({
|
||||
init: function(parent, dataset, views) {
|
||||
init: function(parent, dataset) {
|
||||
this._super(parent);
|
||||
this.dataset = dataset;
|
||||
this.views = views;
|
||||
this.views_id = {};
|
||||
for (var key in this.views) {
|
||||
this.views_id[key] = this.views[key].view_id;
|
||||
}
|
||||
},
|
||||
start: function() {
|
||||
var self = this;
|
||||
|
@ -53,8 +48,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({
|
|||
});
|
||||
var import_comp = self.$element.find('#import_compat option:selected').val(),
|
||||
params = {
|
||||
import_compat: parseInt(import_comp),
|
||||
views_id: self.views_id
|
||||
import_compat: parseInt(import_comp)
|
||||
};
|
||||
self.rpc('/base/export/get_fields', { model: self.dataset.model, params: params }, self.on_show_data);
|
||||
|
||||
|
@ -64,8 +58,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({
|
|||
var import_comp = self.$element.find("#import_compat option:selected").val();
|
||||
if (import_comp) {
|
||||
var params = {
|
||||
import_compat: parseInt(import_comp),
|
||||
views_id: self.views_id
|
||||
import_compat: parseInt(import_comp)
|
||||
}
|
||||
self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data);
|
||||
}
|
||||
|
@ -172,7 +165,6 @@ openerp.base.DataExport = openerp.base.Dialog.extend({
|
|||
var import_comp = self.$element.find("#import_compat option:selected").val();
|
||||
var params = {
|
||||
import_compat: parseInt(import_comp),
|
||||
views_id: self.views_id,
|
||||
parent_field_type : record['field_type']
|
||||
}
|
||||
self.rpc("/base/export/get_fields", {
|
||||
|
|
|
@ -215,19 +215,6 @@ openerp.base.ViewManager = openerp.base.Widget.extend({
|
|||
}
|
||||
}
|
||||
}
|
||||
if(this.flags && this.flags.sidebar) {
|
||||
if(this.$element.find('#exportview')){
|
||||
this.$element.find('#exportview').remove()
|
||||
}
|
||||
if(this.active_view == 'list' || this.active_view == 'form') {
|
||||
this.views[this.active_view].controller.$element.after(QWeb.render('ExportView'))
|
||||
this.$element.find('#exportview').click(function(ev) {
|
||||
var export_view = new openerp.base.DataExport(self, self.dataset, self.views);
|
||||
export_view.start(false);
|
||||
ev.preventDefault();
|
||||
});
|
||||
}
|
||||
}
|
||||
return view_promise;
|
||||
},
|
||||
/**
|
||||
|
@ -530,7 +517,6 @@ openerp.base.View = openerp.base.Widget.extend({
|
|||
this.embedded_view = embedded_view;
|
||||
},
|
||||
set_common_sidebar_sections: function(sidebar) {
|
||||
var items = [];
|
||||
sidebar.add_section('customize', "Customize", [
|
||||
{
|
||||
label: "Manage Views",
|
||||
|
@ -547,6 +533,23 @@ openerp.base.View = openerp.base.Widget.extend({
|
|||
title: "Manage views of the current object"
|
||||
}
|
||||
]);
|
||||
sidebar.add_section('other', "Other Options", [
|
||||
{
|
||||
label: "Import",
|
||||
callback: this.on_sidebar_import
|
||||
}, {
|
||||
label: "Export",
|
||||
callback: this.on_sidebar_export
|
||||
}, {
|
||||
label: "Translate",
|
||||
callback: this.on_sidebar_translate,
|
||||
classname: 'oe_hide oe_sidebar_translate'
|
||||
}, {
|
||||
label: "View Log",
|
||||
callback: this.on_sidebar_view_log,
|
||||
classname: 'oe_hide oe_sidebar_view_log'
|
||||
}
|
||||
]);
|
||||
},
|
||||
on_sidebar_manage_view: function() {
|
||||
console.log('Todo');
|
||||
|
@ -556,6 +559,16 @@ openerp.base.View = openerp.base.Widget.extend({
|
|||
},
|
||||
on_sidebar_customize_object: function() {
|
||||
console.log('Todo');
|
||||
},
|
||||
on_sidebar_import: function() {
|
||||
},
|
||||
on_sidebar_export: function() {
|
||||
var export_view = new openerp.base.DataExport(this, this.dataset);
|
||||
export_view.start(false);
|
||||
},
|
||||
on_sidebar_translate: function() {
|
||||
},
|
||||
on_sidebar_view_log: function() {
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue