• odoo检查规则


    
    
    @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. First 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. (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. (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.'))
  • 相关阅读:
    Linux基础命令mv
    Linux基础命令cp
    闭包函数
    函数的嵌套
    函数对象
    global与nonlocal
    名称空间与作用域
    函数的参数(总结)
    函数的基本使用
    文件的操作之指针移动
  • 原文地址:https://www.cnblogs.com/1314520xh/p/12244207.html
Copyright © 2020-2023  润新知