_exceptions.py
changeset 0 b97547f5f1fa
child 1155 61149b53d441
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/_exceptions.py	Wed Nov 05 15:52:50 2008 +0100
@@ -0,0 +1,148 @@
+"""Exceptions shared by different cubicweb packages.
+
+
+:organization: Logilab
+:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
+"""
+__docformat__ = "restructuredtext en"
+
+from yams import ValidationError
+
+# abstract exceptions #########################################################
+
+class CubicWebException(Exception):
+    """base class for cubicweb server exception"""
+    msg = ""
+    def __str__(self):
+        if self.msg:
+            if self.args:
+                return self.msg % tuple(self.args)
+            return self.msg
+        return ' '.join(str(arg) for arg in self.args)
+
+
+class ConfigurationError(CubicWebException):
+    """a misconfiguration error"""
+
+class InternalError(CubicWebException):
+    """base class for exceptions which should not occurs"""    
+
+class SecurityError(CubicWebException): 
+    """base class for cubicweb server security exception"""
+
+class RepositoryError(CubicWebException):
+    """base class for repository exceptions"""
+
+class SourceException(CubicWebException):
+    """base class for source exceptions"""
+
+class CubicWebRuntimeError(CubicWebException):
+    """base class for runtime exceptions"""
+    
+# repository exceptions #######################################################
+
+class ConnectionError(RepositoryError):
+    """raised when a bad connection id is given or when an attempt to establish
+    a connection failed"""
+
+class AuthenticationError(ConnectionError):
+    """raised when a bad connection id is given or when an attempt to establish
+    a connection failed"""
+
+class BadConnectionId(ConnectionError):
+    """raised when a bad connection id is given or when an attempt to establish
+    a connection failed"""
+    
+BadSessionId = BadConnectionId # XXX bw compat for pyro connections
+
+class UnknownEid(RepositoryError):
+    """the eid is not defined in the system tables"""
+    msg = 'No entity with eid %s in the repository'
+
+class ETypeNotSupportedBySources(RepositoryError, InternalError):
+    """no source support an entity type"""
+    msg = 'No source supports %r entity\'s type'
+
+class RTypeNotSupportedBySources(RepositoryError, InternalError):
+    """no source support a relation type"""
+    msg = 'No source supports %r relation\'s type'
+
+    
+# security exceptions #########################################################
+
+class Unauthorized(SecurityError):
+    """raised when a user tries to perform an action without sufficient
+    credentials
+    """
+    msg = 'You are not allowed to perform this operation'
+    msg1 = 'You are not allowed to perform %s operation on %s'
+    var = None
+    #def __init__(self, *args):
+    #    self.args = args
+        
+    def __str__(self):
+        try:
+            if self.args and len(self.args) == 2:
+                return self.msg1 % self.args
+            if self.args:
+                return ' '.join(self.args)
+            return self.msg
+        except Exception, ex:
+            return str(ex)
+    
+# source exceptions ###########################################################
+
+class EidNotInSource(SourceException):
+    """trying to access an object with a particular eid from a particular
+    source has failed
+    """
+    msg = 'No entity with eid %s in %s'
+    
+    
+# registry exceptions #########################################################
+
+class RegistryException(CubicWebException):
+    """raised when an unregistered view is called"""
+
+class RegistryNotFound(RegistryException):
+    """raised when an unknown registry is requested
+
+    this is usually a programming/typo error...
+    """
+    
+class ObjectNotFound(RegistryException):
+    """raised when an unregistered object is requested
+
+    this may be a programming/typo or a misconfiguration error
+    """
+    
+# class ViewNotFound(ObjectNotFound):
+#     """raised when an unregistered view is called"""
+    
+class NoSelectableObject(RegistryException):
+    """some views with the given vid have been found but no
+    one is applyable to the result set
+    """
+
+class UnknownProperty(RegistryException):
+    """property found in database but unknown in registry"""
+
+# query exception #############################################################
+
+class QueryError(CubicWebRuntimeError):
+    """a query try to do something it shouldn't"""
+
+class NotAnEntity(CubicWebRuntimeError):
+    """raised when get_entity is called for a column which doesn't contain
+    a non final entity
+    """
+
+# tools exceptions ############################################################
+
+class ExecutionError(Exception):
+    """server execution control error (already started, not running...)"""
+
+# pylint: disable-msg=W0611
+from logilab.common.clcommands import BadCommandUsage 
+