[FIX] Open records with selected ids for m2o popup.

bzr revid: sma@tinyerp.com-20110502132512-r9x0zts9wu21xrem
This commit is contained in:
sma (Tiny) 2011-05-02 18:55:12 +05:30
parent 5b5edbe9b9
commit 9be03eaf9e
3 changed files with 12 additions and 11 deletions

View File

@ -329,7 +329,7 @@ class DataSet(openerpweb.Controller):
@openerpweb.jsonrequest
def search_read(self, request, model, fields=False, offset=0, limit=False, domain=None, context=None, sort=None):
return self.do_search_read(request, model, fields, offset, limit, domain, context, sort)
def do_search_read(self, request, model, fields=False, offset=0, limit=False, domain=None, context=None, sort=None):
def do_search_read(self, request, model, fields=False, offset=0, limit=False, domain=None, context=None, sort=None, ids=False):
""" Performs a search() followed by a read() (if needed) using the
provided search criteria
@ -346,7 +346,8 @@ class DataSet(openerpweb.Controller):
:rtype: list
"""
Model = request.session.model(model)
ids = Model.search(domain or [], offset or 0, limit or False,
if not ids:
ids = Model.search(domain or [], offset or 0, limit or False,
sort or False, request.context)
if fields and fields == ['id']:
# shortcut read if we only want the ids
@ -562,11 +563,11 @@ class ListView(View):
@openerpweb.jsonrequest
def fill(self, request, model, id, domain,
offset=0, limit=False):
return self.do_fill(request, model, id, domain, offset, limit)
offset=0, limit=False, ids=False):
return self.do_fill(request, model, id, domain, offset, limit, ids)
def do_fill(self, request, model, id, domain,
offset=0, limit=False):
offset=0, limit=False, ids=False):
""" Returns all information needed to fill a table:
* view with processed ``editable`` flag
@ -588,7 +589,7 @@ class ListView(View):
rows = DataSet().do_search_read(request, model,
offset=offset, limit=limit,
domain=domain)
domain=domain, ids=ids)
eval_context = request.session.evaluation_context(
request.context)
return {

View File

@ -316,7 +316,8 @@ openerp.base.ListView = openerp.base.Controller.extend(
'model': this.dataset.model,
'id': this.view_id,
'context': this.dataset.context,
'domain': this.dataset.domain
'domain': this.dataset.domain,
'ids': this.dataset.ids
}, this.do_fill_table);
},
/**

View File

@ -9,7 +9,6 @@ openerp.base.m2o = openerp.base.Controller.extend({
this.relation = model;
this.dataset = dataset;
this.name = this.element.attr('name');
this.selectedResultRow = 0;
this.selectedResult = false;
this.numResultRows = 0;
@ -17,7 +16,6 @@ openerp.base.m2o = openerp.base.Controller.extend({
this.specialKeyPressed = false;
this.lastKey = null;
this.delayedRequest = null;
this.lastTextResult = this.element.val();
this.lastSearch = null;
@ -181,8 +179,8 @@ openerp.base.m2o = openerp.base.Controller.extend({
case 13:
case 1:
var $selectedRow = jQuery("#autoComplete" + this.name + "_" + this.selectedResultRow);
this.dataset.ids = _.without.apply(null, [this.dataset.ids].concat(this.result_ids));
this.dataset.ids = this.result_ids;
this.dataset.domain = [];
this.dataset.count = this.dataset.ids.length;
if ($selectedRow.find('td').attr('id') == 'more') {
var element_id = _.uniqueId("act_window_dialog");
@ -199,6 +197,7 @@ openerp.base.m2o = openerp.base.Controller.extend({
});
var event_list = new openerp.base.ListView(this.view_manager, this.session, element_id, this.dataset, false);
event_list.start();
event_list.do_reload();
}
this.setCompletionText($selectedRow, true);
this.clearResults();