Mercurial > p > roundup > code
view roundup/cgi/exceptions.py @ 7211:506c86823abb
Add config argument to more password.Password invocations.
The work done to allow password_pbkdf2_default_rounds to be overridden
for testing requires that calls to password.Password include a config
argument.
This was needed because using the real value more than quadrupled
testing runtime.
However there are still a few places where config was not being set
when Password was called. I think this fixes all of the ones that are
called from a function that have access to a db.config object.
The remaining ones all call Password(encrypted=x). This results in
Password.unpack() being called. If x is not a propertly formatted
password string ("{scheme}...", it calls encodePassword. It then
should end up raising the ConfigNotSet exception. This is
probably what we want as it means the shape of "x" is not correct.
I don't understand why Password.unpack() attempts to encrypt the value
of encrypted if it doesn't match the right form. According to codecov,
this encryption branch is being used, so somewhere x is of the wrong
form. Hmmm....
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 04 Mar 2023 00:17:26 -0500 |
| parents | a1cffeef5f87 |
| children | 700424ba015c |
line wrap: on
line source
"""Exceptions for use in Roundup's web interface. """ __docformat__ = 'restructuredtext' from roundup.exceptions import LoginError, Unauthorised # noqa: F401 from roundup.anypy.html import html_escape from roundup.exceptions import RoundupException class RoundupCGIException(RoundupException): pass class HTTPException(RoundupCGIException): pass class Redirect(HTTPException): pass class NotFound(HTTPException): pass class NotModified(HTTPException): pass class PreconditionFailed(HTTPException): pass class DetectorError(RoundupException): """Raised when a detector throws an exception. Contains details of the exception.""" def __init__(self, subject, html, txt): self.subject = subject self.html = html self.txt = txt BaseException.__init__(self, subject + ' ' + txt) class FormError(ValueError): """An 'expected' exception occurred during form parsing. That is, something we know can go wrong, and don't want to alarm the user with. We trap this at the user interface level and feed back a nice error to the user. """ pass class IndexerQueryError(RoundupException): """Raised to handle errors from FTS searches due to query syntax errors. """ pass class SendFile(RoundupException): """Send a file from the database.""" class SendStaticFile(RoundupException): """Send a static file from the instance html directory.""" class SeriousError(RoundupException): """Raised when we can't reasonably display an error message on a templated page. The exception value will be displayed in the error page, HTML escaped. """ def __str__(self): return """ <html><head><title>Roundup issue tracker: An error has occurred</title> <link rel="stylesheet" type="text/css" href="@@file/style.css"> </head> <body class="body" marginwidth="0" marginheight="0"> <p class="error-message">%s</p> </body></html> """ % html_escape(self.args[0]) # vim: set filetype=python sts=4 sw=4 et si :
