annotate roundup/cgi_client.py @ 440:de5bf4191f11

Enabled transaction support in the bsddb backend. It uses the anydbm code where possible, only replacing methods where the db is opened (it uses the btree opener specifically.) Also cleaned up some change note generation. Made the backends package work with pydoc too.
author Richard Jones <richard@users.sourceforge.net>
date Mon, 10 Dec 2001 22:20:01 +0000
parents 9be5fdc121ca
children ea9a4ca3fb84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
17 #
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
18 # $Id: cgi_client.py,v 1.79 2001-12-10 22:20:01 richard Exp $
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
19
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
20 __doc__ = """
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
21 WWW request handler (also used in the stand-alone server).
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
22 """
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
24 import os, cgi, pprint, StringIO, urlparse, re, traceback, mimetypes
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
25 import binascii, Cookie, time
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
27 import roundupdb, htmltemplate, date, hyperdb, password
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
28 from roundup.i18n import _
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 class Unauthorised(ValueError):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 pass
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
33 class NotFound(ValueError):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
34 pass
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
35
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 class Client:
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
37 '''
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
38 A note about login
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
39 ------------------
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
40
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
41 If the user has no login cookie, then they are anonymous. There
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
42 are two levels of anonymous use. If there is no 'anonymous' user, there
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
43 is no login at all and the database is opened in read-only mode. If the
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
44 'anonymous' user exists, the user is logged in using that user (though
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
45 there is no cookie). This allows them to modify the database, and all
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
46 modifications are attributed to the 'anonymous' user.
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
47
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
48
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
49 Customisation
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
50 -------------
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
51 FILTER_POSITION - one of 'top', 'bottom', 'top and bottom'
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
52 ANONYMOUS_ACCESS - one of 'deny', 'allow'
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
53 ANONYMOUS_REGISTER - one of 'deny', 'allow'
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
54
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
55 from the roundup class:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
56 INSTANCE_NAME - defaults to 'Roundup issue tracker'
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
57
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
58 '''
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
59 FILTER_POSITION = 'bottom' # one of 'top', 'bottom', 'top and bottom'
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
60 ANONYMOUS_ACCESS = 'deny' # one of 'deny', 'allow'
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
61 ANONYMOUS_REGISTER = 'deny' # one of 'deny', 'allow'
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
62
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
63 def __init__(self, instance, request, env):
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
64 self.instance = instance
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
65 self.request = request
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 self.env = env
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 self.path = env['PATH_INFO']
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 self.split_path = self.path.split('/')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 self.form = cgi.FieldStorage(environ=env)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 self.headers_done = 0
357
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
72 try:
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
73 self.debug = int(env.get("ROUNDUP_DEBUG", 0))
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
74 except ValueError:
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
75 # someone gave us a non-int debug level, turn it off
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
76 self.debug = 0
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77
186
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
78 def getuid(self):
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
79 return self.db.user.lookup(self.user)
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
80
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 def header(self, headers={'Content-Type':'text/html'}):
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
82 '''Put up the appropriate header.
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
83 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 if not headers.has_key('Content-Type'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 headers['Content-Type'] = 'text/html'
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
86 self.request.send_response(200)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 for entry in headers.items():
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
88 self.request.send_header(*entry)
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
89 self.request.end_headers()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 self.headers_done = 1
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
91 if self.debug:
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
92 self.headers_sent = headers
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 def pagehead(self, title, message=None):
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
95 url = self.env['SCRIPT_NAME'] + '/'
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 machine = self.env['SERVER_NAME']
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 port = self.env['SERVER_PORT']
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 if port != '80': machine = machine + ':' + port
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 base = urlparse.urlunparse(('http', machine, url, None, None, None))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 if message is not None:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
101 message = _('<div class="system-msg">%(message)s</div>')%locals()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 message = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 style = open(os.path.join(self.TEMPLATES, 'style.css')).read()
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
105 user_name = self.user or ''
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
106 if self.user == 'admin':
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
107 admin_links = _(' | <a href="list_classes">Class List</a>' \
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
108 ' | <a href="user">User List</a>')
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
109 else:
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
110 admin_links = ''
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
111 if self.user not in (None, 'anonymous'):
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
112 userid = self.db.user.lookup(self.user)
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
113 user_info = _('''
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
114 <a href="issue?assignedto=%(userid)s&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:filter=status,assignedto&:sort=-activity&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">My Issues</a> |
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
115 <a href="user%(userid)s">My Details</a> | <a href="logout">Logout</a>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
116 ''')%locals()
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
117 else:
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
118 user_info = _('<a href="login">Login</a>')
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
119 if self.user is not None:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
120 add_links = _('''
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
121 | Add
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
122 <a href="newissue">Issue</a>,
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
123 <a href="newuser">User</a>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
124 ''')
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
125 else:
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
126 add_links = ''
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
127 self.write(_('''<html><head>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
128 <title>%(title)s</title>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
129 <style type="text/css">%(style)s</style>
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
130 </head>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
131 <body bgcolor=#ffffff>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
132 %(message)s
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 <table width=100%% border=0 cellspacing=0 cellpadding=2>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
134 <tr class="location-bar"><td><big><strong>%(title)s</strong></big></td>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
135 <td align=right valign=bottom>%(user_name)s</td></tr>
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
136 <tr class="location-bar">
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
137 <td align=left>All
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
138 <a href="issue?status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=-activity&:filter=status&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">Issues</a>
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
139 | Unassigned
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
140 <a href="issue?assignedto=-1&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=-activity&:filter=status,assignedto&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">Issues</a>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
141 %(add_links)s
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
142 %(admin_links)s</td>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
143 <td align=right>%(user_info)s</td>
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
144 </table>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
145 ''')%locals())
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
146
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147 def pagefoot(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148 if self.debug:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
149 self.write(_('<hr><small><dl><dt><b>Path</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
150 self.write('<dd>%s</dd>'%(', '.join(map(repr, self.split_path))))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
151 keys = self.form.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
152 keys.sort()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
153 if keys:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
154 self.write(_('<dt><b>Form entries</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
155 for k in self.form.keys():
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
156 v = self.form.getvalue(k, "<empty>")
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
157 if type(v) is type([]):
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
158 # Multiple username fields specified
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
159 v = "|".join(v)
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
160 self.write('<dd><em>%s</em>=%s</dd>'%(k, cgi.escape(v)))
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
161 keys = self.headers_sent.keys()
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
162 keys.sort()
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
163 self.write(_('<dt><b>Sent these HTTP headers</b></dt>'))
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
164 for k in keys:
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
165 v = self.headers_sent[k]
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
166 self.write('<dd><em>%s</em>=%s</dd>'%(k, cgi.escape(v)))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
167 keys = self.env.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
168 keys.sort()
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
169 self.write(_('<dt><b>CGI environment</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
170 for k in keys:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171 v = self.env[k]
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
172 self.write('<dd><em>%s</em>=%s</dd>'%(k, cgi.escape(v)))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
173 self.write('</dl></small>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
174 self.write('</body></html>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
175
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176 def write(self, content):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
177 if not self.headers_done:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
178 self.header()
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
179 self.request.wfile.write(content)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
181 def index_arg(self, arg):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
182 ''' handle the args to index - they might be a list from the form
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
183 (ie. submitted from a form) or they might be a command-separated
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184 single string (ie. manually constructed GET args)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
185 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
186 if self.form.has_key(arg):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
187 arg = self.form[arg]
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
188 if type(arg) == type([]):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
189 return [arg.value for arg in arg]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
190 return arg.value.split(',')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
191 return []
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
192
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
193 def index_filterspec(self, filter):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
194 ''' pull the index filter spec from the form
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
195
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
196 Links and multilinks want to be lists - the rest are straight
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
197 strings.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 '''
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
199 props = self.db.classes[self.classname].getprops()
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
200 # all the form args not starting with ':' are filters
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
201 filterspec = {}
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
202 for key in self.form.keys():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
203 if key[0] == ':': continue
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
204 if not props.has_key(key): continue
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
205 if key not in filter: continue
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
206 prop = props[key]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
207 value = self.form[key]
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
208 if (isinstance(prop, hyperdb.Link) or
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
209 isinstance(prop, hyperdb.Multilink)):
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
210 if type(value) == type([]):
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
211 value = [arg.value for arg in value]
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
212 else:
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
213 value = value.value.split(',')
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
214 l = filterspec.get(key, [])
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
215 l = l + value
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
216 filterspec[key] = l
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
217 else:
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
218 filterspec[key] = value.value
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
219 return filterspec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
220
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
221 def customization_widget(self):
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
222 ''' The customization widget is visible by default. The widget
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
223 visibility is remembered by show_customization. Visibility
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
224 is not toggled if the action value is "Redisplay"
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
225 '''
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
226 if not self.form.has_key('show_customization'):
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
227 visible = 1
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
228 else:
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
229 visible = int(self.form['show_customization'].value)
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
230 if self.form.has_key('action'):
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
231 if self.form['action'].value != 'Redisplay':
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
232 visible = self.form['action'].value == '+'
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
233
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
234 return visible
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
235
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
236 default_index_sort = ['-activity']
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
237 default_index_group = ['priority']
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
238 default_index_filter = ['status']
142
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
239 default_index_columns = ['id','activity','title','status','assignedto']
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
240 default_index_filterspec = {'status': ['1', '2', '3', '4', '5', '6', '7']}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
241 def index(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
242 ''' put up an index
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
243 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
244 self.classname = 'issue'
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
245 # see if the web has supplied us with any customisation info
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
246 defaults = 1
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
247 for key in ':sort', ':group', ':filter', ':columns':
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
248 if self.form.has_key(key):
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
249 defaults = 0
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
250 break
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
251 if defaults:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
252 # no info supplied - use the defaults
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
253 sort = self.default_index_sort
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
254 group = self.default_index_group
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
255 filter = self.default_index_filter
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
256 columns = self.default_index_columns
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
257 filterspec = self.default_index_filterspec
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
258 else:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
259 sort = self.index_arg(':sort')
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
260 group = self.index_arg(':group')
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
261 filter = self.index_arg(':filter')
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
262 columns = self.index_arg(':columns')
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
263 filterspec = self.index_filterspec(filter)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
264 return self.list(columns=columns, filter=filter, group=group,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
265 sort=sort, filterspec=filterspec)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
266
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
267 # XXX deviates from spec - loses the '+' (that's a reserved character
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
268 # in URLS
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
269 def list(self, sort=None, group=None, filter=None, columns=None,
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
270 filterspec=None, show_customization=None):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
271 ''' call the template index with the args
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
272
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
273 :sort - sort by prop name, optionally preceeded with '-'
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
274 to give descending or nothing for ascending sorting.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
275 :group - group by prop name, optionally preceeded with '-' or
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
276 to sort in descending or nothing for ascending order.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
277 :filter - selects which props should be displayed in the filter
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
278 section. Default is all.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
279 :columns - selects the columns that should be displayed.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
280 Default is all.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
281
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
282 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
283 cn = self.classname
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
284 cl = self.db.classes[cn]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
285 self.pagehead(_('%(instancename)s: Index of %(classname)s')%{
413
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
286 'classname': cn, 'instancename': self.INSTANCE_NAME})
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
287 if sort is None: sort = self.index_arg(':sort')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
288 if group is None: group = self.index_arg(':group')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
289 if filter is None: filter = self.index_arg(':filter')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
290 if columns is None: columns = self.index_arg(':columns')
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
291 if filterspec is None: filterspec = self.index_filterspec(filter)
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
292 if show_customization is None:
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
293 show_customization = self.customization_widget()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
294
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
295 index = htmltemplate.IndexTemplate(self, self.TEMPLATES, cn)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
296 index.render(filterspec, filter, columns, sort, group,
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
297 show_customization=show_customization)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
298 self.pagefoot()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
299
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
300 def shownode(self, message=None):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
301 ''' display an item
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
302 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
303 cn = self.classname
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
304 cl = self.db.classes[cn]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
305
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
306 # possibly perform an edit
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
307 keys = self.form.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
308 num_re = re.compile('^\d+$')
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
309 # don't try to set properties if the user has just logged in
412
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
310 if keys and not self.form.has_key('__login_name'):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
311 try:
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
312 props, changed = parsePropsFromForm(self.db, cl, self.form,
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
313 self.nodeid)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
314
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
315 # set status to chatting if 'unread' or 'resolved'
436
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
316 if not changed.has_key('status'):
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
317 try:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
318 # determine the id of 'unread','resolved' and 'chatting'
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
319 unread_id = self.db.status.lookup('unread')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
320 resolved_id = self.db.status.lookup('resolved')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
321 chatting_id = self.db.status.lookup('chatting')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
322 except KeyError:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
323 pass
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
324 else:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
325 if (not props.has_key('status') or
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
326 props['status'] == unread_id or
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
327 props['status'] == resolved_id):
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
328 props['status'] = chatting_id
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
329 changed['status'] = chatting_id
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
330
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
331 # get the change note
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
332 change_note = cl.generateChangeNote(self.nodeid, changed)
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
333
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
334 # make the changes
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
335 cl.set(self.nodeid, **props)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
336
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
337 # handle linked nodes and change message generation
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
338 self._post_editnode(self.nodeid, change_note)
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
339
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
340 # and some nice feedback for the user
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
341 if changed:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
342 message = _('%(changes)s edited ok')%{'changes':
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
343 ', '.join(changed.keys())}
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
344 elif self.form.has_key('__note') and self.form['__note'].value:
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
345 message = _('note added')
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
346 else:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
347 message = _('nothing changed')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
348 except:
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
349 self.db.rollback()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
350 s = StringIO.StringIO()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
351 traceback.print_exc(None, s)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
352 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
353
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
354 # now the display
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
355 id = self.nodeid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
356 if cl.getkey():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
357 id = cl.get(id, cl.getkey())
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
358 self.pagehead('%s: %s'%(self.classname.capitalize(), id), message)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
359
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
360 nodeid = self.nodeid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
361
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
362 # use the template to display the item
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
363 item = htmltemplate.ItemTemplate(self, self.TEMPLATES, self.classname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
364 item.render(nodeid)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
365
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
366 self.pagefoot()
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
367 showissue = shownode
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
368 showmsg = shownode
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
369
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
370 def showuser(self, message=None):
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
371 '''Display a user page for editing. Make sure the user is allowed
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
372 to edit this node, and also check for password changes.
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
373 '''
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
374 if self.user == 'anonymous':
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
375 raise Unauthorised
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
376
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
377 user = self.db.user
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
378
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
379 # get the username of the node being edited
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
380 node_user = user.get(self.nodeid, 'username')
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
381
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
382 if self.user not in ('admin', node_user):
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
383 raise Unauthorised
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
384
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
385 #
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
386 # perform any editing
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
387 #
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
388 keys = self.form.keys()
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
389 num_re = re.compile('^\d+$')
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
390 if keys:
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
391 try:
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
392 props, changed = parsePropsFromForm(self.db, user, self.form,
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
393 self.nodeid)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
394 set_cookie = 0
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
395 if self.nodeid == self.getuid() and 'password' in changed:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
396 password = self.form['password'].value.strip()
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
397 if password:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
398 set_cookie = password
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
399 else:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
400 del props['password']
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
401 del changed[changed.index('password')]
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
402 user.set(self.nodeid, **props)
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
403 self._post_editnode(self.nodeid)
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
404 # and some feedback for the user
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
405 message = _('%(changes)s edited ok')%{'changes':
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
406 ', '.join(changed.keys())}
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
407 except:
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
408 self.db.rollback()
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
409 s = StringIO.StringIO()
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
410 traceback.print_exc(None, s)
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
411 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
412 else:
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
413 set_cookie = 0
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
414
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
415 # fix the cookie if the password has changed
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
416 if set_cookie:
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
417 self.set_cookie(self.user, set_cookie)
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
418
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
419 #
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
420 # now the display
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
421 #
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
422 self.pagehead(_('User: %(user)s')%{'user': node_user}, message)
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
423
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
424 # use the template to display the item
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
425 item = htmltemplate.ItemTemplate(self, self.TEMPLATES, 'user')
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
426 item.render(self.nodeid)
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
427 self.pagefoot()
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
428
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
429 def showfile(self):
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
430 ''' display a file
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
431 '''
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
432 nodeid = self.nodeid
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
433 cl = self.db.file
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
434 mime_type = cl.get(nodeid, 'type')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
435 if mime_type == 'message/rfc822':
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
436 mime_type = 'text/plain'
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
437 self.header(headers={'Content-Type': mime_type})
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
438 self.write(cl.get(nodeid, 'content'))
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
439
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
440 def _createnode(self):
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
441 ''' create a node based on the contents of the form
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
442 '''
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
443 cl = self.db.classes[self.classname]
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
444 props, dummy = parsePropsFromForm(self.db, cl, self.form)
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
445
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
446 # set status to 'unread' if not specified - a status of '- no
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
447 # selection -' doesn't make sense
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
448 if not props.has_key('status'):
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
449 try:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
450 unread_id = self.db.status.lookup('unread')
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
451 except KeyError:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
452 pass
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
453 else:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
454 props['status'] = unread_id
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
455 return cl.create(**props)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
456
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
457 def _post_editnode(self, nid, change_note=''):
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
458 ''' do the linking and message sending part of the node creation
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
459 '''
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
460 cn = self.classname
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
461 cl = self.db.classes[cn]
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
462 # link if necessary
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
463 keys = self.form.keys()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
464 for key in keys:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
465 if key == ':multilink':
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
466 value = self.form[key].value
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
467 if type(value) != type([]): value = [value]
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
468 for value in value:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
469 designator, property = value.split(':')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
470 link, nodeid = roundupdb.splitDesignator(designator)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
471 link = self.db.classes[link]
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
472 value = link.get(nodeid, property)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
473 value.append(nid)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
474 link.set(nodeid, **{property: value})
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
475 elif key == ':link':
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
476 value = self.form[key].value
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
477 if type(value) != type([]): value = [value]
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
478 for value in value:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
479 designator, property = value.split(':')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
480 link, nodeid = roundupdb.splitDesignator(designator)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
481 link = self.db.classes[link]
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
482 link.set(nodeid, **{property: nid})
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
483
390
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
484 # handle file attachments
435
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
485 files = cl.get(nid, 'files')
390
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
486 if self.form.has_key('__file'):
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
487 file = self.form['__file']
391
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
488 if file.filename:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
489 mime_type = mimetypes.guess_type(file.filename)[0]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
490 if not mime_type:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
491 mime_type = "application/octet-stream"
391
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
492 # create the new file entry
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
493 files.append(self.db.file.create(type=mime_type,
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
494 name=file.filename, content=file.file.read()))
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
495 # and save the reference
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
496 cl.set(nid, files=files)
390
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
497
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
498 #
238
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
499 # generate an edit message
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
500 #
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
501
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
502 # we don't want to do a message if none of the following is true...
186
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
503 props = cl.getprops()
238
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
504 note = None
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
505 if self.form.has_key('__note'):
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
506 note = self.form['__note'].value
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
507 if not props.has_key('messages'):
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
508 return
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
509 if not isinstance(props['messages'], hyperdb.Multilink):
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
510 return
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
511 if not props['messages'].classname == 'msg':
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
512 return
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
513 if not (len(cl.get(nid, 'nosy', [])) or note):
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
514 return
186
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
515
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
516 # handle the note
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
517 if note:
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
518 if '\n' in note:
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
519 summary = re.split(r'\n\r?', note)[0]
178
1573a02b3254 Changed the order of the information in the message generated by web edits.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
520 else:
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
521 summary = note
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
522 m = ['%s\n'%note]
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
523 else:
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
524 summary = _('This %(classname)s has been edited through'
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
525 ' the web.\n')%{'classname': cn}
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
526 m = [summary]
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
527
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
528 # append the change note
436
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
529 if change_note:
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
530 m.append(change_note)
178
1573a02b3254 Changed the order of the information in the message generated by web edits.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
531
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
532 # now create the message
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
533 content = '\n'.join(m)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
534 message_id = self.db.msg.create(author=self.getuid(),
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
535 recipients=[], date=date.Date('.'), summary=summary,
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
536 content=content, files=files)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
537
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
538 # update the messages property
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
539 messages = cl.get(nid, 'messages')
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
540 messages.append(message_id)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
541 cl.set(nid, messages=messages, files=files)
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
542
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
543 def newnode(self, message=None):
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
544 ''' Add a new node to the database.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
545
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
546 The form works in two modes: blank form and submission (that is,
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
547 the submission goes to the same URL). **Eventually this means that
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
548 the form will have previously entered information in it if
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
549 submission fails.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
550
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
551 The new node will be created with the properties specified in the
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
552 form submission. For multilinks, multiple form entries are handled,
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
553 as are prop=value,value,value. You can't mix them though.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
554
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
555 If the new node is to be referenced from somewhere else immediately
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
556 (ie. the new node is a file that is to be attached to a support
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
557 issue) then supply one of these arguments in addition to the usual
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
558 form entries:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
559 :link=designator:property
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
560 :multilink=designator:property
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
561 ... which means that once the new node is created, the "property"
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
562 on the node given by "designator" should now reference the new
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
563 node's id. The node id will be appended to the multilink.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
564 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
565 cn = self.classname
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
566 cl = self.db.classes[cn]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
567
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
568 # possibly perform a create
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
569 keys = self.form.keys()
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
570 if [i for i in keys if i[0] != ':']:
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
571 props = {}
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
572 try:
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
573 nid = self._createnode()
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
574 # handle linked nodes and change message generation
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
575 self._post_editnode(nid)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
576 # and some nice feedback for the user
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
577 message = _('%(classname)s created ok')%{'classname': cn}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
578 except:
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
579 self.db.rollback()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
580 s = StringIO.StringIO()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
581 traceback.print_exc(None, s)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
582 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
583 self.pagehead(_('New %(classname)s')%{'classname':
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
584 self.classname.capitalize()}, message)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
585
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
586 # call the template
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
587 newitem = htmltemplate.NewItemTemplate(self, self.TEMPLATES,
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
588 self.classname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
589 newitem.render(self.form)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
590
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
591 self.pagefoot()
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
592 newissue = newnode
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
593 newuser = newnode
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
594
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
595 def newfile(self, message=None):
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
596 ''' Add a new file to the database.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
597
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
598 This form works very much the same way as newnode - it just has a
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
599 file upload.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
600 '''
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
601 cn = self.classname
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
602 cl = self.db.classes[cn]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
603
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
604 # possibly perform a create
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
605 keys = self.form.keys()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
606 if [i for i in keys if i[0] != ':']:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
607 try:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
608 file = self.form['content']
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
609 mime_type = mimetypes.guess_type(file.filename)[0]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
610 if not mime_type:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
611 mime_type = "application/octet-stream"
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
612 # save the file
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
613 nid = cl.create(content=file.file.read(), type=mime_type,
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
614 name=file.filename)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
615 # handle linked nodes
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
616 self._post_editnode(nid)
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
617 # and some nice feedback for the user
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
618 message = _('%(classname)s created ok')%{'classname': cn}
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
619 except:
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
620 self.db.rollback()
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
621 s = StringIO.StringIO()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
622 traceback.print_exc(None, s)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
623 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
624
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
625 self.pagehead(_('New %(classname)s')%{'classname':
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
626 self.classname.capitalize()}, message)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
627 newitem = htmltemplate.NewItemTemplate(self, self.TEMPLATES,
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
628 self.classname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
629 newitem.render(self.form)
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
630 self.pagefoot()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
631
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
632 def classes(self, message=None):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
633 ''' display a list of all the classes in the database
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
634 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
635 if self.user == 'admin':
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
636 self.pagehead(_('Table of classes'), message)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
637 classnames = self.db.classes.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
638 classnames.sort()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
639 self.write('<table border=0 cellspacing=0 cellpadding=2>\n')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
640 for cn in classnames:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
641 cl = self.db.getclass(cn)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
642 self.write('<tr class="list-header"><th colspan=2 align=left>%s</th></tr>'%cn.capitalize())
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
643 for key, value in cl.properties.items():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
644 if value is None: value = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
645 else: value = str(value)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
646 self.write('<tr><th align=left>%s</th><td>%s</td></tr>'%(
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
647 key, cgi.escape(value)))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
648 self.write('</table>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
649 self.pagefoot()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
650 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
651 raise Unauthorised
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
652
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
653 def login(self, message=None, newuser_form=None, action='index'):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
654 '''Display a login page.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
655 '''
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
656 self.pagehead(_('Login to roundup'), message)
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
657 self.write(_('''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
658 <table>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
659 <tr><td colspan=2 class="strong-header">Existing User Login</td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
660 <form action="login_action" method=POST>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
661 <input type="hidden" name="__destination_url" value="%(action)s">
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
662 <tr><td align=right>Login name: </td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
663 <td><input name="__login_name"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
664 <tr><td align=right>Password: </td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
665 <td><input type="password" name="__login_password"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
666 <tr><td></td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
667 <td><input type="submit" value="Log In"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
668 </form>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
669 ''')%locals())
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
670 if self.user is None and self.ANONYMOUS_REGISTER == 'deny':
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
671 self.write('</table>')
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
672 self.pagefoot()
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
673 return
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
674 values = {'realname': '', 'organisation': '', 'address': '',
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
675 'phone': '', 'username': '', 'password': '', 'confirm': '',
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
676 'action': action}
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
677 if newuser_form is not None:
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
678 for key in newuser_form.keys():
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
679 values[key] = newuser_form[key].value
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
680 self.write(_('''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
681 <p>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
682 <tr><td colspan=2 class="strong-header">New User Registration</td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
683 <tr><td colspan=2><em>marked items</em> are optional...</td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
684 <form action="newuser_action" method=POST>
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
685 <input type="hidden" name="__destination_url" value="%(action)s">
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
686 <tr><td align=right><em>Name: </em></td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
687 <td><input name="realname" value="%(realname)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
688 <tr><td align=right><em>Organisation: </em></td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
689 <td><input name="organisation" value="%(organisation)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
690 <tr><td align=right>E-Mail Address: </td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
691 <td><input name="address" value="%(address)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
692 <tr><td align=right><em>Phone: </em></td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
693 <td><input name="phone" value="%(phone)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
694 <tr><td align=right>Preferred Login name: </td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
695 <td><input name="username" value="%(username)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
696 <tr><td align=right>Password: </td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
697 <td><input type="password" name="password" value="%(password)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
698 <tr><td align=right>Password Again: </td>
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
699 <td><input type="password" name="confirm" value="%(confirm)s"></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
700 <tr><td></td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
701 <td><input type="submit" value="Register"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
702 </form>
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
703 </table>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
704 ''')%values)
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
705 self.pagefoot()
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
706
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
707 def login_action(self, message=None):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
708 '''Attempt to log a user in and set the cookie
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
709
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
710 returns 0 if a page is generated as a result of this call, and
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
711 1 if not (ie. the login is successful
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
712 '''
302
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
713 if not self.form.has_key('__login_name'):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
714 self.login(message=_('Username required'))
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
715 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
716 self.user = self.form['__login_name'].value
302
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
717 if self.form.has_key('__login_password'):
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
718 password = self.form['__login_password'].value
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
719 else:
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
720 password = ''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
721 # make sure the user exists
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
722 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
723 uid = self.db.user.lookup(self.user)
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
724 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
725 name = self.user
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
726 self.make_user_anonymous()
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
727 action = self.form['__destination_url'].value
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
728 self.login(message=_('No such user "%(name)s"')%locals(),
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
729 action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
730 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
731
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
732 # and that the password is correct
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
733 pw = self.db.user.get(uid, 'password')
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
734 if password != pw:
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
735 self.make_user_anonymous()
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
736 action = self.form['__destination_url'].value
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
737 self.login(message=_('Incorrect password'), action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
738 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
739
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
740 self.set_cookie(self.user, password)
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
741 return 1
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
742
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
743 def newuser_action(self, message=None):
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
744 '''Attempt to create a new user based on the contents of the form
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
745 and then set the cookie.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
746
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
747 return 1 on successful login
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
748 '''
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
749 # re-open the database as "admin"
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
750 self.db = self.instance.open('admin')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
751
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
752 # TODO: pre-check the required fields and username key property
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
753 cl = self.db.user
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
754 try:
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
755 props, dummy = parsePropsFromForm(self.db, cl, self.form)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
756 uid = cl.create(**props)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
757 except ValueError, message:
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
758 action = self.form['__destination_url'].value
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
759 self.login(message, action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
760 return 0
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
761 self.user = cl.get(uid, 'username')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
762 password = cl.get(uid, 'password')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
763 self.set_cookie(self.user, self.form['password'].value)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
764 return 1
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
765
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
766 def set_cookie(self, user, password):
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
767 # construct the cookie
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
768 user = binascii.b2a_base64('%s:%s'%(user, password)).strip()
364
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
769 if user[-1] == '=':
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
770 if user[-2] == '=':
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
771 user = user[:-2]
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
772 else:
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
773 user = user[:-1]
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
774 expire = Cookie._getdate(86400*365)
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
775 path = '/'.join((self.env['SCRIPT_NAME'], self.env['INSTANCE_NAME']))
363
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
776 self.header({'Set-Cookie': 'roundup_user=%s; expires=%s; Path=%s;' % (
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
777 user, expire, path)})
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
778
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
779 def make_user_anonymous(self):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
780 # make us anonymous if we can
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
781 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
782 self.db.user.lookup('anonymous')
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
783 self.user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
784 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
785 self.user = None
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
786
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
787 def logout(self, message=None):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
788 self.make_user_anonymous()
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
789 # construct the logout cookie
295
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
790 now = Cookie._getdate()
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
791 path = '/'.join((self.env['SCRIPT_NAME'], self.env['INSTANCE_NAME']))
295
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
792 self.header({'Set-Cookie':
363
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
793 'roundup_user=deleted; Max-Age=0; expires=%s; Path=%s;'%(now,
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
794 path)})
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
795 self.login()
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
796
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
797
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
798 def main(self):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
799 '''Wrap the database accesses so we can close the database cleanly
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
800 '''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
801 # determine the uid to use
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
802 self.db = self.instance.open('admin')
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
803 cookie = Cookie.Cookie(self.env.get('HTTP_COOKIE', ''))
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
804 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
805 if (cookie.has_key('roundup_user') and
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
806 cookie['roundup_user'].value != 'deleted'):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
807 cookie = cookie['roundup_user'].value
364
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
808 if len(cookie)%4:
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
809 cookie = cookie + '='*(4-len(cookie)%4)
365
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
810 try:
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
811 user, password = binascii.a2b_base64(cookie).split(':')
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
812 except (TypeError, binascii.Error, binascii.Incomplete):
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
813 # damaged cookie!
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
814 user, password = 'anonymous', ''
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
815
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
816 # make sure the user exists
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
817 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
818 uid = self.db.user.lookup(user)
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
819 # now validate the password
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
820 if password != self.db.user.get(uid, 'password'):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
821 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
822 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
823 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
824
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
825 # make sure the anonymous user is valid if we're using it
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
826 if user == 'anonymous':
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
827 self.make_user_anonymous()
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
828 else:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
829 self.user = user
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
830
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
831 # re-open the database for real, using the user
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
832 self.db = self.instance.open(self.user)
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
833
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
834 # now figure which function to call
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
835 path = self.split_path
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
836
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
837 # default action to index if the path has no information in it
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
838 if not path or path[0] in ('', 'index'):
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
839 action = 'index'
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
840 else:
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
841 action = path[0]
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
842
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
843 # Everthing ignores path[1:]
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
844 # - The file download link generator actually relies on this - it
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
845 # appends the name of the file to the URL so the download file name
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
846 # is correct, but doesn't actually use it.
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
847
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
848 # everyone is allowed to try to log in
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
849 if action == 'login_action':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
850 # try to login
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
851 if not self.login_action():
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
852 return
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
853 # figure the resulting page
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
854 action = self.form['__destination_url'].value
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
855 if not action:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
856 action = 'index'
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
857 self.do_action(action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
858 return
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
859
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
860 # allow anonymous people to register
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
861 if action == 'newuser_action':
326
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
862 # if we don't have a login and anonymous people aren't allowed to
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
863 # register, then spit up the login form
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
864 if self.ANONYMOUS_REGISTER == 'deny' and self.user is None:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
865 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
866 self.login() # go to the index after login
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
867 else:
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
868 self.login(action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
869 return
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
870 # try to add the user
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
871 if not self.newuser_action():
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
872 return
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
873 # figure the resulting page
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
874 action = self.form['__destination_url'].value
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
875 if not action:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
876 action = 'index'
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
877
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
878 # no login or registration, make sure totally anonymous access is OK
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
879 elif self.ANONYMOUS_ACCESS == 'deny' and self.user is None:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
880 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
881 self.login() # go to the index after login
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
882 else:
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
883 self.login(action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
884 return
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
885
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
886 # just a regular action
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
887 self.do_action(action)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
888
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
889 # commit all changes to the database
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
890 self.db.commit()
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
891
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
892 def do_action(self, action, dre=re.compile(r'([^\d]+)(\d+)'),
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
893 nre=re.compile(r'new(\w+)')):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
894 '''Figure the user's action and do it.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
895 '''
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
896 # here be the "normal" functionality
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
897 if action == 'index':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
898 self.index()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
899 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
900 if action == 'list_classes':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
901 self.classes()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
902 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
903 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
904 self.login()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
905 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
906 if action == 'logout':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
907 self.logout()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
908 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
909 m = dre.match(action)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
910 if m:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
911 self.classname = m.group(1)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
912 self.nodeid = m.group(2)
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
913 try:
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
914 cl = self.db.classes[self.classname]
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
915 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
916 raise NotFound
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
917 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
918 cl.get(self.nodeid, 'id')
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
919 except IndexError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
920 raise NotFound
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
921 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
922 func = getattr(self, 'show%s'%self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
923 except AttributeError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
924 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
925 func()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
926 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
927 m = nre.match(action)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
928 if m:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
929 self.classname = m.group(1)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
930 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
931 func = getattr(self, 'new%s'%self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
932 except AttributeError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
933 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
934 func()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
935 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
936 self.classname = action
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
937 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
938 self.db.getclass(self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
939 except KeyError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
940 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
941 self.list()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
942
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
943
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
944 class ExtendedClient(Client):
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
945 '''Includes pages and page heading information that relate to the
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
946 extended schema.
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
947 '''
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
948 showsupport = Client.shownode
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
949 showtimelog = Client.shownode
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
950 newsupport = Client.newnode
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
951 newtimelog = Client.newnode
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
952
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
953 default_index_sort = ['-activity']
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
954 default_index_group = ['priority']
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
955 default_index_filter = ['status']
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
956 default_index_columns = ['activity','status','title','assignedto']
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
957 default_index_filterspec = {'status': ['1', '2', '3', '4', '5', '6', '7']}
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
958
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
959 def pagehead(self, title, message=None):
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
960 url = self.env['SCRIPT_NAME'] + '/' #self.env.get('PATH_INFO', '/')
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
961 machine = self.env['SERVER_NAME']
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
962 port = self.env['SERVER_PORT']
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
963 if port != '80': machine = machine + ':' + port
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
964 base = urlparse.urlunparse(('http', machine, url, None, None, None))
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
965 if message is not None:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
966 message = _('<div class="system-msg">%(message)s</div>')%locals()
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
967 else:
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
968 message = ''
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
969 style = open(os.path.join(self.TEMPLATES, 'style.css')).read()
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
970 user_name = self.user or ''
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
971 if self.user == 'admin':
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
972 admin_links = _(' | <a href="list_classes">Class List</a>' \
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
973 ' | <a href="user">User List</a>')
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
974 else:
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
975 admin_links = ''
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
976 if self.user not in (None, 'anonymous'):
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
977 userid = self.db.user.lookup(self.user)
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
978 user_info = _('''
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
979 <a href="issue?assignedto=%(userid)s&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:filter=status,assignedto&:sort=-activity&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">My Issues</a> |
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
980 <a href="support?assignedto=%(userid)s&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:filter=status,assignedto&:sort=-activity&:columns=id,activity,status,title,assignedto&:group=customername&show_customization=1">My Support</a> |
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
981 <a href="user%(userid)s">My Details</a> | <a href="logout">Logout</a>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
982 ''')%locals()
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
983 else:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
984 user_info = _('<a href="login">Login</a>')
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
985 if self.user is not None:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
986 add_links = _('''
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
987 | Add
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
988 <a href="newissue">Issue</a>,
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
989 <a href="newsupport">Support</a>,
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
990 <a href="newuser">User</a>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
991 ''')
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
992 else:
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
993 add_links = ''
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
994 self.write(_('''<html><head>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
995 <title>%(title)s</title>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
996 <style type="text/css">%(style)s</style>
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
997 </head>
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
998 <body bgcolor=#ffffff>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
999 %(message)s
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1000 <table width=100%% border=0 cellspacing=0 cellpadding=2>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1001 <tr class="location-bar"><td><big><strong>%(title)s</strong></big></td>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1002 <td align=right valign=bottom>%(user_name)s</td></tr>
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1003 <tr class="location-bar">
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1004 <td align=left>All
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1005 <a href="issue?status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=activity&:filter=status&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">Issues</a>,
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1006 <a href="support?status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=activity&:filter=status&:columns=id,activity,status,title,assignedto&:group=customername&show_customization=1">Support</a>
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1007 | Unassigned
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1008 <a href="issue?assignedto=-1&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=-activity&:filter=status,assignedto&:columns=id,activity,status,title,assignedto&:group=priority&show_customization=1">Issues</a>,
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1009 <a href="support?assignedto=-1&status=-1,unread,deferred,chatting,need-eg,in-progress,testing,done-cbb&:sort=-activity&:filter=status,assignedto&:columns=id,activity,status,title,assignedto&:group=customername&show_customization=1">Support</a>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1010 %(add_links)s
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1011 %(admin_links)s</td>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1012 <td align=right>%(user_info)s</td>
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1013 </table>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1014 ''')%locals())
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1015
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1016 def parsePropsFromForm(db, cl, form, nodeid=0):
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1017 '''Pull properties for the given class out of the form.
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1018 '''
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1019 props = {}
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1020 changed = {}
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1021 keys = form.keys()
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1022 num_re = re.compile('^\d+$')
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1023 for key in keys:
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1024 if not cl.properties.has_key(key):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1025 continue
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1026 proptype = cl.properties[key]
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1027 if isinstance(proptype, hyperdb.String):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1028 value = form[key].value.strip()
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1029 elif isinstance(proptype, hyperdb.Password):
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1030 value = password.Password(form[key].value.strip())
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1031 elif isinstance(proptype, hyperdb.Date):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1032 value = date.Date(form[key].value.strip())
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1033 elif isinstance(proptype, hyperdb.Interval):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1034 value = date.Interval(form[key].value.strip())
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1035 elif isinstance(proptype, hyperdb.Link):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1036 value = form[key].value.strip()
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1037 # see if it's the "no selection" choice
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1038 if value == '-1':
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1039 # don't set this property
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1040 continue
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1041 else:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1042 # handle key values
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1043 link = cl.properties[key].classname
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1044 if not num_re.match(value):
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1045 try:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1046 value = db.classes[link].lookup(value)
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1047 except KeyError:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1048 raise ValueError, _('property "%(propname)s": '
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1049 '%(value)s not a %(classname)s')%{'propname':key,
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1050 'value': value, 'classname': link}
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1051 elif isinstance(proptype, hyperdb.Multilink):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1052 value = form[key]
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1053 if type(value) != type([]):
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1054 value = [i.strip() for i in value.value.split(',')]
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1055 else:
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1056 value = [i.value.strip() for i in value]
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1057 link = cl.properties[key].classname
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1058 l = []
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1059 for entry in map(str, value):
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1060 if entry == '': continue
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1061 if not num_re.match(entry):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1062 try:
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1063 entry = db.classes[link].lookup(entry)
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1064 except KeyError:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1065 raise ValueError, _('property "%(propname)s": '
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1066 '"%(value)s" not an entry of %(classname)s')%{
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1067 'propname':key, 'value': entry, 'classname': link}
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1068 l.append(entry)
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1069 l.sort()
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1070 value = l
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1071 props[key] = value
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1072
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1073 # get the old value
396
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1074 if nodeid:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1075 try:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1076 existing = cl.get(nodeid, key)
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1077 except KeyError:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1078 # this might be a new property for which there is no existing
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1079 # value
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1080 if not cl.properties.has_key(key): raise
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1081
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1082 # if changed, set it
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1083 if nodeid and value != existing:
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1084 changed[key] = value
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1085 props[key] = value
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1086 return props, changed
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1087
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1088 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1089 # $Log: not supported by cvs2svn $
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
1090 # Revision 1.78 2001/12/07 05:59:27 rochecompaan
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
1091 # Fixed small bug that prevented adding issues through the web.
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
1092 #
436
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
1093 # Revision 1.77 2001/12/06 22:48:29 richard
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
1094 # files multilink was being nuked in post_edit_node
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
1095 #
435
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
1096 # Revision 1.76 2001/12/05 14:26:44 rochecompaan
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
1097 # Removed generation of change note from "sendmessage" in roundupdb.py.
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
1098 # The change note is now generated when the message is created.
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
1099 #
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1100 # Revision 1.75 2001/12/04 01:25:08 richard
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1101 # Added some rollbacks where we were catching exceptions that would otherwise
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1102 # have stopped committing.
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1103 #
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1104 # Revision 1.74 2001/12/02 05:06:16 richard
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1105 # . We now use weakrefs in the Classes to keep the database reference, so
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1106 # the close() method on the database is no longer needed.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1107 # I bumped the minimum python requirement up to 2.1 accordingly.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1108 # . #487480 ] roundup-server
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1109 # . #487476 ] INSTALL.txt
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1110 #
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1111 # I also cleaned up the change message / post-edit stuff in the cgi client.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1112 # There's now a clearly marked "TODO: append the change note" where I believe
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1113 # the change note should be added there. The "changes" list will obviously
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1114 # have to be modified to be a dict of the changes, or somesuch.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1115 #
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1116 # More testing needed.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1117 #
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1118 # Revision 1.73 2001/12/01 07:17:50 richard
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1119 # . We now have basic transaction support! Information is only written to
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1120 # the database when the commit() method is called. Only the anydbm
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1121 # backend is modified in this way - neither of the bsddb backends have been.
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1122 # The mail, admin and cgi interfaces all use commit (except the admin tool
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1123 # doesn't have a commit command, so interactive users can't commit...)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1124 # . Fixed login/registration forwarding the user to the right page (or not,
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1125 # on a failure)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1126 #
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1127 # Revision 1.72 2001/11/30 20:47:58 rochecompaan
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1128 # Links in page header are now consistent with default sort order.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1129 #
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1130 # Fixed bugs:
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1131 # - When login failed the list of issues were still rendered.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1132 # - User was redirected to index page and not to his destination url
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1133 # if his first login attempt failed.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1134 #
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1135 # Revision 1.71 2001/11/30 20:28:10 rochecompaan
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1136 # Property changes are now completely traceable, whether changes are
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1137 # made through the web or by email
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1138 #
428
7956563d49ae Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 422
diff changeset
1139 # Revision 1.70 2001/11/30 00:06:29 richard
7956563d49ae Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 422
diff changeset
1140 # Converted roundup/cgi_client.py to use _()
7956563d49ae Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 422
diff changeset
1141 # Added the status file, I18N_PROGRESS.txt
7956563d49ae Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 422
diff changeset
1142 #
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1143 # Revision 1.69 2001/11/29 23:19:51 richard
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1144 # Removed the "This issue has been edited through the web" when a valid
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1145 # change note is supplied.
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1146 #
421
6bd365c63528 Removed the "This issue has been edited through the web"...
Richard Jones <richard@users.sourceforge.net>
parents: 420
diff changeset
1147 # Revision 1.68 2001/11/29 04:57:23 richard
6bd365c63528 Removed the "This issue has been edited through the web"...
Richard Jones <richard@users.sourceforge.net>
parents: 420
diff changeset
1148 # a little comment
6bd365c63528 Removed the "This issue has been edited through the web"...
Richard Jones <richard@users.sourceforge.net>
parents: 420
diff changeset
1149 #
420
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1150 # Revision 1.67 2001/11/28 21:55:35 richard
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1151 # . login_action and newuser_action return values were being ignored
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1152 # . Woohoo! Found that bloody re-login bug that was killing the mail
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1153 # gateway.
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1154 # (also a minor cleanup in hyperdb)
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1155 #
419
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 414
diff changeset
1156 # Revision 1.66 2001/11/27 03:00:50 richard
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 414
diff changeset
1157 # couple of bugfixes from latest patch integration
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 414
diff changeset
1158 #
414
fc6d03e9dbc1 couple of bugfixes from latest patch integration
Richard Jones <richard@users.sourceforge.net>
parents: 413
diff changeset
1159 # Revision 1.65 2001/11/26 23:00:53 richard
fc6d03e9dbc1 couple of bugfixes from latest patch integration
Richard Jones <richard@users.sourceforge.net>
parents: 413
diff changeset
1160 # This config stuff is getting to be a real mess...
fc6d03e9dbc1 couple of bugfixes from latest patch integration
Richard Jones <richard@users.sourceforge.net>
parents: 413
diff changeset
1161 #
413
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
1162 # Revision 1.64 2001/11/26 22:56:35 richard
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
1163 # typo
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
1164 #
412
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1165 # Revision 1.63 2001/11/26 22:55:56 richard
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1166 # Feature:
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1167 # . Added INSTANCE_NAME to configuration - used in web and email to identify
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1168 # the instance.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1169 # . Added EMAIL_SIGNATURE_POSITION to indicate where to place the roundup
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1170 # signature info in e-mails.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1171 # . Some more flexibility in the mail gateway and more error handling.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1172 # . Login now takes you to the page you back to the were denied access to.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1173 #
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1174 # Fixed:
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1175 # . Lots of bugs, thanks Roché and others on the devel mailing list!
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1176 #
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1177 # Revision 1.62 2001/11/24 00:45:42 jhermann
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1178 # typeof() instead of type(): avoid clash with database field(?) "type"
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1179 #
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1180 # Fixes this traceback:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1181 #
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1182 # Traceback (most recent call last):
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1183 # File "roundup\cgi_client.py", line 535, in newnode
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1184 # self._post_editnode(nid)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1185 # File "roundup\cgi_client.py", line 415, in _post_editnode
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1186 # if type(value) != type([]): value = [value]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1187 # UnboundLocalError: local variable 'type' referenced before assignment
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1188 #
407
a28c5c683151 typeof() instead of type(): avoid clash with database field(?) "type"
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1189 # Revision 1.61 2001/11/22 15:46:42 jhermann
a28c5c683151 typeof() instead of type(): avoid clash with database field(?) "type"
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1190 # Added module docstrings to all modules.
a28c5c683151 typeof() instead of type(): avoid clash with database field(?) "type"
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1191 #
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1192 # Revision 1.60 2001/11/21 22:57:28 jhermann
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1193 # Added dummy hooks for I18N and some preliminary (test) markup of
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1194 # translatable messages
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1195 #
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
1196 # Revision 1.59 2001/11/21 03:21:13 richard
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
1197 # oops
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
1198 #
396
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1199 # Revision 1.58 2001/11/21 03:11:28 richard
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1200 # Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1201 #
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1202 # Revision 1.57 2001/11/15 10:24:27 richard
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1203 # handle the case where there is no file attached
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1204 #
391
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
1205 # Revision 1.56 2001/11/14 21:35:21 richard
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
1206 # . users may attach files to issues (and support in ext) through the web now
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
1207 #
390
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
1208 # Revision 1.55 2001/11/07 02:34:06 jhermann
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
1209 # Handling of damaged login cookies
a74ea8489896 users may attach files to issues (and support in ext) through the web now
Richard Jones <richard@users.sourceforge.net>
parents: 365
diff changeset
1210 #
365
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1211 # Revision 1.54 2001/11/07 01:16:12 richard
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1212 # Remove the '=' padding from cookie value so quoting isn't an issue.
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1213 #
364
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1214 # Revision 1.53 2001/11/06 23:22:05 jhermann
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1215 # More IE fixes: it does not like quotes around cookie values; in the
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1216 # hope this does not break anything for other browser; if it does, we
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1217 # need to check HTTP_USER_AGENT
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1218 #
363
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1219 # Revision 1.52 2001/11/06 23:11:22 jhermann
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1220 # Fixed debug output in page footer; added expiry date to the login cookie
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1221 # (expires 1 year in the future) to prevent probs with certain versions
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1222 # of IE
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1223 #
362
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
1224 # Revision 1.51 2001/11/06 22:00:34 jhermann
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
1225 # Get debug level from ROUNDUP_DEBUG env var
ccb394667145 Fixed debug output in page footer; added expiry date to the login cookie
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 357
diff changeset
1226 #
357
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
1227 # Revision 1.50 2001/11/05 23:45:40 richard
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
1228 # Fixed newuser_action so it sets the cookie with the unencrypted password.
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
1229 # Also made it present nicer error messages (not tracebacks).
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
1230 #
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1231 # Revision 1.49 2001/11/04 03:07:12 richard
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1232 # Fixed various cookie-related bugs:
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1233 # . bug #477685 ] base64.decodestring breaks
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1234 # . bug #477837 ] lynx does not like the cookie
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1235 # . bug #477892 ] Password edit doesn't fix login cookie
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1236 # Also closed a security hole - a logged-in user could edit another user's
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1237 # details.
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1238 #
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1239 # Revision 1.48 2001/11/03 01:30:18 richard
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1240 # Oops. uses pagefoot now.
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1241 #
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1242 # Revision 1.47 2001/11/03 01:29:28 richard
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1243 # Login page didn't have all close tags.
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1244 #
348
870b24383309 Login page didn't have all close tags.
Richard Jones <richard@users.sourceforge.net>
parents: 347
diff changeset
1245 # Revision 1.46 2001/11/03 01:26:55 richard
870b24383309 Login page didn't have all close tags.
Richard Jones <richard@users.sourceforge.net>
parents: 347
diff changeset
1246 # possibly fix truncated base64'ed user:pass
870b24383309 Login page didn't have all close tags.
Richard Jones <richard@users.sourceforge.net>
parents: 347
diff changeset
1247 #
347
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1248 # Revision 1.45 2001/11/01 22:04:37 richard
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1249 # Started work on supporting a pop3-fetching server
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1250 # Fixed bugs:
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1251 # . bug #477104 ] HTML tag error in roundup-server
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1252 # . bug #477107 ] HTTP header problem
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1253 #
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
1254 # Revision 1.44 2001/10/28 23:03:08 richard
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
1255 # Added more useful header to the classic schema.
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
1256 #
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
1257 # Revision 1.43 2001/10/24 00:01:42 richard
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
1258 # More fixes to lockout logic.
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
1259 #
326
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1260 # Revision 1.42 2001/10/23 23:56:03 richard
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1261 # HTML typo
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1262 #
325
70aadd5fbc18 HTML typo
Richard Jones <richard@users.sourceforge.net>
parents: 323
diff changeset
1263 # Revision 1.41 2001/10/23 23:52:35 richard
70aadd5fbc18 HTML typo
Richard Jones <richard@users.sourceforge.net>
parents: 323
diff changeset
1264 # Fixed lock-out logic, thanks Roch'e for pointing out the problems.
70aadd5fbc18 HTML typo
Richard Jones <richard@users.sourceforge.net>
parents: 323
diff changeset
1265 #
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1266 # Revision 1.40 2001/10/23 23:06:39 richard
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1267 # Some cleanup.
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1268 #
322
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1269 # Revision 1.39 2001/10/23 01:00:18 richard
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1270 # Re-enabled login and registration access after lopping them off via
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1271 # disabling access for anonymous users.
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1272 # Major re-org of the htmltemplate code, cleaning it up significantly. Fixed
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1273 # a couple of bugs while I was there. Probably introduced a couple, but
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1274 # things seem to work OK at the moment.
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1275 #
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1276 # Revision 1.38 2001/10/22 03:25:01 richard
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1277 # Added configuration for:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1278 # . anonymous user access and registration (deny/allow)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1279 # . filter "widget" location on index page (top, bottom, both)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1280 # Updated some documentation.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1281 #
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1282 # Revision 1.37 2001/10/21 07:26:35 richard
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1283 # feature #473127: Filenames. I modified the file.index and htmltemplate
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1284 # source so that the filename is used in the link and the creation
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1285 # information is displayed.
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1286 #
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1287 # Revision 1.36 2001/10/21 04:44:50 richard
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1288 # bug #473124: UI inconsistency with Link fields.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1289 # This also prompted me to fix a fairly long-standing usability issue -
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1290 # that of being able to turn off certain filters.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1291 #
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1292 # Revision 1.35 2001/10/21 00:17:54 richard
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1293 # CGI interface view customisation section may now be hidden (patch from
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1294 # Roch'e Compaan.)
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1295 #
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
1296 # Revision 1.34 2001/10/20 11:58:48 richard
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
1297 # Catch errors in login - no username or password supplied.
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
1298 # Fixed editing of password (Password property type) thanks Roch'e Compaan.
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
1299 #
302
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1300 # Revision 1.33 2001/10/17 00:18:41 richard
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1301 # Manually constructing cookie headers now.
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1302 #
295
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1303 # Revision 1.32 2001/10/16 03:36:21 richard
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1304 # CGI interface wasn't handling checkboxes at all.
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1305 #
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1306 # Revision 1.31 2001/10/14 10:55:00 richard
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1307 # Handle empty strings in HTML template Link function
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1308 #
292
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1309 # Revision 1.30 2001/10/09 07:38:58 richard
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1310 # Pushed the base code for the extended schema CGI interface back into the
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1311 # code cgi_client module so that future updates will be less painful.
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1312 # Also removed a debugging print statement from cgi_client.
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1313 #
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1314 # Revision 1.29 2001/10/09 07:25:59 richard
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1315 # Added the Password property type. See "pydoc roundup.password" for
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1316 # implementation details. Have updated some of the documentation too.
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1317 #
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1318 # Revision 1.28 2001/10/08 00:34:31 richard
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1319 # Change message was stuffing up for multilinks with no key property.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1320 #
267
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1321 # Revision 1.27 2001/10/05 02:23:24 richard
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1322 # . roundup-admin create now prompts for property info if none is supplied
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1323 # on the command-line.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1324 # . hyperdb Class getprops() method may now return only the mutable
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1325 # properties.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1326 # . Login now uses cookies, which makes it a whole lot more flexible. We can
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1327 # now support anonymous user access (read-only, unless there's an
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1328 # "anonymous" user, in which case write access is permitted). Login
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1329 # handling has been moved into cgi_client.Client.main()
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1330 # . The "extended" schema is now the default in roundup init.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1331 # . The schemas have had their page headings modified to cope with the new
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1332 # login handling. Existing installations should copy the interfaces.py
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1333 # file from the roundup lib directory to their instance home.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1334 # . Incorrectly had a Bizar Software copyright on the cgitb.py module from
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1335 # Ping - has been removed.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1336 # . Fixed a whole bunch of places in the CGI interface where we should have
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1337 # been returning Not Found instead of throwing an exception.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1338 # . Fixed a deviation from the spec: trying to modify the 'id' property of
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1339 # an item now throws an exception.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1340 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1341 # Revision 1.26 2001/09/12 08:31:42 richard
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1342 # handle cases where mime type is not guessable
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1343 #
247
6aae5aaeab27 handle cases where mime type is not guessable
Richard Jones <richard@users.sourceforge.net>
parents: 238
diff changeset
1344 # Revision 1.25 2001/08/29 05:30:49 richard
6aae5aaeab27 handle cases where mime type is not guessable
Richard Jones <richard@users.sourceforge.net>
parents: 238
diff changeset
1345 # change messages weren't being saved when there was no-one on the nosy list.
6aae5aaeab27 handle cases where mime type is not guessable
Richard Jones <richard@users.sourceforge.net>
parents: 238
diff changeset
1346 #
238
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
1347 # Revision 1.24 2001/08/29 04:49:39 richard
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
1348 # didn't clean up fully after debugging :(
b8cca914bb53 change messages weren't being saved when there was no-one on the nosy list.
Richard Jones <richard@users.sourceforge.net>
parents: 237
diff changeset
1349 #
237
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1350 # Revision 1.23 2001/08/29 04:47:18 richard
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1351 # Fixed CGI client change messages so they actually include the properties
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1352 # changed (again).
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1353 #
236
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 232
diff changeset
1354 # Revision 1.22 2001/08/17 00:08:10 richard
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 232
diff changeset
1355 # reverted back to sending messages always regardless of who is doing the web
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 232
diff changeset
1356 # edit. change notes weren't being saved. bleah. hackish.
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 232
diff changeset
1357 #
232
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1358 # Revision 1.21 2001/08/15 23:43:18 richard
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1359 # Fixed some isFooTypes that I missed.
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1360 # Refactored some code in the CGI code.
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1361 #
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1362 # Revision 1.20 2001/08/12 06:32:36 richard
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1363 # using isinstance(blah, Foo) now instead of isFooType
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1364 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1365 # Revision 1.19 2001/08/07 00:24:42 richard
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1366 # stupid typo
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1367 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1368 # Revision 1.18 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1369 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1370 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1371 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1372 # Revision 1.17 2001/08/02 06:38:17 richard
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1373 # Roundupdb now appends "mailing list" information to its messages which
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1374 # include the e-mail address and web interface address. Templates may
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1375 # override this in their db classes to include specific information (support
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1376 # instructions, etc).
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1377 #
188
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 186
diff changeset
1378 # Revision 1.16 2001/08/02 05:55:25 richard
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 186
diff changeset
1379 # Web edit messages aren't sent to the person who did the edit any more. No
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 186
diff changeset
1380 # message is generated if they are the only person on the nosy list.
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 186
diff changeset
1381 #
186
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
1382 # Revision 1.15 2001/08/02 00:34:10 richard
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
1383 # bleah syntax error
61355a9483f4 Web edit messages aren't sent to the person who did the edit any more.
Richard Jones <richard@users.sourceforge.net>
parents: 181
diff changeset
1384 #
181
817750ead8d5 bleah syntax error
Richard Jones <richard@users.sourceforge.net>
parents: 178
diff changeset
1385 # Revision 1.14 2001/08/02 00:26:16 richard
817750ead8d5 bleah syntax error
Richard Jones <richard@users.sourceforge.net>
parents: 178
diff changeset
1386 # Changed the order of the information in the message generated by web edits.
817750ead8d5 bleah syntax error
Richard Jones <richard@users.sourceforge.net>
parents: 178
diff changeset
1387 #
178
1573a02b3254 Changed the order of the information in the message generated by web edits.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1388 # Revision 1.13 2001/07/30 08:12:17 richard
1573a02b3254 Changed the order of the information in the message generated by web edits.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1389 # Added time logging and file uploading to the templates.
1573a02b3254 Changed the order of the information in the message generated by web edits.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1390 #
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
1391 # Revision 1.12 2001/07/30 06:26:31 richard
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
1392 # Added some documentation on how the newblah works.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
1393 #
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1394 # Revision 1.11 2001/07/30 06:17:45 richard
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1395 # Features:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1396 # . Added ability for cgi newblah forms to indicate that the new node
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1397 # should be linked somewhere.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1398 # Fixed:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1399 # . Fixed the agument handling for the roundup-admin find command.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1400 # . Fixed handling of summary when no note supplied for newblah. Again.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1401 # . Fixed detection of no form in htmltemplate Field display.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1402 #
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1403 # Revision 1.10 2001/07/30 02:37:34 richard
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1404 # Temporary measure until we have decent schema migration...
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1405 #
154
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1406 # Revision 1.9 2001/07/30 01:25:07 richard
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1407 # Default implementation is now "classic" rather than "extended" as one would
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1408 # expect.
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1409 #
142
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1410 # Revision 1.8 2001/07/29 08:27:40 richard
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1411 # Fixed handling of passed-in values in form elements (ie. during a
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1412 # drill-down)
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1413 #
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1414 # Revision 1.7 2001/07/29 07:01:39 richard
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1415 # Added vim command to all source so that we don't get no steenkin' tabs :)
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1416 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 117
diff changeset
1417 # Revision 1.6 2001/07/29 04:04:00 richard
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 117
diff changeset
1418 # Moved some code around allowing for subclassing to change behaviour.
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 117
diff changeset
1419 #
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
1420 # Revision 1.5 2001/07/28 08:16:52 richard
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
1421 # New issue form handles lack of note better now.
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
1422 #
115
8775d545f41e New issue form handles lack of note better now.
Richard Jones <richard@users.sourceforge.net>
parents: 103
diff changeset
1423 # Revision 1.4 2001/07/28 00:34:34 richard
8775d545f41e New issue form handles lack of note better now.
Richard Jones <richard@users.sourceforge.net>
parents: 103
diff changeset
1424 # Fixed some non-string node ids.
8775d545f41e New issue form handles lack of note better now.
Richard Jones <richard@users.sourceforge.net>
parents: 103
diff changeset
1425 #
103
381016730332 Fixed some non-string node ids.
Richard Jones <richard@users.sourceforge.net>
parents: 31
diff changeset
1426 # Revision 1.3 2001/07/23 03:56:30 richard
381016730332 Fixed some non-string node ids.
Richard Jones <richard@users.sourceforge.net>
parents: 31
diff changeset
1427 # oops, missed a config removal
381016730332 Fixed some non-string node ids.
Richard Jones <richard@users.sourceforge.net>
parents: 31
diff changeset
1428 #
31
6eebdf2bf262 oops, missed a config removal
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1429 # Revision 1.2 2001/07/22 12:09:32 richard
6eebdf2bf262 oops, missed a config removal
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1430 # Final commit of Grande Splite
6eebdf2bf262 oops, missed a config removal
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1431 #
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
1432 # Revision 1.1 2001/07/22 11:58:35 richard
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
1433 # More Grande Splite
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1434 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 117
diff changeset
1435 #
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 117
diff changeset
1436 # vim: set filetype=python ts=4 sw=4 et si

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