annotate roundup/cgi/exceptions.py @ 3916:57ad3e2c2545

handle bad cookies Roundup's cgi gets all cookies from all apps on the same server. some apps aren't as well behaved as roundup and generate cookies that do not follow the spec perfectly. This causes python's Cookie module to throw an exception when trying to parse them. In the spirit of being liberal in what we accept, we create a LiberalCookie class that can handle those out-of-spec cookies and allow roundup to continue onward. [SF#1691708] code from S. Woodside
author Justus Pendleton <jpend@users.sourceforge.net>
date Sat, 22 Sep 2007 21:20:57 +0000
parents df4a3355ee8f
children bbab97f8ffb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2924
df4a3355ee8f added LoginError; fix vim modeline
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2278
diff changeset
1 #$Id: exceptions.py,v 1.6 2004-11-18 14:10:27 a1s Exp $
2129
3fd672293712 add and use Reject exception [SF#700265]
Richard Jones <richard@users.sourceforge.net>
parents: 2062
diff changeset
2 '''Exceptions for use in Roundup's web interface.
3fd672293712 add and use Reject exception [SF#700265]
Richard Jones <richard@users.sourceforge.net>
parents: 2062
diff changeset
3 '''
3fd672293712 add and use Reject exception [SF#700265]
Richard Jones <richard@users.sourceforge.net>
parents: 2062
diff changeset
4
3fd672293712 add and use Reject exception [SF#700265]
Richard Jones <richard@users.sourceforge.net>
parents: 2062
diff changeset
5 __docformat__ = 'restructuredtext'
3fd672293712 add and use Reject exception [SF#700265]
Richard Jones <richard@users.sourceforge.net>
parents: 2062
diff changeset
6
2062
f6d7ccce8d96 cgi exceptions fix
Richard Jones <richard@users.sourceforge.net>
parents: 2052
diff changeset
7 import cgi
f6d7ccce8d96 cgi exceptions fix
Richard Jones <richard@users.sourceforge.net>
parents: 2052
diff changeset
8
2004
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
9 class HTTPException(Exception):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
10 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
11
2924
df4a3355ee8f added LoginError; fix vim modeline
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2278
diff changeset
12 class LoginError(HTTPException):
df4a3355ee8f added LoginError; fix vim modeline
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2278
diff changeset
13 pass
df4a3355ee8f added LoginError; fix vim modeline
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2278
diff changeset
14
2004
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
15 class Unauthorised(HTTPException):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
16 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
17
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
18 class Redirect(HTTPException):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
19 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
20
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
21 class NotFound(HTTPException):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
22 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
23
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
24 class NotModified(HTTPException):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
25 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
26
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
27 class FormError(ValueError):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
28 """An 'expected' exception occurred during form parsing.
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
29
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
30 That is, something we know can go wrong, and don't want to alarm the user
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
31 with.
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
32
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
33 We trap this at the user interface level and feed back a nice error to the
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
34 user.
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
35
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
36 """
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
37 pass
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
38
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
39 class SendFile(Exception):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
40 """Send a file from the database."""
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
41
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
42 class SendStaticFile(Exception):
1782fe36e7b8 Move out parts of client.py to new modules:
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
diff changeset
43 """Send a static file from the instance html directory."""
2052
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
44
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
45 class SeriousError(Exception):
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
46 """Raised when we can't reasonably display an error message on a
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
47 templated page.
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
48
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
49 The exception value will be displayed in the error page, HTML
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
50 escaped.
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
51 """
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
52 def __str__(self):
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
53 return '''
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
54 <html><head><title>Roundup issue tracker: An error has occurred</title>
2278
93bd8c4d43ef in HTML produced by SeriousError.__str__():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2129
diff changeset
55 <link rel="stylesheet" type="text/css" href="@@file/style.css">
2052
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
56 </head>
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
57 <body class="body" marginwidth="0" marginheight="0">
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
58 <p class="error-message">%s</p>
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
59 </body></html>
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
60 '''%cgi.escape(self.args[0])
78e6a1e4984e forward-port from maint branch
Richard Jones <richard@users.sourceforge.net>
parents: 2004
diff changeset
61
2924
df4a3355ee8f added LoginError; fix vim modeline
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2278
diff changeset
62 # vim: set filetype=python sts=4 sw=4 et si :

Roundup Issue Tracker: http://roundup-tracker.org/