码迷,mamicode.com
首页 > 其他好文 > 详细

odoo检查规则

时间:2020-01-30 22:52:34      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:sys   ret   data   ror   reading   rest   records   sts   exists   


@api.multi
def button_cancel(self):
for move in self:
if not move.journal_id.update_posted:
raise UserError(_(‘You cannot modify a posted entry of this journal.\nFirst you should set the journal to allow cancelling entries.‘))
# We remove all the analytics entries for this journal
move.mapped(‘line_ids.analytic_line_ids‘).unlink()
if self.ids:
self.check_access_rights(‘write‘) #调用函数
self.check_access_rule(‘write‘) #调用函数
self._check_lock_date()
self._cr.execute(‘UPDATE account_move ‘\
‘SET state=%s ‘\
‘WHERE id IN %s‘, (‘draft‘, tuple(self.ids),))
self.invalidate_cache()
self._check_lock_date()
return True








@api.model
def check_access_rights(self, operation, raise_exception=True): """ Verifies that the operation given by ``operation`` is allowed for the current user according to the access rights. """ return self.env[ir.model.access].check(self._name, operation, raise_exception) @api.multi def check_access_rule(self, operation): """ Verifies that the operation given by ``operation`` is allowed for the current user according to ir.rules. :param operation: one of ``write``, ``unlink`` :raise UserError: * if current ir.rules do not permit this operation. :return: None if the operation is allowed """ if self._uid == SUPERUSER_ID: return invalid = self - self._filter_access_rules(operation) # ??????? if not invalid: return forbidden = invalid.exists() if forbidden: # the invalid records are (partially) hidden by access rules if self.is_transient(): raise AccessError(_(For this kind of document, you may only access records you created yourself.\n\n(Document type: %s)) % (self._description,)) else: _logger.info(Access Denied by record rules for operation: %s on record ids: %r, uid: %s, model: %s, operation, forbidden.ids, self._uid, self._name) raise AccessError(_(The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)) % (self._description, operation)) # If we get here, the invalid records are not in the database. if operation in (read, unlink): # No need to warn about deleting an already deleted record. # And no error when reading a record that was deleted, to prevent spurious # errors for non-transactional search/read sequences coming from clients. return _logger.info(Failed operation on deleted record(s): %s, uid: %s, model: %s, operation, self._uid, self._name) raise MissingError(_(Missing document(s)) + : + _(One of the documents you are trying to access has been deleted, please try again after refreshing.))

 

odoo检查规则

标签:sys   ret   data   ror   reading   rest   records   sts   exists   

原文地址:https://www.cnblogs.com/1314520xh/p/12244207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!