annotate frontends/ZRoundup/ZRoundup.py @ 3854:f4e8dc583256

Restored subject parser regexp to the string it was before the... ...implementation of customization of it, i.e., the version from CVS revision 1.184 of mailgw.py. This makes 'testFollowupTitleMatchMultiRe' work again.
author Erik Forsberg <forsberg@users.sourceforge.net>
date Sat, 12 May 2007 16:14:54 +0000
parents b294cc477f2c
children 41d297d7dcec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 # This module is free software, and you may redistribute it and/or modify
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 # under the same terms as Python, so long as this copyright message and
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4 # disclaimer are retained in their original form.
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 # POSSIBILITY OF SUCH DAMAGE.
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 #
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
17 # $Id: ZRoundup.py,v 1.22 2006-01-25 03:43:04 richard Exp $
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 ''' ZRoundup module - exposes the roundup web interface to Zope
447
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
20
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
21 This frontend works by providing a thin layer that sits between Zope and the
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
22 regular CGI interface of roundup, providing the web frontend with the minimum
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
23 of effort.
447
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
24
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
25 This means that the regular CGI interface does all authentication quite
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
26 independently of Zope. The roundup code is kept in memory though, and it
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
27 runs in the same server as all your other Zope stuff, so it does have _some_
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
28 advantages over regular CGI :)
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 '''
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
30
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
31 import urlparse
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
32
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 from Globals import InitializeClass, HTMLFile
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 from OFS.SimpleItem import Item
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 from OFS.PropertyManager import PropertyManager
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
36 from Acquisition import Explicit, Implicit
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 from Persistence import Persistent
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 from AccessControl import ClassSecurityInfo
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 from AccessControl import ModuleSecurityInfo
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 modulesecurity = ModuleSecurityInfo()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 import roundup.instance
2633
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
43 from roundup.cgi import client
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
45 modulesecurity.declareProtected('View management screens',
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
46 'manage_addZRoundupForm')
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 manage_addZRoundupForm = HTMLFile('dtml/manage_addZRoundupForm', globals())
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 modulesecurity.declareProtected('Add Z Roundups', 'manage_addZRoundup')
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 def manage_addZRoundup(self, id, instance_home, REQUEST):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 """Add a ZRoundup product """
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 # validate the instance_home
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 roundup.instance.open(instance_home)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 self._setObject(id, ZRoundup(id, instance_home))
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 return self.manage_main(self, REQUEST)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 class RequestWrapper:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 '''Make the Zope RESPONSE look like a BaseHTTPServer
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 def __init__(self, RESPONSE):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 self.RESPONSE = RESPONSE
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 self.wfile = self.RESPONSE
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 def send_response(self, status):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 self.RESPONSE.setStatus(status)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 def send_header(self, header, value):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 self.RESPONSE.addHeader(header, value)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 def end_headers(self):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 # not needed - the RESPONSE object handles this internally on write()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 pass
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 class FormItem:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 '''Make a Zope form item look like a cgi.py one
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 def __init__(self, value):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 self.value = value
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 if hasattr(self.value, 'filename'):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 self.filename = self.value.filename
2869
908c27314abf merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
78 self.value = self.value.read()
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 class FormWrapper:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 '''Make a Zope form dict look like a cgi.py one
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 def __init__(self, form):
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
84 self.__form = form
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 def __getitem__(self, item):
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
86 entry = self.__form[item]
2612
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
87 if isinstance(entry, type([])):
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
88 entry = map(FormItem, entry)
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
89 else:
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
90 entry = FormItem(entry)
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
91 return entry
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
92 def getvalue(self, key, default=None):
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
93 if self.__form.has_key(key):
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
94 return self.__form[key]
2612
7cf56f5b3991 merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 1911
diff changeset
95 else:
2869
908c27314abf merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
96 return default
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 def has_key(self, item):
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
98 return self.__form.has_key(item)
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 def keys(self):
3505
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
100 return self.__form.keys()
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
101
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
102 def __repr__(self):
b294cc477f2c ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents: 3180
diff changeset
103 return '<ZRoundup.FormWrapper %r>'%self.__form
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 class ZRoundup(Item, PropertyManager, Implicit, Persistent):
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
106 '''An instance of this class provides an interface between Zope and
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
107 roundup for one roundup instance
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 meta_type = 'Z Roundup'
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 security = ClassSecurityInfo()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 def __init__(self, id, instance_home):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113 self.id = id
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 self.instance_home = instance_home
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116 # define the properties that define this object
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117 _properties = (
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
118 {'id':'id', 'type': 'string', 'mode': 'w'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
119 {'id':'instance_home', 'type': 'string', 'mode': 'w'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 )
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121 property_extensible_schema__ = 0
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
122
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 # define the tabs for the management interface
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
124 manage_options= PropertyManager.manage_options + (
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
125 {'label': 'View', 'action':'index_html'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 ) + Item.manage_options
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128 icon = "misc_/ZRoundup/icon"
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
129
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
130 security.declarePrivate('roundup_opendb')
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
131 def roundup_opendb(self):
448
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 447
diff changeset
132 '''Open the roundup instance database for a transaction.
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 '''
2633
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
134 tracker = roundup.instance.open(self.instance_home)
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135 request = RequestWrapper(self.REQUEST['RESPONSE'])
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
136 env = self.REQUEST.environ
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
137
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
138 # figure out the path components to set
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
139 url = urlparse.urlparse( self.absolute_url() )
808
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
140 path = url[2]
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
141 path_components = path.split( '/' )
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
142
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
143 # special case when roundup is '/' in this virtual host,
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
144 if path == "/" :
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
145 env['SCRIPT_NAME'] = "/"
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
146 env['TRACKER_NAME'] = ''
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
147 else :
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
148 # all but the last element is the path
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
149 env['SCRIPT_NAME'] = '/'.join( path_components[:-1] )
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
150 # the last element is the name
1096
fa7df238e2d4 More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents: 1092
diff changeset
151 env['TRACKER_NAME'] = path_components[-1]
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
152
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
153 form = FormWrapper(self.REQUEST.form)
2633
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
154 if hasattr(tracker, 'Client'):
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
155 return tracker.Client(tracker, request, env, form)
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
156 return client.Client(tracker, request, env, form)
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
157
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
158 security.declareProtected('View', 'index_html')
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
159 def index_html(self):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
160 '''Alias index_html to roundup's index
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
161 '''
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
162 # Redirect misdirected requests -- bugs 558867 , 565992
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
163 # PATH_INFO, as defined by the CGI spec, has the *real* request path
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
164 orig_path = self.REQUEST.environ['PATH_INFO']
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
165 if orig_path[-1] != '/' :
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
166 url = urlparse.urlparse( self.absolute_url() )
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
167 url = list( url ) # make mutable
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
168 url[2] = url[2]+'/' # patch
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
169 url = urlparse.urlunparse( url ) # reassemble
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
170 RESPONSE = self.REQUEST.RESPONSE
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
171 RESPONSE.setStatus( "MovedPermanently" ) # 301
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
172 RESPONSE.setHeader( "Location" , url )
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
173 return RESPONSE
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
174
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
175 client = self.roundup_opendb()
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176 # fake the path that roundup should use
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
177 client.split_path = ['index']
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
178 return client.main()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
179
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180 def __getitem__(self, item):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
181 '''All other URL accesses are passed throuh to roundup
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
182 '''
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
183 return PathElement(self, item).__of__(self)
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
184
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
185 class PathElement(Item, Implicit):
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
186 def __init__(self, zr, path):
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
187 self.zr = zr
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
188 self.path = path
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
189
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
190 def __getitem__(self, item):
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
191 ''' Get a subitem.
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
192 '''
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
193 return PathElement(self.zr, self.path + '/' + item).__of__(self)
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
194
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
195 def index_html(self, REQUEST=None):
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
196 ''' Actually call through to roundup to handle the request.
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
197 '''
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 try:
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
199 client = self.zr.roundup_opendb()
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
200 # fake the path that roundup should use
1291
bf8b2380adb3 added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents: 1285
diff changeset
201 client.path = self.path
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
202 # and call roundup to do something
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
203 client.main()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
204 return ''
2633
a9e1fff1e793 I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents: 2612
diff changeset
205 except client.NotFound:
1911
f5c804379c85 fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents: 1291
diff changeset
206 raise 'NotFound', REQUEST.URL
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
207 pass
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
208 except:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
209 import traceback
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210 traceback.print_exc()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
211 # all other exceptions in roundup are valid
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212 raise
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
214 InitializeClass(ZRoundup)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
215 modulesecurity.apply(globals())
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
216
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
217
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
218 # vim: set filetype=python ts=4 sw=4 et si

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