annotate roundup/cgi_client.py @ 692:0521ddc7bb31 search_indexing-0-4-2-branch

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

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