diff --git a/controllers/main.py b/controllers/main.py index bbc0436..f16e502 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -1,14 +1,28 @@ from openerp.addons.web.controllers.main import DataSet from openerp.tools.translate import _ +from openerp import http from openerp.http import request class DataSetCustom(DataSet): - def _call_kw(self, model, method, args, kwargs): - res = super(DataSetCustom, self)._call_kw(model, method, args, kwargs) - if method == 'name_search' and 'context' in kwargs and kwargs['context'].get('extended_name_with_contact') and res: - model = request.session.model(model) - fields = model.fields_get(False, request.context) + @http.route('/web/dataset/call_kw//name_search', type='json', auth="user") + def name_search(self, model, method, args, kwargs): + context = kwargs.get('context') + if context and context.get('extended_name_with_contact'): + #add order by ID desc + cr, uid = request.cr, request.uid + Model = request.registry[model] + search_args = list(kwargs.get('args') or []) + limit = int(kwargs.get('limit') or 100) + operator = kwargs.get('operator') + name = kwargs.get('name') + if Model._rec_name and (not name == '' and operator == 'ilike'): + 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': @@ -16,7 +30,7 @@ class DataSetCustom(DataSet): break partner_info = {} if contact_field: - partner_info = model.read([r[0] for r in res], [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: @@ -24,7 +38,6 @@ class DataSetCustom(DataSet): 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]))) - res = final_res - return res - + return final_res + return self._call_kw(model, method, args, kwargs) diff --git a/mail_move_message_models.py b/mail_move_message_models.py index 677d6ab..7fc4ce0 100644 --- a/mail_move_message_models.py +++ b/mail_move_message_models.py @@ -4,7 +4,6 @@ from openerp.tools.translate import _ class wizard(models.TransientModel): _name = 'mail_move_message.wizard' - @api.model def _model_selection(self): selection = [] config_parameters = self.env['ir.config_parameter'] @@ -14,6 +13,10 @@ class wizard(models.TransientModel): selection = [(m.model, m.display_name) for m in self.env['ir.model'].search([('model', 'in', model_names)])] return selection + def _default_model(self): + model_fields = self.fields_get() + return model_fields['model']['selection'] and model_fields['model']['selection'][0][0] + message_id = fields.Many2one('mail.message', string='Message') message_body = fields.Html(related='message_id.body', string='Message to move', readonly=True) message_moved_by_message_id = fields.Many2one('mail.message', related='message_id.moved_by_message_id', string='Moved with', readonly=True) @@ -24,7 +27,7 @@ class wizard(models.TransientModel): record_url = fields.Char('Link to record', readonly=True) can_move = fields.Boolean('Can move', compute='get_can_move') move_back = fields.Boolean('Move to origin', help='Move message and submessages to original place') - model = fields.Selection(_model_selection, string='Model') + model = fields.Selection(_model_selection, string='Model', default=_default_model) partner_id = fields.Many2one('res.partner', string='Author') filter_by_partner = fields.Boolean('Filter Records by partner')