[IMP] Integrate import into sidebar. Use fields_get instead of parsing views.

bzr revid: fme@openerp.com-20110728161853-21ml7wc7kgtfha45
This commit is contained in:
Fabien Meghazi 2011-07-28 18:18:53 +02:00
parent e71bb13c01
commit 506e483974
3 changed files with 31 additions and 56 deletions

View File

@ -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":

View File

@ -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", {

View File

@ -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() {
}
});