[FIX] Open records with selected ids for m2o popup.
bzr revid: sma@tinyerp.com-20110502132512-r9x0zts9wu21xrem
This commit is contained in:
parent
5b5edbe9b9
commit
9be03eaf9e
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
},
|
||||
/**
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue