odoo開發筆記 -- 異常、錯誤、警告、提示、確認信息顯示


1.檢查業務邏輯中的錯誤,終止代碼執行,顯示錯誤或警告信息:

 raise osv.except_osv(_('Error!'), _('Error Message.'))

示例代碼:

    #刪除當前銷售單,需要驗證銷售單的狀態
    def unlink(self, cr, uid, ids, context=None):
        for rec in self.browse(cr, uid, ids, context=context):
            if rec.state not in ['draft']:
                raise osv.except_osv(_(u'警告!'),_(u'您不能刪除以下狀態的銷售單 %s .')%(rec.state))
            if rec.create_uid.id != uid:
                raise osv.except_osv(_(u'警告!'),_(u'您不能刪除他人創建的單據.'))
        return super(sale, self).unlink(cr, uid, ids, context) 

2.字段的 onchange 事件中返回值,同時返回提示信息:

 warning = {
  'title': _('Warning!'),
  'message' : _('Warning Message.')
  }
 return {'warning': warning, 'value': value}

示例代碼:

@api.onchange('partner_id')
    def onchange_partner_id_warning(self):
        if not self.partner_id:
            return
        warning = {}
        title = False
        message = False
        partner = self.partner_id

        # If partner has no warning, check its company
        if partner.sale_warn == 'no-message' and partner.parent_id:
            partner = partner.parent_id

        if partner.sale_warn != 'no-message':
            # Block if partner only has warning but parent company is blocked
            if partner.sale_warn != 'block' and partner.parent_id and partner.parent_id.sale_warn == 'block':
                partner = partner.parent_id
            title = ("Warning for %s") % partner.name
            message = partner.sale_warn_msg
            warning = {
                    'title': title,
                    'message': message,
            }
            if partner.sale_warn == 'block':
                self.update({'partner_id': False, 'partner_invoice_id': False, 'partner_shipping_id': False, 'pricelist_id': False})
                return {'warning': warning}

        if warning:
            return {'warning': warning}

3.視圖中 button 按鈕點擊時顯示確認信息:【直接加上"confirm"屬性,就可以實現,點擊按鈕的時候,彈出窗口,提示“是否確認操作”的提示框】

 <button name="cancel_voucher" string="Cancel Voucher" type="object" states="posted" confirm="Are you sure you want to unreconcile this record?"/>

有興趣的小伙伴可以研究下,odoo的幾種拋出異常的方式的區別:

from odoo.exceptions import except_orm, Warning, RedirectWarning,AccessDenied

AccessDenied RedirectWarning MissingError except_orm AccessError DeferredException ValidationError Warning

相關參考:

http://www.cnblogs.com/cnshen/p/3205405.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM