python - 非管理员用户无法删除 SO Line (odoo v11)
问题描述
我创建了带有一些行项目的销售订单。
- 使用非管理员用户(但经理级别用户)创建至少 3 行的许多 SO
- 第二天,尝试用非管理员用户删除 SO 的第一行
- 一旦按保存,它就会出错。
User #7 deleted sale.order.line records with IDs: [367] ERROR db_name odoo.http: Exception during JSON request handling. Traceback (most recent call last): File "/usr/lib/python3/dist-packages/odoo/fields.py", line 947, in __get__ value = record.env.cache.get(record, self) File "/usr/lib/python3/dist-packages/odoo/api.py", line 960, in get value = self._data[field][record.id][key] KeyError: (<odoo.sql_db.Cursor object at 0x7f44b8cc20b8>, 7) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/odoo/http.py", line 646, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/usr/lib/python3/dist-packages/odoo/http.py", line 307, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise raise value File "/usr/lib/python3/dist-packages/odoo/http.py", line 683, in dispatch result = self._call_function(**self.params) File "/usr/lib/python3/dist-packages/odoo/http.py", line 339, in _call_function return checked_call(self.db, *args, **kwargs) File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "/usr/lib/python3/dist-packages/odoo/http.py", line 332, in checked_call result = self.endpoint(*a, **kw) File "/usr/lib/python3/dist-packages/odoo/http.py", line 927, in __call__ return self.method(*args, **kw) File "/usr/lib/python3/dist-packages/odoo/http.py", line 512, in response_wrap response = f(*args, **kw) File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 930, in call_kw return self._call_kw(model, method, args, kwargs) File "/usr/lib/python3/dist-ackages/odoo/addons/web/controllers/main.py" line 922, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/usr/lib/python3/dist-packages/odoo/api.py", line 689, in call_kw return call_kw_multi(method, model, args, kwargs) File "/usr/lib/python3/dist-packages/odoo/api.py", line 680, in call_kw_multi result = method(recs, *args, **kwargs) File "/usr/lib/python3/dist-packages/odoo/addons/sale/sale.py", line 1285, in write result = super(SaleOrder, self).write(vals) File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 277, in write result = super(MailThread, self).write(values) File "/usr/lib/python3/dist-packages/odoo/models.py", line 3008, in write self._write(old_vals) File "/usr/lib/python3/dist-packages/odoo/models.py", line 3223, in _write self.recompute() File "/usr/lib/python3/dist-packages/odoo/models.py", line 4801, in recompute vals = {n: rec[n] for n in ns} File "/usr/lib/python3/dist-packages/odoo/models.py", line 4801, in <dictcomp> vals = {n: rec[n] for n in ns} File "/usr/lib/python3/dist-packages/odoo/models.py", line 4659, in __getitem__ return self._fields[key].__get__(self, type(self)) File "/usr/lib/python3/dist-packages/odoo/fields.py", line 954, in __get__ value = record.env.cache.get(record, self) File "/usr/lib/python3/dist-packages/odoo/api.py", line 960, in get value = self._data[field][record.id][key] KeyError: (<odoo.sql_db.Cursor object at 0x7f44b8cc20b8>, 7)
请提出解决方案,因为其他非管理员用户应该能够编辑订单行项目。他们不能一直要求管理员这样做。
解决方案
您可以使用以下代码解决它。
@api.multi
def unlink(self):
if 'unlink_so_line' in self.env.context:
return super(sale_order_line, self).unlink()
else:
self.env.context = dict(self.env.context)
self.env.context.update({'unlink_so_line': True})
return super(sale_order_line, self).sudo().unlink()
当你只用 sudo() unlink 时,unlink 进去看看,你会得到一个错误信息,指出超出了最大递归深度。
推荐阅读
- .net-core - 在 C# 中通过 HTTPRequest 发布多个文件
- php - SerializableClosure error in Laravel - Your serialized closure might have been modified and it's unsafe to be unserialized
- hadoop - set up Hadoop multi cluster on 2 windows 10
- mysql - Maria DB - Help on Index
- javascript - Assigning each button it's own individual state count
- ios - React-Native: Library not found iOS
- unreal-engine4 - 如何在同一网络中的多台电脑上托管 UE4 射击游戏
- push-notification - FMC push notification android background
- reactjs - react-js-pagination如何用react hook数据表实现
- javascript - 推送后数组推送始终为空(Javascript)