diff options
| author | svs-odoo <svs@odoo.com> | 2020-03-25 15:55:52 +0000 |
|---|---|---|
| committer | svs-odoo <svs@odoo.com> | 2020-03-30 14:42:12 +0000 |
| commit | c1f3596bd32efcbec40e66c29930ccdc29072f92 (patch) | |
| tree | 8e768202bd7d03c592a08a5323a34a6920917ed4 /addons/mrp/controller | |
| parent | e3ae7c6492bbd580e51f0674a79d56df29a6aff5 (diff) | |
[FIX] mrp: create mrp.document through mrp.eco
How to reproduce:
- Open PLM app, open an Engineering Change Order;
- Click on "Update Documents";
- Try to upload a document -> Traceback.
As we did not cast res_id as integer, the check method of ir.attachment
crashes when accessing company_id on a malformed recordset of ECO
because the domain generated by _filter_access_rules_python is:
`['|', ('company_id', '=', False), ('company_id', 'in', [2, 1])]`
This route is also used when adding attachment to a `product.product`.
In this case the check didn't work either but somehow passed because no
domain is generated by `_filter_access_rules_python`.
The following snippet shows that if there was one, it would also crash:
```
In [16]: records
Out[16]: product.product('25',)
In [17]: records.stock_move_ids
Out[17]: stock.move()
In [18]: self.env['product.product'].browse(25)
Out[18]: product.product(25,)
In [19]: self.env['product.product'].browse(25).stock_move_ids
Out[19]: stock.move(41, 13)
```
task-2223153
closes odoo/odoo#48515
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Diffstat (limited to 'addons/mrp/controller')
| -rw-r--r-- | addons/mrp/controller/main.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/addons/mrp/controller/main.py b/addons/mrp/controller/main.py index 0c8b40f0621..e916cc7ea96 100644 --- a/addons/mrp/controller/main.py +++ b/addons/mrp/controller/main.py @@ -25,7 +25,7 @@ class MrpDocumentRoute(http.Controller): request.env['mrp.document'].create({ 'name': ufile.filename, 'res_model': kwargs.get('res_model'), - 'res_id': kwargs.get('res_id'), + 'res_id': int(kwargs.get('res_id')), 'mimetype': mimetype, 'datas': base64.encodebytes(ufile.read()), }) |
