class CausedError(Exception, Fossilizable): """ A normal error, triggered on the server side """ fossilizes(ICausedErrorFossil) def __init__(self, code, message, inner=None, type=None): self.code = code self.message = message self.inner = inner self.type = type def getMessage(self): return self.message def getCode(self): return self.code def getInner(self): return self.inner def getType(self): return self.type def __str__(self): if not self.inner: return "%s : %s (no inner exception)" % (self.code, self.message) else: if type(self.inner) is list: inner = "\r\n".join(self.inner) else: inner = self.inner return "%s : %s\r\n\r\nInner Exception:\r\n%s" % ( self.code, self.message, inner)
class MaKaCError(Exception, Fossilizable): fossilizes(IErrorReportFossil) def __init__(self, msg="", area="", explanation=None): self._msg = self.message = msg self._area = area self._explanation = explanation def getMessage(self): return self._msg @ensure_str def __str__(self): if self._area != "": return "%s - %s" % (self._area, self._msg) else: return self._msg def getArea(self): return self._area def getExplanation(self): """ Some extra information, like actions that can be taken """ return self._explanation
class HTTPAPIResult(Fossilizable): fossilizes(IHTTPAPIResultFossil) def __init__(self, results, path='', query='', ts=None, complete=True, extra=None): if ts is None: ts = int(time.time()) self._results = results self._path = path self._query = query self._ts = ts self._complete = complete self._extra = extra or {} def getTS(self): return self._ts def getURL(self): prefix = config.BASE_URL if self._query: return prefix + self._path + '?' + self._query return prefix + self._path def getCount(self): return len(self._results) def getResults(self): return self._results def getComplete(self): return self._complete def getAdditionalInfo(self): return self._extra
class NotFoundError(MaKaCError): """ Legacy indico's own NotFound version (just for legacy support) """ fossilizes(IErrorNoReportFossil) def __init__(self, message, title=""): if not title: title = message message = '' super(NotFoundError, self).__init__(title, explanation=message)
class HTTPAPIError(Exception, Fossilizable): fossilizes(IHTTPAPIErrorFossil) def __init__(self, message, code=None): self.message = message self.code = code def getMessage(self): return self.message def getCode(self): return self.code
class ConferenceClosedError(MaKaCError): """ """ fossilizes(IErrorNoReportFossil) def __init__(self, conf): MaKaCError.__init__(self) self._conf = conf @ensure_str def __str__(self): return _("the event has been closed")
class AccessControlError(MaKaCError): """ """ fossilizes(IErrorNoReportFossil) def __init__(self, objectType="object"): MaKaCError.__init__(self) self.objType = objectType @ensure_str def __str__(self): return _("you are not authorised to access this %s") % self.objType def getMessage(self): return str(self)
class NoReportError(CausedError): """ An error that doesn't get reported (no log entry, no warning e-mail, no error report form) """ fossilizes(INoReportErrorFossil) def __init__(self, message, inner=None, title=None, explanation=None): CausedError.__init__(self, "", message, inner, "noReport") self._title = title self._explanation = explanation def getTitle(self): """ A title for the error (optional) """ return self._title def getExplanation(self): return self._explanation
class NoReportError(MaKaCError): """ """ fossilizes(IErrorNoReportFossil)