Merge git configuration on master
[odoo/odoo.git] / openerp / exceptions.py
index 387e126..6e5d444 100644 (file)
@@ -25,18 +25,28 @@ This module defines a few exception types. Those types are understood by the
 RPC layer. Any other exception type bubbling until the RPC layer will be
 treated as a 'Server error'.
 
+If you consider introducing new exceptions, check out the test_exceptions addon.
 """
 
-import re
+# kept for backward compatibility
+class except_orm(Exception):
+    def __init__(self, name, value):
+        self.name = name
+        self.value = value
+        self.args = (name, value)
 
 class Warning(Exception):
     pass
 
-class WarningConfig(Exception):
-    """ Warning bound to a misconfiguration. """
-    def __init__(self, msg):
-        # todo: treat the msg (regex)
-        super(WarningConfig, self).__init__(msg)
+class RedirectWarning(Exception):
+    """ Warning with a possibility to redirect the user instead of simply
+    diplaying the warning message.
+
+    Should receive as parameters:
+      :param int action_id: id of the action where to perform the redirection
+      :param string button_text: text to put on the button that will trigger
+          the redirection.
+    """
 
 class AccessDenied(Exception):
     """ Login/password error. No message, no traceback. """
@@ -44,8 +54,19 @@ class AccessDenied(Exception):
         super(AccessDenied, self).__init__('Access denied.')
         self.traceback = ('', '', '')
 
-class AccessError(Exception):
+class AccessError(except_orm):
     """ Access rights error. """
+    def __init__(self, msg):
+        super(AccessError, self).__init__('AccessError', msg)
+
+class MissingError(except_orm):
+    """ Missing record(s). """
+    def __init__(self, msg):
+        super(MissingError, self).__init__('MissingError', msg)
+
+class ValidationError(except_orm):
+    def __init__(self, msg):
+        super(ValidationError, self).__init__('ValidateError', msg)
 
 class DeferredException(Exception):
     """ Exception object holding a traceback for asynchronous reporting.