annotate roundup/cgi_client.py @ 718:e10c37f53efd

fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope (thanks dman) fixed some sorting issues that were breaking some unit tests under py2.2 mailgw test output dir was confusing the init test (but only on 2.2 *shrug*) fixed bug in the init unit test that meant only the bsddb test ran if it could (it clobbered the anydbm test)
author Richard Jones <richard@users.sourceforge.net>
date Wed, 15 May 2002 03:27:16 +0000
parents 5c90264ad2e3
children fed4c363a7f3
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 #
713
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
18 # $Id: cgi_client.py,v 1.118 2002-05-12 23:46:33 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
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
24 import os, cgi, StringIO, urlparse, re, traceback, mimetypes, urllib
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
25 import binascii, Cookie, time, random
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.
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
47 '''
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
48
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
49 def __init__(self, instance, request, env, form=None):
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
50 self.instance = instance
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
51 self.request = request
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 self.env = env
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 self.path = env['PATH_INFO']
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 self.split_path = self.path.split('/')
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
55 self.instance_path_name = env['INSTANCE_NAME']
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
56 url = self.env['SCRIPT_NAME'] + '/'
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
57 machine = self.env['SERVER_NAME']
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
58 port = self.env['SERVER_PORT']
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
59 if port != '80': machine = machine + ':' + port
636
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
60 self.base = urlparse.urlunparse(('http', env['HTTP_HOST'], url,
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
61 None, None, None))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
63 if form is None:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
64 self.form = cgi.FieldStorage(environ=env)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
65 else:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
66 self.form = form
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 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
68 try:
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
69 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
70 except ValueError:
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
71 # 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
72 self.debug = 0
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73
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
74 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
75 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
76
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 643
diff changeset
77 def header(self, headers=None):
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
78 '''Put up the appropriate header.
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
79 '''
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
80 if headers is None:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
81 headers = {'Content-Type':'text/html'}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 if not headers.has_key('Content-Type'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 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
84 self.request.send_response(200)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 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
86 self.request.send_header(*entry)
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
87 self.request.end_headers()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 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
89 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
90 self.headers_sent = headers
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
92 global_javascript = '''
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
93 <script language="javascript">
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
94 submitted = false;
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
95 function submit_once() {
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
96 if (submitted) {
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
97 alert("Your request is being processed.\\nPlease be patient.");
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
98 return 0;
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
99 }
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
100 submitted = true;
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
101 return 1;
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
102 }
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
103
643
Richard Jones <richard@users.sourceforge.net>
parents: 638
diff changeset
104 function help_window(helpurl, width, height) {
638
21b3cfa7d99a ... and label, width and height control for extra flavour!
Richard Jones <richard@users.sourceforge.net>
parents: 637
diff changeset
105 HelpWin = window.open('%(base)s%(instance_path_name)s/' + helpurl, 'HelpWindow', 'scrollbars=yes,resizable=yes,toolbar=no,height='+height+',width='+width);
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
106 }
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
107
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
108 </script>
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
109 '''
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
110 def make_index_link(self, name):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
111 '''Turn a configuration entry into a hyperlink...
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
112 '''
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
113 # get the link label and spec
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
114 spec = getattr(self.instance, name+'_INDEX')
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
115
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
116 d = {}
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
117 d[':sort'] = ','.join(map(urllib.quote, spec['SORT']))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
118 d[':group'] = ','.join(map(urllib.quote, spec['GROUP']))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
119 d[':filter'] = ','.join(map(urllib.quote, spec['FILTER']))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
120 d[':columns'] = ','.join(map(urllib.quote, spec['COLUMNS']))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
121
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
122 # snarf the filterspec
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
123 filterspec = spec['FILTERSPEC'].copy()
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
124
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
125 # now format the filterspec
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
126 for k, l in filterspec.items():
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
127 # fix up the assignedto if needed
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
128 if k == 'assignedto' and l is None:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
129 l = [self.db.user.lookup(self.user)]
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
130
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
131 # add
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
132 d[urllib.quote(k)] = ','.join(map(urllib.quote, l))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
133
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
134 # finally, format the URL
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
135 return '<a href="%s?%s">%s</a>'%(spec['CLASS'],
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
136 '&'.join([k+'='+v for k,v in d.items()]), spec['LABEL'])
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
137
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
138
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
139 def pagehead(self, title, message=None):
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
140 '''Display the page heading, with information about the tracker and
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
141 links to more information
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
142 '''
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
143
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
144 # include any important message
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
145 if message is not None:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
146 message = _('<div class="system-msg">%(message)s</div>')%locals()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148 message = ''
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
149
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
150 # style sheet (CSS)
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
151 style = open(os.path.join(self.instance.TEMPLATES, 'style.css')).read()
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
152
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
153 # figure who the user is
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
154 user_name = self.user or ''
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
155 if user_name not in ('', 'anonymous'):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
156 userid = self.db.user.lookup(self.user)
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
157 else:
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
158 userid = None
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
159
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
160 # figure all the header links
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
161 if hasattr(self.instance, 'HEADER_INDEX_LINKS'):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
162 links = []
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
163 for name in self.instance.HEADER_INDEX_LINKS:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
164 spec = getattr(self.instance, name + '_INDEX')
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
165 # skip if we need to fill in the logged-in user id there's
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
166 # no user logged in
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
167 if (spec['FILTERSPEC'].has_key('assignedto') and
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
168 spec['FILTERSPEC']['assignedto'] is None and
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
169 userid is None):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
170 continue
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
171 links.append(self.make_index_link(name))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
172 else:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
173 # no config spec - hard-code
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
174 links = [
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
175 _('All <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>'),
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
176 _('Unassigned <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>')
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
177 ]
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
178
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
179 # if they're logged in, include links to their information, and the
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
180 # ability to add an issue
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
181 if user_name not in ('', 'anonymous'):
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
182 user_info = _('''
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
183 <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
184 ''')%locals()
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
185
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
186 # figure the "add class" links
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
187 if hasattr(self.instance, 'HEADER_ADD_LINKS'):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
188 classes = self.instance.HEADER_ADD_LINKS
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
189 else:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
190 classes = ['issue']
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
191 l = []
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
192 for class_name in classes:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
193 cap_class = class_name.capitalize()
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
194 links.append(_('Add <a href="new%(class_name)s">'
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
195 '%(cap_class)s</a>')%locals())
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
196
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
197 # if there's no config header link spec, force a user link here
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
198 if not hasattr(self.instance, 'HEADER_INDEX_LINKS'):
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
199 links.append(_('<a href="issue?assignedto=%(userid)s&status=-1,unread,chatting,open,pending&:filter=status,resolution,assignedto&:sort=-activity&:columns=id,activity,status,resolution,title,creator&:group=type&show_customization=1">My Issues</a>')%locals())
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
200 else:
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
201 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
202 add_links = ''
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
203
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
204 # if the user is admin, include admin links
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
205 admin_links = ''
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
206 if user_name == 'admin':
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
207 links.append(_('<a href="list_classes">Class List</a>'))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
208 links.append(_('<a href="user">User List</a>'))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
209 links.append(_('<a href="newuser">Add User</a>'))
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
210
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
211 # now we have all the links, join 'em
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
212 links = '\n | '.join(links)
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
213
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
214 # include the javascript bit
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
215 global_javascript = self.global_javascript%self.__dict__
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
216
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
217 # finally, format the header
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
218 self.write(_('''<html><head>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
219 <title>%(title)s</title>
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
220 <style type="text/css">%(style)s</style>
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
221 </head>
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
222 %(global_javascript)s
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
223 <body bgcolor=#ffffff>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
224 %(message)s
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
225 <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
226 <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
227 <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
228 <tr class="location-bar">
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
229 <td align=left>%(links)s</td>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
230 <td align=right>%(user_info)s</td>
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
231 </table>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
232 ''')%locals())
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
233
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
234 def pagefoot(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
235 if self.debug:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
236 self.write(_('<hr><small><dl><dt><b>Path</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
237 self.write('<dd>%s</dd>'%(', '.join(map(repr, self.split_path))))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
238 keys = self.form.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
239 keys.sort()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
240 if keys:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
241 self.write(_('<dt><b>Form entries</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
242 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
243 v = self.form.getvalue(k, "<empty>")
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
244 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
245 # 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
246 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
247 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
248 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
249 keys.sort()
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
250 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
251 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
252 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
253 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
254 keys = self.env.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
255 keys.sort()
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
256 self.write(_('<dt><b>CGI environment</b></dt>'))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
257 for k in keys:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
258 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
259 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
260 self.write('</dl></small>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
261 self.write('</body></html>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
262
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
263 def write(self, content):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
264 if not self.headers_done:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
265 self.header()
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
266 self.request.wfile.write(content)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
267
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
268 def index_arg(self, arg):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
269 ''' 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
270 (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
271 single string (ie. manually constructed GET 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 if self.form.has_key(arg):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
274 arg = self.form[arg]
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
275 if type(arg) == type([]):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
276 return [arg.value for arg in arg]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
277 return arg.value.split(',')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
278 return []
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
279
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
280 def index_filterspec(self, filter):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
281 ''' 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
282
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
283 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
284 strings.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
285 '''
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
286 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
287 # all the form args not starting with ':' are filters
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
288 filterspec = {}
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
289 for key in self.form.keys():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
290 if key[0] == ':': continue
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
291 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
292 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
293 prop = props[key]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
294 value = self.form[key]
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
295 if (isinstance(prop, hyperdb.Link) or
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
296 isinstance(prop, hyperdb.Multilink)):
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
297 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
298 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
299 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
300 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
301 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
302 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
303 filterspec[key] = l
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
304 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
305 filterspec[key] = value.value
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
306 return filterspec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
307
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
308 def customization_widget(self):
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
309 ''' 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
310 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
311 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
312 '''
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
313 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
314 visible = 1
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
315 else:
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
316 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
317 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
318 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
319 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
320
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
321 return visible
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
322
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
323 # TODO: make this go away some day...
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
324 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
325 default_index_group = ['priority']
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
326 default_index_filter = ['status']
142
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
327 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
328 default_index_filterspec = {'status': ['1', '2', '3', '4', '5', '6', '7']}
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
329
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
330 def index(self):
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
331 ''' put up an index - no class specified
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
332 '''
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
333 # 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
334 defaults = 1
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
335 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
336 if self.form.has_key(key):
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
337 defaults = 0
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
338 break
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
339 if defaults:
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
340 # try the instance config first
664
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
341 if hasattr(self.instance, 'DEFAULT_INDEX'):
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
342 d = self.instance.DEFAULT_INDEX
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
343 self.classname = d['CLASS']
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
344 sort = d['SORT']
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
345 group = d['GROUP']
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
346 filter = d['FILTER']
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
347 columns = d['COLUMNS']
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
348 filterspec = d['FILTERSPEC']
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
349
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
350 else:
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
351 # nope - fall back on the old way of doing it
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
352 self.classname = 'issue'
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
353 sort = self.default_index_sort
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
354 group = self.default_index_group
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
355 filter = self.default_index_filter
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
356 columns = self.default_index_columns
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
357 filterspec = self.default_index_filterspec
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
358 else:
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
359 # make list() extract the info from the CGI environ
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
360 self.classname = 'issue'
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
361 sort = group = filter = columns = filterspec = None
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
362 return self.list(columns=columns, filter=filter, group=group,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
363 sort=sort, filterspec=filterspec)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
364
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
365 # XXX deviates from spec - loses the '+' (that's a reserved character
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
366 # in URLS
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
367 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
368 filterspec=None, show_customization=None):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
369 ''' call the template index with the args
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
370
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
371 :sort - sort by prop name, optionally preceeded with '-'
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
372 to give descending or nothing for ascending sorting.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
373 :group - group by prop name, optionally preceeded with '-' or
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
374 to sort in descending or nothing for ascending order.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
375 :filter - selects which props should be displayed in the filter
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
376 section. Default is all.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
377 :columns - selects the columns that should be displayed.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
378 Default is all.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
379
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
380 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
381 cn = self.classname
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
382 cl = self.db.classes[cn]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
383 self.pagehead(_('%(instancename)s: Index of %(classname)s')%{
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
384 'classname': cn, 'instancename': self.instance.INSTANCE_NAME})
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
385 if sort is None: sort = self.index_arg(':sort')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
386 if group is None: group = self.index_arg(':group')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
387 if filter is None: filter = self.index_arg(':filter')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
388 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
389 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
390 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
391 show_customization = self.customization_widget()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
392
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
393 index = htmltemplate.IndexTemplate(self, self.instance.TEMPLATES, cn)
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
394 try:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
395 index.render(filterspec, filter, columns, sort, group,
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
396 show_customization=show_customization)
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
397 except htmltemplate.MissingTemplateError:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
398 self.basicClassEditPage()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
399 self.pagefoot()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
400
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
401 def basicClassEditPage(self):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
402 '''Display a basic edit page that allows simple editing of the
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
403 nodes of the current class
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
404 '''
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
405 if self.user != 'admin':
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
406 raise Unauthorised
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
407 w = self.write
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
408 cn = self.classname
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
409 cl = self.db.classes[cn]
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
410 idlessprops = cl.getprops(protected=0).keys()
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
411 props = ['id'] + idlessprops
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
412
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
413
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
414 # get the CSV module
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
415 try:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
416 import csv
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
417 except ImportError:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
418 w(_('Sorry, you need the csv module to use this function.<br>\n'
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
419 'Get it from: <a href="http://www.object-craft.com.au/projects/csv/">http://www.object-craft.com.au/projects/csv/'))
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
420 return
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
421
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
422 # do the edit
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
423 if self.form.has_key('rows'):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
424 rows = self.form['rows'].value.splitlines()
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
425 p = csv.parser()
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
426 found = {}
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
427 line = 0
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
428 for row in rows:
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
429 line += 1
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
430 values = p.parse(row)
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
431 # not a complete row, keep going
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
432 if not values: continue
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
433
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
434 # extract the nodeid
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
435 nodeid, values = values[0], values[1:]
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
436 found[nodeid] = 1
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
437
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
438 # confirm correct weight
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
439 if len(idlessprops) != len(values):
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
440 w(_('Not enough values on line %(line)s'%{'line':line}))
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
441 return
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
442
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
443 # extract the new values
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
444 d = {}
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
445 for name, value in zip(idlessprops, values):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
446 d[name] = value.strip()
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
447
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
448 # perform the edit
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
449 if cl.hasnode(nodeid):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
450 # edit existing
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
451 cl.set(nodeid, **d)
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
452 else:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
453 # new node
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
454 found[cl.create(**d)] = 1
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
455
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
456 # retire the removed entries
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
457 for nodeid in cl.list():
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
458 if not found.has_key(nodeid):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
459 cl.retire(nodeid)
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
460
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
461 w(_('''<p class="form-help">You may edit the contents of the
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
462 "%(classname)s" class using this form. The lines are full-featured
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
463 Comma-Separated-Value lines, so you may include commas and even
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
464 newlines by enclosing the values in double-quotes ("). Double
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
465 quotes themselves must be quoted by doubling ("").</p>
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
466 <p class="form-help">Remove entries by deleting their line. Add
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
467 new entries by appending
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
468 them to the table - put an X in the id column.</p>''')%{'classname':cn})
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
469
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
470 l = []
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
471 for name in props:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
472 l.append(name)
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
473 w('<tt>')
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
474 w(', '.join(l) + '\n')
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
475 w('</tt>')
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
476
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
477 w('<form onSubmit="return submit_once()" method="POST">')
629
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
478 w('<textarea name="rows" cols=80 rows=15>')
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
479 p = csv.parser()
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
480 for nodeid in cl.list():
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
481 l = []
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
482 for name in props:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
483 l.append(cgi.escape(str(cl.get(nodeid, name))))
629
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
484 w(p.join(l) + '\n')
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
485
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
486 w(_('</textarea><br><input type="submit" value="Save Changes"></form>'))
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
487
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
488 def classhelp(self):
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
489 '''Display a table of class info
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
490 '''
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
491 w = self.write
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
492 cn = self.form['classname'].value
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
493 cl = self.db.classes[cn]
637
Richard Jones <richard@users.sourceforge.net>
parents: 636
diff changeset
494 props = self.form['properties'].value.split(',')
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
495
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
496 w('<table border=1 cellspacing=0 cellpaddin=2>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
497 w('<tr>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
498 for name in props:
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
499 w('<th align=left>%s</th>'%name)
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
500 w('</tr>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
501 for nodeid in cl.list():
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
502 w('<tr>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
503 for name in props:
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
504 value = cgi.escape(str(cl.get(nodeid, name)))
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
505 w('<td align="left" valign="top">%s</td>'%value)
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
506 w('</tr>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
507 w('</table>')
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
508
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
509 def shownode(self, message=None):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
510 ''' display an item
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
511 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
512 cn = self.classname
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
513 cl = self.db.classes[cn]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
514
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
515 # possibly perform an edit
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
516 keys = self.form.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
517 num_re = re.compile('^\d+$')
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
518 # don't try to set properties if the user has just logged in
412
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
519 if keys and not self.form.has_key('__login_name'):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
520 try:
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
521 props = parsePropsFromForm(self.db, cl, self.form, self.nodeid)
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
522 # make changes to the node
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
523 self._changenode(props)
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
524 # handle linked nodes
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
525 self._post_editnode(self.nodeid)
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
526 # and some nice feedback for the user
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
527 if props:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
528 message = _('%(changes)s edited ok')%{'changes':
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
529 ', '.join(props.keys())}
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
530 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
531 message = _('note added')
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
532 elif (self.form.has_key('__file') and
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
533 self.form['__file'].filename):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
534 message = _('file added')
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
535 else:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
536 message = _('nothing changed')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
537 except:
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
538 self.db.rollback()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
539 s = StringIO.StringIO()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
540 traceback.print_exc(None, s)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
541 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
542
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
543 # now the display
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
544 id = self.nodeid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
545 if cl.getkey():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
546 id = cl.get(id, cl.getkey())
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
547 self.pagehead('%s: %s'%(self.classname.capitalize(), id), message)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
548
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
549 nodeid = self.nodeid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
550
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
551 # use the template to display the item
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
552 item = htmltemplate.ItemTemplate(self, self.instance.TEMPLATES,
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
553 self.classname)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
554 item.render(nodeid)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
555
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
556 self.pagefoot()
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
557 showissue = shownode
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
558 showmsg = shownode
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
559
701
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
560 def _add_author_to_nosy(self, props):
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
561 ''' add the author value from the props to the nosy list
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
562 '''
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
563 if not props.has_key('author'):
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
564 return
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
565 author_id = props['author']
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
566 if not props.has_key('nosy'):
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
567 # load current nosy
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
568 if self.nodeid:
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
569 cl = self.db.classes[self.classname]
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
570 l = cl.get(self.nodeid, 'nosy')
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
571 if author_id in l:
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
572 return
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
573 props['nosy'] = l
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
574 else:
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
575 props['nosy'] = []
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
576 if author_id not in props['nosy']:
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
577 props['nosy'].append(author_id)
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
578
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
579 def _add_assignedto_to_nosy(self, props):
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
580 ''' add the assignedto value from the props to the nosy list
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
581 '''
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
582 if not props.has_key('assignedto'):
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
583 return
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
584 assignedto_id = props['assignedto']
505
34e05cd968b3 _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 502
diff changeset
585 if not props.has_key('nosy'):
539
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
586 # load current nosy
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
587 if self.nodeid:
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
588 cl = self.db.classes[self.classname]
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
589 l = cl.get(self.nodeid, 'nosy')
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
590 if assignedto_id in l:
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
591 return
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
592 props['nosy'] = l
539
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
593 else:
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
594 props['nosy'] = []
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
595 if assignedto_id not in props['nosy']:
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
596 props['nosy'].append(assignedto_id)
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
597
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
598 def _changenode(self, props):
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
599 ''' change the node based on the contents of the form
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
600 '''
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
601 cl = self.db.classes[self.classname]
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
602 # set status to chatting if 'unread' or 'resolved'
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
603 try:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
604 # determine the id of 'unread','resolved' and 'chatting'
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
605 unread_id = self.db.status.lookup('unread')
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
606 resolved_id = self.db.status.lookup('resolved')
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
607 chatting_id = self.db.status.lookup('chatting')
464
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
608 current_status = cl.get(self.nodeid, 'status')
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
609 if props.has_key('status'):
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
610 new_status = props['status']
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
611 else:
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
612 # apparently there's a chance that some browsers don't
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
613 # send status...
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
614 new_status = current_status
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
615 except KeyError:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
616 pass
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
617 else:
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
618 if new_status == unread_id or (new_status == resolved_id
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
619 and current_status == resolved_id):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
620 props['status'] = chatting_id
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
621
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
622 self._add_assignedto_to_nosy(props)
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
623
701
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
624 # possibly add the author of the change to the nosy list
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
625 if self.db.config.ADD_AUTHOR_TO_NOSY == 'yes':
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
626 self._add_author_to_nosy(props)
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
627
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
628 # create the message
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
629 message, files = self._handle_message()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
630 if message:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
631 props['messages'] = cl.get(self.nodeid, 'messages') + [message]
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
632 if files:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
633 props['files'] = cl.get(self.nodeid, 'files') + files
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
634
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
635 # make the changes
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
636 cl.set(self.nodeid, **props)
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
637
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
638 def _createnode(self):
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
639 ''' 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
640 '''
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
641 cl = self.db.classes[self.classname]
508
161d32dddd8a missed a parsePropsFromForm in last update
Richard Jones <richard@users.sourceforge.net>
parents: 507
diff changeset
642 props = 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
643
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
644 # 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
645 # selection -' doesn't make sense
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
646 if not props.has_key('status') and cl.getprops().has_key('status'):
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
647 try:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
648 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
649 except KeyError:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
650 pass
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
651 else:
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
652 props['status'] = unread_id
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
653
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
654 self._add_assignedto_to_nosy(props)
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
655
701
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
656 # possibly add the author of the new node to the nosy list
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
657 if self.db.config.ADD_AUTHOR_TO_NOSY in ('new', 'yes'):
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
658 self._add_author_to_nosy(props)
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
659
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
660 # check for messages and files
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
661 message, files = self._handle_message()
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
662 if message:
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
663 props['messages'] = [message]
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
664 if files:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
665 props['files'] = files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
666 # create the node and return it's id
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
667 return cl.create(**props)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
668
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
669 def _handle_message(self):
522
f2edf460b0b9 [SF#502437] rogue reactor and unittest
Richard Jones <richard@users.sourceforge.net>
parents: 508
diff changeset
670 ''' generate an edit message
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
671 '''
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
672 # handle file attachments
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
673 files = []
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
674 if self.form.has_key('__file'):
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
675 file = self.form['__file']
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
676 if file.filename:
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
677 filename = file.filename.split('\\')[-1]
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
678 mime_type = mimetypes.guess_type(filename)[0]
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
679 if not mime_type:
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
680 mime_type = "application/octet-stream"
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
681 # create the new file entry
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
682 files.append(self.db.file.create(type=mime_type,
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
683 name=filename, content=file.file.read()))
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
684
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
685 # we don't want to do a message if none of the following is true...
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
686 cn = self.classname
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
687 cl = self.db.classes[self.classname]
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
688 props = cl.getprops()
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
689 note = None
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
690 # in a nutshell, don't do anything if there's no note or there's no
492
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
691 # NOSY
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
692 if self.form.has_key('__note'):
674
d20e2e5f577a stop sending blank (whitespace-only) notes
Richard Jones <richard@users.sourceforge.net>
parents: 664
diff changeset
693 note = self.form['__note'].value.strip()
713
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
694 if not note:
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
695 return None, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
696 if not props.has_key('messages'):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
697 return None, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
698 if not isinstance(props['messages'], hyperdb.Multilink):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
699 return None, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
700 if not props['messages'].classname == 'msg':
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
701 return None, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
702 if not (self.form.has_key('nosy') or note):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
703 return None, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
704
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
705 # handle the note
713
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
706 if '\n' in note:
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
707 summary = re.split(r'\n\r?', note)[0]
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
708 else:
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
709 summary = note
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
710 m = ['%s\n'%note]
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
711
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
712 # handle the messageid
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
713 # TODO: handle inreplyto
499
9ad589d0a60f Changed message-id format to "<%s.%s.%s%s@%s>" so it complies with RFC822
Richard Jones <richard@users.sourceforge.net>
parents: 498
diff changeset
714 messageid = "<%s.%s.%s@%s>"%(time.time(), random.random(),
502
531f4e46a818 crying out for real configuration handling... :(
Richard Jones <richard@users.sourceforge.net>
parents: 499
diff changeset
715 self.classname, self.instance.MAIL_DOMAIN)
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
716
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
717 # now create the message, attaching the files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
718 content = '\n'.join(m)
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
719 message_id = self.db.msg.create(author=self.getuid(),
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
720 recipients=[], date=date.Date('.'), summary=summary,
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
721 content=content, files=files, messageid=messageid)
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
722
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
723 # update the messages property
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
724 return message_id, files
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
725
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
726 def _post_editnode(self, nid):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
727 '''Do the linking part of the node creation.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
728
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
729 If a form element has :link or :multilink appended to it, its
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
730 value specifies a node designator and the property on that node
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
731 to add _this_ node to as a link or multilink.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
732
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
733 This is typically used on, eg. the file upload page to indicated
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
734 which issue to link the file to.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
735
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
736 TODO: I suspect that this and newfile will go away now that
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
737 there's the ability to upload a file using the issue __file form
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
738 element!
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
739 '''
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
740 cn = self.classname
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
741 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
742 # link if necessary
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
743 keys = self.form.keys()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
744 for key in keys:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
745 if key == ':multilink':
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
746 value = self.form[key].value
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
747 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
748 for value in value:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
749 designator, property = value.split(':')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
750 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
751 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
752 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
753 value.append(nid)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
754 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
755 elif key == ':link':
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
756 value = self.form[key].value
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
757 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
758 for value in value:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
759 designator, property = value.split(':')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
760 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
761 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
762 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
763
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
764 def newnode(self, message=None):
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
765 ''' 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
766
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
767 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
768 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
769 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
770 submission fails.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
771
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
772 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
773 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
774 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
775
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
776 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
777 (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
778 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
779 form entries:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
780 :link=designator:property
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
781 :multilink=designator:property
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
782 ... 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
783 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
784 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
785 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
786 cn = self.classname
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
787 cl = self.db.classes[cn]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
788
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
789 # possibly perform a create
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
790 keys = self.form.keys()
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
791 if [i for i in keys if i[0] != ':']:
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
792 props = {}
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
793 try:
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
794 nid = self._createnode()
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
795 # handle linked nodes
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
796 self._post_editnode(nid)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
797 # 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
798 message = _('%(classname)s created ok')%{'classname': cn}
464
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
799
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
800 # render the newly created issue
464
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
801 self.db.commit()
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
802 self.nodeid = nid
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
803 self.pagehead('%s: %s'%(self.classname.capitalize(), nid),
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
804 message)
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
805 item = htmltemplate.ItemTemplate(self, self.instance.TEMPLATES,
464
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
806 self.classname)
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
807 item.render(nid)
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
808 self.pagefoot()
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
809 return
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
810 except:
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
811 self.db.rollback()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
812 s = StringIO.StringIO()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
813 traceback.print_exc(None, s)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
814 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
815 self.pagehead(_('New %(classname)s')%{'classname':
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
816 self.classname.capitalize()}, message)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
817
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
818 # call the template
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
819 newitem = htmltemplate.NewItemTemplate(self, self.instance.TEMPLATES,
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
820 self.classname)
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
821 newitem.render(self.form)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
822
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
823 self.pagefoot()
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
824 newissue = newnode
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
825
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
826 def newuser(self, message=None):
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
827 ''' Add a new user to the database.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
828
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
829 Don't do any of the message or file handling, just create the node.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
830 '''
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
831 cn = self.classname
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
832 cl = self.db.classes[cn]
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
833
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
834 # possibly perform a create
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
835 keys = self.form.keys()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
836 if [i for i in keys if i[0] != ':']:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
837 try:
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
838 props = parsePropsFromForm(self.db, cl, self.form)
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
839 nid = cl.create(**props)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
840 # handle linked nodes
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
841 self._post_editnode(nid)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
842 # and some nice feedback for the user
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
843 message = _('%(classname)s created ok')%{'classname': cn}
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
844 except:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
845 self.db.rollback()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
846 s = StringIO.StringIO()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
847 traceback.print_exc(None, s)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
848 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
849 self.pagehead(_('New %(classname)s')%{'classname':
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
850 self.classname.capitalize()}, message)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
851
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
852 # call the template
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
853 newitem = htmltemplate.NewItemTemplate(self, self.instance.TEMPLATES,
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
854 self.classname)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
855 newitem.render(self.form)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
856
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
857 self.pagefoot()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
858
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
859 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
860 ''' 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
861
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
862 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
863 file upload.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
864 '''
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
865 cn = self.classname
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
866 cl = self.db.classes[cn]
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
867
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
868 # possibly perform a create
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
869 keys = self.form.keys()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
870 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
871 try:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
872 file = self.form['content']
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
873 mime_type = mimetypes.guess_type(file.filename)[0]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
874 if not mime_type:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
875 mime_type = "application/octet-stream"
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
876 # save the file
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
877 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
878 name=file.filename)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
879 # handle linked nodes
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
880 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
881 # 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
882 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
883 except:
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
884 self.db.rollback()
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
885 s = StringIO.StringIO()
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
886 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
887 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
888
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
889 self.pagehead(_('New %(classname)s')%{'classname':
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
890 self.classname.capitalize()}, message)
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
891 newitem = htmltemplate.NewItemTemplate(self, self.instance.TEMPLATES,
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
892 self.classname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
893 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
894 self.pagefoot()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
895
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
896 def showuser(self, message=None):
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
897 '''Display a user page for editing. Make sure the user is allowed
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
898 to edit this node, and also check for password changes.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
899 '''
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
900 if self.user == 'anonymous':
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
901 raise Unauthorised
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
902
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
903 user = self.db.user
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
904
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
905 # get the username of the node being edited
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
906 node_user = user.get(self.nodeid, 'username')
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
907
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
908 if self.user not in ('admin', node_user):
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
909 raise Unauthorised
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
910
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
911 #
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
912 # perform any editing
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
913 #
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
914 keys = self.form.keys()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
915 num_re = re.compile('^\d+$')
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
916 if keys:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
917 try:
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
918 props = parsePropsFromForm(self.db, user, self.form,
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
919 self.nodeid)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
920 set_cookie = 0
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
921 if props.has_key('password'):
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
922 password = self.form['password'].value.strip()
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
923 if not password:
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
924 # no password was supplied - don't change it
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
925 del props['password']
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
926 elif self.nodeid == self.getuid():
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
927 # this is the logged-in user's password
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
928 set_cookie = password
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
929 user.set(self.nodeid, **props)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
930 # and some feedback for the user
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
931 message = _('%(changes)s edited ok')%{'changes':
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
932 ', '.join(props.keys())}
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
933 except:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
934 self.db.rollback()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
935 s = StringIO.StringIO()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
936 traceback.print_exc(None, s)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
937 message = '<pre>%s</pre>'%cgi.escape(s.getvalue())
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
938 else:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
939 set_cookie = 0
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
940
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
941 # fix the cookie if the password has changed
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
942 if set_cookie:
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
943 self.set_cookie(self.user, set_cookie)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
944
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
945 #
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
946 # now the display
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
947 #
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
948 self.pagehead(_('User: %(user)s')%{'user': node_user}, message)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
949
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
950 # use the template to display the item
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
951 item = htmltemplate.ItemTemplate(self, self.instance.TEMPLATES, 'user')
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
952 item.render(self.nodeid)
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
953 self.pagefoot()
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
954
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
955 def showfile(self):
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
956 ''' display a file
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
957 '''
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
958 nodeid = self.nodeid
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
959 cl = self.db.file
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
960 mime_type = cl.get(nodeid, 'type')
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
961 if mime_type == 'message/rfc822':
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
962 mime_type = 'text/plain'
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
963 self.header(headers={'Content-Type': mime_type})
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
964 self.write(cl.get(nodeid, 'content'))
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
965
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
966 def classes(self, message=None):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
967 ''' display a list of all the classes in the database
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
968 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
969 if self.user == 'admin':
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
970 self.pagehead(_('Table of classes'), message)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
971 classnames = self.db.classes.keys()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
972 classnames.sort()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
973 self.write('<table border=0 cellspacing=0 cellpadding=2>\n')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
974 for cn in classnames:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
975 cl = self.db.getclass(cn)
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
976 self.write('<tr class="list-header"><th colspan=2 align=left>'
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
977 '<a href="%s">%s</a></th></tr>'%(cn, cn.capitalize()))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
978 for key, value in cl.properties.items():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
979 if value is None: value = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
980 else: value = str(value)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
981 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
982 key, cgi.escape(value)))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
983 self.write('</table>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
984 self.pagefoot()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
985 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
986 raise Unauthorised
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
987
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
988 def login(self, message=None, newuser_form=None, action='index'):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
989 '''Display a login page.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
990 '''
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
991 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
992 self.write(_('''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
993 <table>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
994 <tr><td colspan=2 class="strong-header">Existing User Login</td></tr>
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
995 <form onSubmit="return submit_once()" action="login_action" method=POST>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
996 <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
997 <tr><td align=right>Login name: </td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
998 <td><input name="__login_name"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
999 <tr><td align=right>Password: </td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1000 <td><input type="password" name="__login_password"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1001 <tr><td></td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1002 <td><input type="submit" value="Log In"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1003 </form>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1004 ''')%locals())
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1005 if self.user is None and self.instance.ANONYMOUS_REGISTER == 'deny':
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1006 self.write('</table>')
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1007 self.pagefoot()
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1008 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
1009 values = {'realname': '', 'organisation': '', 'address': '',
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1010 'phone': '', 'username': '', 'password': '', 'confirm': '',
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1011 'action': action, 'alternate_addresses': ''}
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1012 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
1013 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
1014 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
1015 self.write(_('''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1016 <p>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1017 <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
1018 <tr><td colspan=2><em>marked items</em> are optional...</td></tr>
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
1019 <form onSubmit="return submit_once()" action="newuser_action" method=POST>
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1020 <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
1021 <tr><td align=right><em>Name: </em></td>
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1022 <td><input name="realname" value="%(realname)s" size=40></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1023 <tr><td align=right><em>Organisation: </em></td>
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1024 <td><input name="organisation" value="%(organisation)s" size=40></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1025 <tr><td align=right>E-Mail Address: </td>
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1026 <td><input name="address" value="%(address)s" size=40></td></tr>
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1027 <tr><td align=right><em>Alternate E-mail Addresses: </em></td>
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1028 <td><textarea name="alternate_addresses" rows=5 cols=40>%(alternate_addresses)s</textarea></td></tr>
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1029 <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
1030 <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
1031 <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
1032 <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
1033 <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
1034 <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
1035 <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
1036 <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
1037 <tr><td></td>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1038 <td><input type="submit" value="Register"></td></tr>
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1039 </form>
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1040 </table>
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1041 ''')%values)
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1042 self.pagefoot()
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1043
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1044 def login_action(self, message=None):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1045 '''Attempt to log a user in and set the cookie
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1046
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1047 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
1048 1 if not (ie. the login is successful
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1049 '''
302
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1050 if not self.form.has_key('__login_name'):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1051 self.login(message=_('Username required'))
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1052 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1053 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
1054 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
1055 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
1056 else:
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1057 password = ''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1058 # make sure the user exists
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1059 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1060 uid = self.db.user.lookup(self.user)
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1061 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1062 name = self.user
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1063 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
1064 action = self.form['__destination_url'].value
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1065 self.login(message=_('No such user "%(name)s"')%locals(),
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1066 action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1067 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1068
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1069 # and that the password is correct
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1070 pw = self.db.user.get(uid, 'password')
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1071 if password != pw:
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1072 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
1073 action = self.form['__destination_url'].value
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1074 self.login(message=_('Incorrect password'), action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1075 return 0
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1076
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1077 self.set_cookie(self.user, password)
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1078 return 1
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1079
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1080 def newuser_action(self, message=None):
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1081 '''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
1082 and then set the cookie.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1083
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1084 return 1 on successful login
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1085 '''
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1086 # re-open the database as "admin"
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1087 self.db = self.instance.open('admin')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1088
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1089 # TODO: pre-check the required fields and username key property
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1090 cl = self.db.user
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1091 try:
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1092 props = parsePropsFromForm(self.db, cl, self.form)
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1093 uid = cl.create(**props)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1094 except ValueError, message:
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1095 action = self.form['__destination_url'].value
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1096 self.login(message, action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1097 return 0
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1098 self.user = cl.get(uid, 'username')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1099 password = cl.get(uid, 'password')
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1100 self.set_cookie(self.user, self.form['password'].value)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1101 return 1
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1102
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1103 def set_cookie(self, user, password):
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1104 # construct the cookie
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1105 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
1106 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
1107 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
1108 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
1109 else:
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1110 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
1111 expire = Cookie._getdate(86400*365)
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1112 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
1113 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
1114 user, expire, path)})
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1115
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1116 def make_user_anonymous(self):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1117 # make us anonymous if we can
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1118 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1119 self.db.user.lookup('anonymous')
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1120 self.user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1121 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1122 self.user = None
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1123
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1124 def logout(self, message=None):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1125 self.make_user_anonymous()
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1126 # construct the logout cookie
295
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1127 now = Cookie._getdate()
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1128 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
1129 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
1130 '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
1131 path)})
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1132 self.login()
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1133
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1134 def main(self):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1135 '''Wrap the database accesses so we can close the database cleanly
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1136 '''
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1137 # determine the uid to use
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1138 self.db = self.instance.open('admin')
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1139 cookie = Cookie.Cookie(self.env.get('HTTP_COOKIE', ''))
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1140 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1141 if (cookie.has_key('roundup_user') and
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1142 cookie['roundup_user'].value != 'deleted'):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1143 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
1144 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
1145 cookie = cookie + '='*(4-len(cookie)%4)
365
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1146 try:
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1147 user, password = binascii.a2b_base64(cookie).split(':')
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1148 except (TypeError, binascii.Error, binascii.Incomplete):
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1149 # damaged cookie!
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1150 user, password = 'anonymous', ''
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1151
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1152 # make sure the user exists
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1153 try:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1154 uid = self.db.user.lookup(user)
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1155 # now validate the password
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1156 if password != self.db.user.get(uid, 'password'):
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1157 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1158 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1159 user = 'anonymous'
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1160
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1161 # 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
1162 if user == 'anonymous':
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1163 self.make_user_anonymous()
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1164 else:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1165 self.user = user
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1166
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1167 # 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
1168 self.db = self.instance.open(self.user)
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1169
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1170 # now figure which function to call
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1171 path = self.split_path
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1172
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1173 # 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
1174 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
1175 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
1176 else:
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1177 action = path[0]
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1178
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1179 # 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
1180 # - 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
1181 # 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
1182 # 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
1183
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1184 # 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
1185 if action == 'login_action':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1186 # try to login
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1187 if not self.login_action():
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1188 return
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1189 # figure the resulting page
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1190 action = self.form['__destination_url'].value
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1191 if not action:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1192 action = 'index'
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1193 self.do_action(action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1194 return
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1195
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1196 # allow anonymous people to register
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1197 if action == 'newuser_action':
326
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1198 # 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
1199 # register, then spit up the login form
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1200 if self.instance.ANONYMOUS_REGISTER == 'deny' and self.user is None:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1201 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1202 self.login() # go to the index after login
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1203 else:
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1204 self.login(action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1205 return
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1206 # try to add the user
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1207 if not self.newuser_action():
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1208 return
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1209 # figure the resulting page
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1210 action = self.form['__destination_url'].value
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1211 if not action:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1212 action = 'index'
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1213
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1214 # no login or registration, make sure totally anonymous access is OK
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1215 elif self.instance.ANONYMOUS_ACCESS == 'deny' and self.user is None:
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1216 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1217 self.login() # go to the index after login
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1218 else:
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1219 self.login(action=action)
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1220 return
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1221
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1222 # just a regular action
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1223 self.do_action(action)
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1224
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1225 # commit all changes to the database
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1226 self.db.commit()
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1227
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1228 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
1229 nre=re.compile(r'new(\w+)')):
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1230 '''Figure the user's action and do it.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1231 '''
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1232 # 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
1233 if action == 'index':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1234 self.index()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1235 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1236 if action == 'list_classes':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1237 self.classes()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1238 return
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1239 if action == 'classhelp':
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1240 self.classhelp()
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1241 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1242 if action == 'login':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1243 self.login()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1244 return
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1245 if action == 'logout':
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1246 self.logout()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1247 return
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1248
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1249 # see if we're to display an existing node
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1250 m = dre.match(action)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1251 if m:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1252 self.classname = m.group(1)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1253 self.nodeid = m.group(2)
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1254 try:
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1255 cl = self.db.classes[self.classname]
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1256 except KeyError:
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1257 raise NotFound
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1258 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1259 cl.get(self.nodeid, 'id')
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1260 except IndexError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1261 raise NotFound
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1262 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1263 func = getattr(self, 'show%s'%self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1264 except AttributeError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1265 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1266 func()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1267 return
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1268
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1269 # see if we're to put up the new node page
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1270 m = nre.match(action)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1271 if m:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1272 self.classname = m.group(1)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1273 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1274 func = getattr(self, 'new%s'%self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1275 except AttributeError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1276 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1277 func()
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1278 return
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1279
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1280 # otherwise, display the named class
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1281 self.classname = action
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1282 try:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1283 self.db.getclass(self.classname)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1284 except KeyError:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1285 raise NotFound
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1286 self.list()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1287
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1288
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1289 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
1290 '''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
1291 extended schema.
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1292 '''
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1293 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
1294 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
1295 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
1296 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
1297
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1298 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
1299 default_index_group = ['priority']
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1300 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
1301 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
1302 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
1303
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1304 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
1305 '''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
1306 '''
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1307 props = {}
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1308 keys = form.keys()
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1309 num_re = re.compile('^\d+$')
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1310 for key in keys:
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1311 if not cl.properties.has_key(key):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1312 continue
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1313 proptype = cl.properties[key]
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1314 if isinstance(proptype, hyperdb.String):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1315 value = form[key].value.strip()
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1316 elif isinstance(proptype, hyperdb.Password):
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1317 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
1318 elif isinstance(proptype, hyperdb.Date):
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1319 value = form[key].value.strip()
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1320 if value:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1321 value = date.Date(form[key].value.strip())
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1322 else:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1323 value = None
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1324 elif isinstance(proptype, hyperdb.Interval):
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1325 value = form[key].value.strip()
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1326 if value:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1327 value = date.Interval(form[key].value.strip())
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1328 else:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1329 value = None
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1330 elif isinstance(proptype, hyperdb.Link):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1331 value = form[key].value.strip()
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1332 # 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
1333 if value == '-1':
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1334 # don't set this property
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1335 continue
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1336 else:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1337 # handle key values
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1338 link = cl.properties[key].classname
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1339 if not num_re.match(value):
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1340 try:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1341 value = db.classes[link].lookup(value)
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1342 except KeyError:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1343 raise ValueError, _('property "%(propname)s": '
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1344 '%(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
1345 'value': value, 'classname': link}
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1346 elif isinstance(proptype, hyperdb.Multilink):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1347 value = form[key]
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1348 if type(value) != type([]):
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1349 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
1350 else:
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1351 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
1352 link = cl.properties[key].classname
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1353 l = []
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1354 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
1355 if entry == '': continue
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1356 if not num_re.match(entry):
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1357 try:
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1358 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
1359 except KeyError:
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1360 raise ValueError, _('property "%(propname)s": '
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1361 '"%(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
1362 'propname':key, 'value': entry, 'classname': link}
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1363 l.append(entry)
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1364 l.sort()
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1365 value = l
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1366
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1367 # get the old value
396
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1368 if nodeid:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1369 try:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1370 existing = cl.get(nodeid, key)
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1371 except KeyError:
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1372 # this might be a new property for which there is no existing
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1373 # value
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1374 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
1375
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1376 # if changed, set it
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1377 if value != existing:
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1378 props[key] = value
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1379 else:
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1380 props[key] = value
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1381 return props
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1382
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1383 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1384 # $Log: not supported by cvs2svn $
713
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
1385 # Revision 1.117 2002/05/12 23:42:29 richard
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
1386 # ehem
5c90264ad2e3 ehem, part 2
Richard Jones <richard@users.sourceforge.net>
parents: 712
diff changeset
1387 #
712
Richard Jones <richard@users.sourceforge.net>
parents: 701
diff changeset
1388 # Revision 1.116 2002/05/02 08:07:49 richard
Richard Jones <richard@users.sourceforge.net>
parents: 701
diff changeset
1389 # Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 701
diff changeset
1390 #
701
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
1391 # Revision 1.115 2002/04/02 01:56:10 richard
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
1392 # . stop sending blank (whitespace-only) notes
8d1e34b8e680 Added the ADD_AUTHOR_TO_NOSY handling to the CGI interface.
Richard Jones <richard@users.sourceforge.net>
parents: 674
diff changeset
1393 #
674
d20e2e5f577a stop sending blank (whitespace-only) notes
Richard Jones <richard@users.sourceforge.net>
parents: 664
diff changeset
1394 # Revision 1.114 2002/03/17 23:06:05 richard
d20e2e5f577a stop sending blank (whitespace-only) notes
Richard Jones <richard@users.sourceforge.net>
parents: 664
diff changeset
1395 # oops
d20e2e5f577a stop sending blank (whitespace-only) notes
Richard Jones <richard@users.sourceforge.net>
parents: 664
diff changeset
1396 #
664
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
1397 # Revision 1.113 2002/03/14 23:59:24 richard
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
1398 # . #517734 ] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 661
diff changeset
1399 #
661
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
1400 # Revision 1.112 2002/03/12 22:52:26 richard
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
1401 # more pychecker warnings removed
cdcee6721841 . [SF#517734] web header customisation is obscure
Richard Jones <richard@users.sourceforge.net>
parents: 657
diff changeset
1402 #
657
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 643
diff changeset
1403 # Revision 1.111 2002/02/25 04:32:21 richard
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 643
diff changeset
1404 # ahem
e0a1cc7538e9 more pychecker warnings removed
Richard Jones <richard@users.sourceforge.net>
parents: 643
diff changeset
1405 #
643
Richard Jones <richard@users.sourceforge.net>
parents: 638
diff changeset
1406 # Revision 1.110 2002/02/21 07:19:08 richard
Richard Jones <richard@users.sourceforge.net>
parents: 638
diff changeset
1407 # ... and label, width and height control for extra flavour!
Richard Jones <richard@users.sourceforge.net>
parents: 638
diff changeset
1408 #
638
21b3cfa7d99a ... and label, width and height control for extra flavour!
Richard Jones <richard@users.sourceforge.net>
parents: 637
diff changeset
1409 # Revision 1.109 2002/02/21 07:08:19 richard
21b3cfa7d99a ... and label, width and height control for extra flavour!
Richard Jones <richard@users.sourceforge.net>
parents: 637
diff changeset
1410 # oops
21b3cfa7d99a ... and label, width and height control for extra flavour!
Richard Jones <richard@users.sourceforge.net>
parents: 637
diff changeset
1411 #
637
Richard Jones <richard@users.sourceforge.net>
parents: 636
diff changeset
1412 # Revision 1.108 2002/02/21 07:02:54 richard
Richard Jones <richard@users.sourceforge.net>
parents: 636
diff changeset
1413 # The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 636
diff changeset
1414 #
636
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1415 # Revision 1.107 2002/02/21 06:57:38 richard
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1416 # . Added popup help for classes using the classhelp html template function.
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1417 # - add <display call="classhelp('priority', 'id,name,description')">
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1418 # to an item page, and it generates a link to a popup window which displays
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1419 # the id, name and description for the priority class. The description
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1420 # field won't exist in most installations, but it will be added to the
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1421 # default templates.
3569dfce4bc5 The correct var is "HTTP_HOST"
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
1422 #
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1423 # Revision 1.106 2002/02/21 06:23:00 richard
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1424 # *** empty log message ***
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1425 #
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
1426 # Revision 1.105 2002/02/20 05:52:10 richard
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
1427 # better error handling
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 630
diff changeset
1428 #
630
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
1429 # Revision 1.104 2002/02/20 05:45:17 richard
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
1430 # Use the csv module for generating the form entry so it's correct.
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
1431 # [also noted the sf.net feature request id in the change log]
b3407b616935 better error handling
Richard Jones <richard@users.sourceforge.net>
parents: 629
diff changeset
1432 #
629
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1433 # Revision 1.103 2002/02/20 05:05:28 richard
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1434 # . Added simple editing for classes that don't define a templated interface.
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1435 # - access using the admin "class list" interface
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1436 # - limited to admin-only
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1437 # - requires the csv module from object-craft (url given if it's missing)
d43a21e6a823 Use the csv module for generating the form entry so it's correct.
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1438 #
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1439 # Revision 1.102 2002/02/15 07:08:44 richard
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1440 # . Alternate email addresses are now available for users. See the MIGRATION
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1441 # file for info on how to activate the feature.
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1442 #
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1443 # Revision 1.101 2002/02/14 23:39:18 richard
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1444 # . All forms now have "double-submit" protection when Javascript is enabled
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1445 # on the client-side.
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1446 #
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
1447 # Revision 1.100 2002/01/16 07:02:57 richard
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
1448 # . lots of date/interval related changes:
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
1449 # - more relaxed date format for input
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 543
diff changeset
1450 #
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1451 # Revision 1.99 2002/01/16 03:02:42 richard
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1452 # #503793 ] changing assignedto resets nosy list
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 539
diff changeset
1453 #
539
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1454 # Revision 1.98 2002/01/14 02:20:14 richard
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1455 # . changed all config accesses so they access either the instance or the
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1456 # config attriubute on the db. This means that all config is obtained from
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1457 # instance_config instead of the mish-mash of classes. This will make
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1458 # switching to a ConfigParser setup easier too, I hope.
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1459 #
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1460 # At a minimum, this makes migration a _little_ easier (a lot easier in the
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1461 # 0.5.0 switch, I hope!)
3bd18a0890b6 [SF#503793] changing assignedto resets nosy list
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1462 #
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1463 # Revision 1.97 2002/01/11 23:22:29 richard
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1464 # . #502437 ] rogue reactor and unittest
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1465 # in short, the nosy reactor was modifying the nosy list. That code had
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1466 # been there for a long time, and I suspsect it was there because we
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1467 # weren't generating the nosy list correctly in other places of the code.
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1468 # We're now doing that, so the nosy-modifying code can go away from the
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1469 # nosy reactor.
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 522
diff changeset
1470 #
522
f2edf460b0b9 [SF#502437] rogue reactor and unittest
Richard Jones <richard@users.sourceforge.net>
parents: 508
diff changeset
1471 # Revision 1.96 2002/01/10 05:26:10 richard
f2edf460b0b9 [SF#502437] rogue reactor and unittest
Richard Jones <richard@users.sourceforge.net>
parents: 508
diff changeset
1472 # missed a parsePropsFromForm in last update
f2edf460b0b9 [SF#502437] rogue reactor and unittest
Richard Jones <richard@users.sourceforge.net>
parents: 508
diff changeset
1473 #
508
161d32dddd8a missed a parsePropsFromForm in last update
Richard Jones <richard@users.sourceforge.net>
parents: 507
diff changeset
1474 # Revision 1.95 2002/01/10 03:39:45 richard
161d32dddd8a missed a parsePropsFromForm in last update
Richard Jones <richard@users.sourceforge.net>
parents: 507
diff changeset
1475 # . fixed some problems with web editing and change detection
161d32dddd8a missed a parsePropsFromForm in last update
Richard Jones <richard@users.sourceforge.net>
parents: 507
diff changeset
1476 #
507
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1477 # Revision 1.94 2002/01/09 13:54:21 grubert
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1478 # _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
883025274646 fixed some problems with web editing and change detection
Richard Jones <richard@users.sourceforge.net>
parents: 505
diff changeset
1479 #
505
34e05cd968b3 _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 502
diff changeset
1480 # Revision 1.93 2002/01/08 11:57:12 richard
34e05cd968b3 _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 502
diff changeset
1481 # crying out for real configuration handling... :(
34e05cd968b3 _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 502
diff changeset
1482 #
502
531f4e46a818 crying out for real configuration handling... :(
Richard Jones <richard@users.sourceforge.net>
parents: 499
diff changeset
1483 # Revision 1.92 2002/01/08 04:12:05 richard
531f4e46a818 crying out for real configuration handling... :(
Richard Jones <richard@users.sourceforge.net>
parents: 499
diff changeset
1484 # Changed message-id format to "<%s.%s.%s%s@%s>" so it complies with RFC822
531f4e46a818 crying out for real configuration handling... :(
Richard Jones <richard@users.sourceforge.net>
parents: 499
diff changeset
1485 #
499
9ad589d0a60f Changed message-id format to "<%s.%s.%s%s@%s>" so it complies with RFC822
Richard Jones <richard@users.sourceforge.net>
parents: 498
diff changeset
1486 # Revision 1.91 2002/01/08 04:03:47 richard
9ad589d0a60f Changed message-id format to "<%s.%s.%s%s@%s>" so it complies with RFC822
Richard Jones <richard@users.sourceforge.net>
parents: 498
diff changeset
1487 # I mucked the intent of the code up.
9ad589d0a60f Changed message-id format to "<%s.%s.%s%s@%s>" so it complies with RFC822
Richard Jones <richard@users.sourceforge.net>
parents: 498
diff changeset
1488 #
498
2d9af3d5e0dd I mucked the intent of the code up.
Richard Jones <richard@users.sourceforge.net>
parents: 496
diff changeset
1489 # Revision 1.90 2002/01/08 03:56:55 richard
2d9af3d5e0dd I mucked the intent of the code up.
Richard Jones <richard@users.sourceforge.net>
parents: 496
diff changeset
1490 # Oops, missed this before the beta:
2d9af3d5e0dd I mucked the intent of the code up.
Richard Jones <richard@users.sourceforge.net>
parents: 496
diff changeset
1491 # . #495392 ] empty nosy -patch
2d9af3d5e0dd I mucked the intent of the code up.
Richard Jones <richard@users.sourceforge.net>
parents: 496
diff changeset
1492 #
496
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
1493 # Revision 1.89 2002/01/07 20:24:45 richard
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
1494 # *mutter* stupid cutnpaste
86943fdcca18 Oops, missed this before the beta: [SF#495392] empty nosy -patch
Richard Jones <richard@users.sourceforge.net>
parents: 492
diff changeset
1495 #
492
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1496 # Revision 1.88 2002/01/02 02:31:38 richard
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1497 # Sorry for the huge checkin message - I was only intending to implement #496356
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1498 # but I found a number of places where things had been broken by transactions:
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1499 # . modified ROUNDUPDBSENDMAILDEBUG to be SENDMAILDEBUG and hold a filename
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1500 # for _all_ roundup-generated smtp messages to be sent to.
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1501 # . the transaction cache had broken the roundupdb.Class set() reactors
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1502 # . newly-created author users in the mailgw weren't being committed to the db
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1503 #
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1504 # Stuff that made it into CHANGES.txt (ie. the stuff I was actually working
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1505 # on when I found that stuff :):
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1506 # . #496356 ] Use threading in messages
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1507 # . detectors were being registered multiple times
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1508 # . added tests for mailgw
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1509 # . much better attaching of erroneous messages in the mail gateway
a8fa8439afa7 *mutter* stupid cutnpaste
Richard Jones <richard@users.sourceforge.net>
parents: 475
diff changeset
1510 #
475
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
1511 # Revision 1.87 2001/12/23 23:18:49 richard
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
1512 # We already had an admin-specific section of the web heading, no need to add
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
1513 # another one :)
a1a44636bace Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents: 468
diff changeset
1514 #
468
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1515 # Revision 1.86 2001/12/20 15:43:01 rochecompaan
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1516 # Features added:
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1517 # . Multilink properties are now displayed as comma separated values in
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1518 # a textbox
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1519 # . The add user link is now only visible to the admin user
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1520 # . Modified the mail gateway to reject submissions from unknown
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1521 # addresses if ANONYMOUS_ACCESS is denied
fc44c590d4a1 We already had an admin-specific section of the web heading...
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1522 #
467
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1523 # Revision 1.85 2001/12/20 06:13:24 rochecompaan
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1524 # Bugs fixed:
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1525 # . Exception handling in hyperdb for strings-that-look-like numbers got
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1526 # lost somewhere
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1527 # . Internet Explorer submits full path for filename - we now strip away
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1528 # the path
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1529 # Features added:
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1530 # . Link and multilink properties are now displayed sorted in the cgi
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1531 # interface
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1532 #
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1533 # Revision 1.84 2001/12/18 15:30:30 rochecompaan
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1534 # Fixed bugs:
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1535 # . Fixed file creation and retrieval in same transaction in anydbm
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1536 # backend
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1537 # . Cgi interface now renders new issue after issue creation
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1538 # . Could not set issue status to resolved through cgi interface
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1539 # . Mail gateway was changing status back to 'chatting' if status was
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1540 # omitted as an argument
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 464
diff changeset
1541 #
464
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1542 # Revision 1.83 2001/12/15 23:51:01 richard
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1543 # Tested the changes and fixed a few problems:
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1544 # . files are now attached to the issue as well as the message
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1545 # . newuser is a real method now since we don't want to do the message/file
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1546 # stuff for it
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1547 # . added some documentation
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1548 # The really big changes in the diff are a result of me moving some code
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1549 # around to keep like methods together a bit better.
29f5ac8a0d2b Fixed bugs:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 459
diff changeset
1550 #
459
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1551 # Revision 1.82 2001/12/15 19:24:39 rochecompaan
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1552 # . Modified cgi interface to change properties only once all changes are
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1553 # collected, files created and messages generated.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1554 # . Moved generation of change note to nosyreactors.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1555 # . We now check for changes to "assignedto" to ensure it's added to the
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1556 # nosy list.
65a8f4fd5485 Tested the changes and fixed a few problems:
Richard Jones <richard@users.sourceforge.net>
parents: 453
diff changeset
1557 #
453
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
1558 # Revision 1.81 2001/12/12 23:55:00 richard
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
1559 # Fixed some problems with user editing
5b422e3bd05d Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 448
diff changeset
1560 #
448
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
1561 # Revision 1.80 2001/12/12 23:27:14 richard
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
1562 # Added a Zope frontend for roundup.
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
1563 #
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1564 # Revision 1.79 2001/12/10 22:20:01 richard
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1565 # Enabled transaction support in the bsddb backend. It uses the anydbm code
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1566 # where possible, only replacing methods where the db is opened (it uses the
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1567 # btree opener specifically.)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1568 # Also cleaned up some change note generation.
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1569 # Made the backends package work with pydoc too.
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents: 440
diff changeset
1570 #
440
de5bf4191f11 Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents: 436
diff changeset
1571 # 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
1572 # 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
1573 #
436
9be5fdc121ca Fixed small bug that prevented adding issues through the web.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 435
diff changeset
1574 # 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
1575 # 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
1576 #
435
088b9aa21f82 files multilink was being nuked in post_edit_node
Richard Jones <richard@users.sourceforge.net>
parents: 434
diff changeset
1577 # 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
1578 # 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
1579 # 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
1580 #
434
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1581 # 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
1582 # 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
1583 # have stopped committing.
2441743e335b Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 433
diff changeset
1584 #
433
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1585 # Revision 1.74 2001/12/02 05:06:16 richard
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1586 # . 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
1587 # the close() method on the database is no longer needed.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1588 # 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
1589 # . #487480 ] roundup-server
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1590 # . #487476 ] INSTALL.txt
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1591 #
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1592 # 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
1593 # 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
1594 # 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
1595 # 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
1596 #
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1597 # More testing needed.
b1922e046bc1 Added some rollbacks...
Richard Jones <richard@users.sourceforge.net>
parents: 431
diff changeset
1598 #
431
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1599 # 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
1600 # . 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
1601 # 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
1602 # 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
1603 # 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
1604 # 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
1605 # . 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
1606 # on a failure)
a28a80b714f9 Eliminate database close method by using weakrefs.
Richard Jones <richard@users.sourceforge.net>
parents: 430
diff changeset
1607 #
430
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1608 # Revision 1.72 2001/11/30 20:47:58 rochecompaan
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1609 # Links in page header are now consistent with default sort order.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1610 #
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1611 # Fixed bugs:
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1612 # - When login failed the list of issues were still rendered.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1613 # - 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
1614 # if his first login attempt failed.
350685601f37 Database transactions.
Richard Jones <richard@users.sourceforge.net>
parents: 429
diff changeset
1615 #
429
fbfca7448422 Links in page header are now consistent with default sort order.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 428
diff changeset
1616 # 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
1617 # 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
1618 # 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
1619 #
428
7956563d49ae Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 422
diff changeset
1620 # 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
1621 # 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
1622 # 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
1623 #
422
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1624 # 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
1625 # 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
1626 # change note is supplied.
0f9a59c90e53 Converted roundup/cgi_client.py to use _()
Richard Jones <richard@users.sourceforge.net>
parents: 421
diff changeset
1627 #
421
6bd365c63528 Removed the "This issue has been edited through the web"...
Richard Jones <richard@users.sourceforge.net>
parents: 420
diff changeset
1628 # 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
1629 # a little comment
6bd365c63528 Removed the "This issue has been edited through the web"...
Richard Jones <richard@users.sourceforge.net>
parents: 420
diff changeset
1630 #
420
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1631 # Revision 1.67 2001/11/28 21:55:35 richard
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1632 # . login_action and newuser_action return values were being ignored
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1633 # . 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
1634 # gateway.
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1635 # (also a minor cleanup in hyperdb)
d1e8a2e7236a a little comment
Richard Jones <richard@users.sourceforge.net>
parents: 419
diff changeset
1636 #
419
831e91e23963 login_action and newuser_action return values were being ignored
Richard Jones <richard@users.sourceforge.net>
parents: 414
diff changeset
1637 # 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
1638 # 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
1639 #
414
fc6d03e9dbc1 couple of bugfixes from latest patch integration
Richard Jones <richard@users.sourceforge.net>
parents: 413
diff changeset
1640 # 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
1641 # 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
1642 #
413
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
1643 # 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
1644 # typo
aafe6980123d This config stuff is getting to be a real mess...
Richard Jones <richard@users.sourceforge.net>
parents: 412
diff changeset
1645 #
412
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1646 # Revision 1.63 2001/11/26 22:55:56 richard
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1647 # Feature:
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1648 # . Added INSTANCE_NAME to configuration - used in web and email to identify
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1649 # the instance.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1650 # . Added EMAIL_SIGNATURE_POSITION to indicate where to place the roundup
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1651 # signature info in e-mails.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1652 # . Some more flexibility in the mail gateway and more error handling.
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1653 # . 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
1654 #
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1655 # Fixed:
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1656 # . Lots of bugs, thanks Roché and others on the devel mailing list!
Richard Jones <richard@users.sourceforge.net>
parents: 411
diff changeset
1657 #
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1658 # Revision 1.62 2001/11/24 00:45:42 jhermann
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1659 # typeof() instead of type(): avoid clash with database field(?) "type"
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1660 #
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1661 # Fixes this traceback:
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1662 #
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1663 # Traceback (most recent call last):
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1664 # File "roundup\cgi_client.py", line 535, in newnode
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1665 # self._post_editnode(nid)
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1666 # File "roundup\cgi_client.py", line 415, in _post_editnode
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1667 # if type(value) != type([]): value = [value]
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1668 # UnboundLocalError: local variable 'type' referenced before assignment
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 407
diff changeset
1669 #
407
a28c5c683151 typeof() instead of type(): avoid clash with database field(?) "type"
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1670 # 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
1671 # 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
1672 #
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1673 # 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
1674 # 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
1675 # translatable messages
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 399
diff changeset
1676 #
399
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
1677 # 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
1678 # oops
96b0db9ad389 Added dummy hooks for I18N...
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 396
diff changeset
1679 #
396
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1680 # Revision 1.58 2001/11/21 03:11:28 richard
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1681 # Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 395
diff changeset
1682 #
395
d4b19c2ee740 Better handling of new properties.
Richard Jones <richard@users.sourceforge.net>
parents: 391
diff changeset
1683 # 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
1684 # 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
1685 #
391
399340646765 handle the case where there is no file attached
Richard Jones <richard@users.sourceforge.net>
parents: 390
diff changeset
1686 # 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
1687 # . 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
1688 #
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
1689 # 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
1690 # 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
1691 #
365
5088ff58d6e6 Handling of damaged login cookies
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 364
diff changeset
1692 # 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
1693 # 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
1694 #
364
fb6c61537761 Remove the '=' padding from cookie value so quoting isn't an issue.
Richard Jones <richard@users.sourceforge.net>
parents: 363
diff changeset
1695 # 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
1696 # 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
1697 # 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
1698 # 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
1699 #
363
2ad760f77a72 More IE fixes: it does not like quotes around cookie values.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 362
diff changeset
1700 # 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
1701 # 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
1702 # (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
1703 # 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
1704 #
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
1705 # 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
1706 # 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
1707 #
357
48ceb1667983 Get debug level from ROUNDUP_DEBUG env var
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 354
diff changeset
1708 # 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
1709 # 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
1710 # 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
1711 #
354
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1712 # 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
1713 # 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
1714 # . 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
1715 # . 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
1716 # . 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
1717 # 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
1718 # details.
f90abe9e811d Fixed newuser_action so it sets the cookie with the unencrypted password.
Richard Jones <richard@users.sourceforge.net>
parents: 353
diff changeset
1719 #
353
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1720 # 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
1721 # Oops. uses pagefoot now.
6713716d8ae9 Fixed various cookie-related bugs:
Richard Jones <richard@users.sourceforge.net>
parents: 349
diff changeset
1722 #
349
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1723 # 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
1724 # Login page didn't have all close tags.
688dd65c0e75 Oops. uses pagefoot now.
Richard Jones <richard@users.sourceforge.net>
parents: 348
diff changeset
1725 #
348
870b24383309 Login page didn't have all close tags.
Richard Jones <richard@users.sourceforge.net>
parents: 347
diff changeset
1726 # 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
1727 # 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
1728 #
347
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1729 # 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
1730 # 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
1731 # Fixed bugs:
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1732 # . 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
1733 # . bug #477107 ] HTTP header problem
db8514399149 possibly fix truncated base64'ed user:pass
Richard Jones <richard@users.sourceforge.net>
parents: 343
diff changeset
1734 #
343
ab16997d9cda Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents: 333
diff changeset
1735 # 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
1736 # 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
1737 #
333
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
1738 # 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
1739 # More fixes to lockout logic.
4609a1ea94ff Added more useful header to the classic schema.
Richard Jones <richard@users.sourceforge.net>
parents: 326
diff changeset
1740 #
326
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1741 # 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
1742 # HTML typo
36e812156746 More fixes to lockout logic.
Richard Jones <richard@users.sourceforge.net>
parents: 325
diff changeset
1743 #
325
70aadd5fbc18 HTML typo
Richard Jones <richard@users.sourceforge.net>
parents: 323
diff changeset
1744 # Revision 1.41 2001/10/23 23:52:35 richard
70aadd5fbc18 HTML typo
Richard Jones <richard@users.sourceforge.net>
parents: 323
diff changeset
1745 # 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
1746 #
323
c4a5922ffb74 Fixed lock-out logic, thanks Roch'e for pointing out the problems.
Richard Jones <richard@users.sourceforge.net>
parents: 322
diff changeset
1747 # 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
1748 # 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
1749 #
322
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1750 # Revision 1.39 2001/10/23 01:00:18 richard
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1751 # Re-enabled login and registration access after lopping them off via
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1752 # disabling access for anonymous users.
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1753 # 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
1754 # 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
1755 # things seem to work OK at the moment.
62f5f2c404ec Some cleanup.
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1756 #
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1757 # 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
1758 # Added configuration for:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1759 # . anonymous user access and registration (deny/allow)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1760 # . 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
1761 # Updated some documentation.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1762 #
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1763 # Revision 1.37 2001/10/21 07:26:35 richard
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1764 # feature #473127: Filenames. I modified the file.index and htmltemplate
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1765 # 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
1766 # information is displayed.
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1767 #
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1768 # 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
1769 # bug #473124: UI inconsistency with Link fields.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1770 # 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
1771 # that of being able to turn off certain filters.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1772 #
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1773 # 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
1774 # 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
1775 # Roch'e Compaan.)
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1776 #
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 302
diff changeset
1777 # 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
1778 # 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
1779 # 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
1780 #
302
d1fb3fcdb11b Catch errors in login - no username or password supplied.
Richard Jones <richard@users.sourceforge.net>
parents: 295
diff changeset
1781 # 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
1782 # 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
1783 #
295
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1784 # 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
1785 # CGI interface wasn't handling checkboxes at all.
0eb026a5257d Manually constructing cookie headers now.
Richard Jones <richard@users.sourceforge.net>
parents: 293
diff changeset
1786 #
293
956a9a86217b CGI interface wasn't handling checkboxes at all.
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1787 # 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
1788 # 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
1789 #
292
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 273
diff changeset
1790 # 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
1791 # 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
1792 # 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
1793 # 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
1794 #
273
45e32247aa33 Pushed the base code for the extended schema CGI interface back...
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1795 # 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
1796 # 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
1797 # 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
1798 #
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 267
diff changeset
1799 # 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
1800 # 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
1801 #
267
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1802 # 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
1803 # . 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
1804 # 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
1805 # . 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
1806 # properties.
ee5e1436ac91 Change message was stuffing up for multilinks with no key property.
Richard Jones <richard@users.sourceforge.net>
parents: 264
diff changeset
1807 # . 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
1808 # 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
1809 # "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
1810 # 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
1811 # . 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
1812 # . 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
1813 # 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
1814 # 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
1815 # . 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
1816 # 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
1817 # . 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
1818 # 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
1819 # . 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
1820 # 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
1821 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1822 # 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
1823 # handle cases where mime type is not guessable
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 247
diff changeset
1824 #
247
6aae5aaeab27 handle cases where mime type is not guessable
Richard Jones <richard@users.sourceforge.net>
parents: 238
diff changeset
1825 # 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
1826 # 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
1827 #
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
1828 # 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
1829 # 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
1830 #
237
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1831 # 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
1832 # 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
1833 # changed (again).
9ccdd87dc4d3 didn't clean up fully after debugging :(
Richard Jones <richard@users.sourceforge.net>
parents: 236
diff changeset
1834 #
236
8827f5931ea8 Fixed CGI client change messages...
Richard Jones <richard@users.sourceforge.net>
parents: 232
diff changeset
1835 # 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
1836 # 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
1837 # 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
1838 #
232
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1839 # 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
1840 # Fixed some isFooTypes that I missed.
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1841 # Refactored some code in the CGI code.
d3edb94047a5 reverted back to sending messages always...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1842 #
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1843 # 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
1844 # 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
1845 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1846 # 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
1847 # stupid typo
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1848 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1849 # Revision 1.18 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1850 # 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
1851 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1852 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1853 # 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
1854 # 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
1855 # 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
1856 # 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
1857 # instructions, etc).
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 188
diff changeset
1858 #
188
1536be43d2fa Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents: 186
diff changeset
1859 # 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
1860 # 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
1861 # 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
1862 #
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
1863 # 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
1864 # 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
1865 #
181
817750ead8d5 bleah syntax error
Richard Jones <richard@users.sourceforge.net>
parents: 178
diff changeset
1866 # Revision 1.14 2001/08/02 00:26:16 richard
817750ead8d5 bleah syntax error
Richard Jones <richard@users.sourceforge.net>
parents: 178
diff changeset
1867 # 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
1868 #
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
1869 # 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
1870 # 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
1871 #
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 163
diff changeset
1872 # 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
1873 # 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
1874 #
163
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1875 # 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
1876 # Features:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1877 # . 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
1878 # should be linked somewhere.
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1879 # Fixed:
8f9a65510139 Added some documentation on how the newblah works.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1880 # . 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
1881 # . 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
1882 # . 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
1883 #
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1884 # Revision 1.10 2001/07/30 02:37:34 richard
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1885 # Temporary measure until we have decent schema migration...
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 154
diff changeset
1886 #
154
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1887 # 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
1888 # 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
1889 # expect.
4fb5f59d8627 Temporary measure until we have decent schema migration...
Richard Jones <richard@users.sourceforge.net>
parents: 142
diff changeset
1890 #
142
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1891 # 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
1892 # 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
1893 # drill-down)
664faa54d672 Default implementation is now "classic"...
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1894 #
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
1895 # 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
1896 # 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
1897 #
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
1898 # 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
1899 # 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
1900 #
117
63de7e04c74d Moved some code around allowing for subclassing to change behaviour.
Richard Jones <richard@users.sourceforge.net>
parents: 115
diff changeset
1901 # 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
1902 # 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
1903 #
115
8775d545f41e New issue form handles lack of note better now.
Richard Jones <richard@users.sourceforge.net>
parents: 103
diff changeset
1904 # 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
1905 # 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
1906 #
103
381016730332 Fixed some non-string node ids.
Richard Jones <richard@users.sourceforge.net>
parents: 31
diff changeset
1907 # 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
1908 # oops, missed a config removal
381016730332 Fixed some non-string node ids.
Richard Jones <richard@users.sourceforge.net>
parents: 31
diff changeset
1909 #
31
6eebdf2bf262 oops, missed a config removal
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1910 # 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
1911 # Final commit of Grande Splite
6eebdf2bf262 oops, missed a config removal
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1912 #
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
1913 # 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
1914 # More Grande Splite
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1915 #
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
1916 #
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
1917 # vim: set filetype=python ts=4 sw=4 et si

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