|
|
@ -5,6 +5,28 @@ from openerp.http import request |
|
|
|
|
|
|
|
class DataSetCustom(DataSet): |
|
|
|
|
|
|
|
def _extend_name(self, model, records): |
|
|
|
cr, uid, context = request.cr, request.uid, request.context |
|
|
|
Model = request.registry[model] |
|
|
|
fields = Model.fields_get(cr, uid, False, context) |
|
|
|
contact_field = False |
|
|
|
for n, f in fields.iteritems(): |
|
|
|
if f['type'] == 'many2one' and f['relation'] == 'res.partner': |
|
|
|
contact_field = n |
|
|
|
break |
|
|
|
partner_info = {} |
|
|
|
if contact_field: |
|
|
|
partner_info = Model.read(cr, uid, [r[0] for r in records], [contact_field], context) |
|
|
|
partner_info = dict([(p['id'], p[contact_field]) for p in partner_info]) |
|
|
|
res = [] |
|
|
|
for r in records: |
|
|
|
if partner_info.get(r[0]): |
|
|
|
res.append((r[0], _('%s [partner: %s] ID %s') % (r[1], partner_info.get(r[0])[1], r[0]))) |
|
|
|
else: |
|
|
|
res.append((r[0], _('%s ID %s') % (r[1], r[0]))) |
|
|
|
return res |
|
|
|
|
|
|
|
|
|
|
|
@http.route('/web/dataset/call_kw/<model>/name_search', type='json', auth="user") |
|
|
|
def name_search(self, model, method, args, kwargs): |
|
|
|
context = kwargs.get('context') |
|
|
@ -20,24 +42,14 @@ class DataSetCustom(DataSet): |
|
|
|
search_args += [(Model._rec_name, operator, name)] |
|
|
|
ids = Model.search(cr, uid, search_args, limit=limit, order='id desc', context=context) |
|
|
|
res = Model.name_get(cr, uid, ids, context) |
|
|
|
|
|
|
|
#extend record names with partner and ID |
|
|
|
fields = Model.fields_get(cr, uid, False, request.context) |
|
|
|
contact_field = False |
|
|
|
for n, f in fields.iteritems(): |
|
|
|
if f['type'] == 'many2one' and f['relation'] == 'res.partner': |
|
|
|
contact_field = n |
|
|
|
break |
|
|
|
partner_info = {} |
|
|
|
if contact_field: |
|
|
|
partner_info = Model.read(cr, uid, [r[0] for r in res], [contact_field], request.context) |
|
|
|
partner_info = dict([(p['id'], p[contact_field]) for p in partner_info]) |
|
|
|
final_res = [] |
|
|
|
for r in res: |
|
|
|
if partner_info.get(r[0]): |
|
|
|
final_res.append((r[0], _('%s [partner: %s] ID %s') % (r[1], partner_info.get(r[0])[1], r[0]))) |
|
|
|
else: |
|
|
|
final_res.append((r[0], _('%s ID %s') % (r[1], r[0]))) |
|
|
|
return final_res |
|
|
|
return self._extend_name(model, res) |
|
|
|
|
|
|
|
return self._call_kw(model, method, args, kwargs) |
|
|
|
|
|
|
|
@http.route('/web/dataset/call_kw/<model>/name_get', type='json', auth="user") |
|
|
|
def name_get(self, model, method, args, kwargs): |
|
|
|
res = self._call_kw(model, method, args, kwargs) |
|
|
|
context = kwargs.get('context') |
|
|
|
if context and context.get('extended_name_with_contact'): |
|
|
|
res = self._extend_name(model, res) |
|
|
|
return res |