annotate frontends/ZRoundup/ZRoundup.py @ 1029:c3e391d9c4e9

more FieldStorage fun
author Richard Jones <richard@users.sourceforge.net>
date Tue, 03 Sep 2002 07:42:38 +0000
parents b7f38cc4680a
children 1fd27db1493b
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 #
808
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
17 # $Id: ZRoundup.py,v 1.9 2002-07-04 01:25:22 dman13 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 :)
447
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
29
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
30 It also means that any requests which specify :filter, :columns or :sort
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
31 _must_ be done using a GET, so that this interface can re-parse the
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
32 QUERY_STRING. Zope interprets the ':' as a special character, and the special
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
33 args are lost to it.
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 '''
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
35
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
36 import urlparse
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
37
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 from Globals import InitializeClass, HTMLFile
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 from OFS.SimpleItem import Item
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 from OFS.PropertyManager import PropertyManager
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 from Acquisition import Implicit
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 from Persistence import Persistent
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 from AccessControl import ClassSecurityInfo
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 from AccessControl import ModuleSecurityInfo
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 modulesecurity = ModuleSecurityInfo()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 import roundup.instance
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 from roundup import cgi_client
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
50 modulesecurity.declareProtected('View management screens',
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
51 'manage_addZRoundupForm')
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 manage_addZRoundupForm = HTMLFile('dtml/manage_addZRoundupForm', globals())
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 modulesecurity.declareProtected('Add Z Roundups', 'manage_addZRoundup')
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 def manage_addZRoundup(self, id, instance_home, REQUEST):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 """Add a ZRoundup product """
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 # validate the instance_home
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 roundup.instance.open(instance_home)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 self._setObject(id, ZRoundup(id, instance_home))
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 return self.manage_main(self, REQUEST)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 class RequestWrapper:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 '''Make the Zope RESPONSE look like a BaseHTTPServer
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 def __init__(self, RESPONSE):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 self.RESPONSE = RESPONSE
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 self.wfile = self.RESPONSE
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 def send_response(self, status):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 self.RESPONSE.setStatus(status)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 def send_header(self, header, value):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 self.RESPONSE.addHeader(header, value)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 def end_headers(self):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 # 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
74 pass
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 class FormItem:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 '''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
78 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 def __init__(self, value):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 self.value = value
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 if hasattr(self.value, 'filename'):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 self.filename = self.value.filename
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 self.file = self.value
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 class FormWrapper:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 '''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
87 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 def __init__(self, form):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 self.form = form
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 def __getitem__(self, item):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 return FormItem(self.form[item])
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 def has_key(self, item):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 return self.form.has_key(item)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 def keys(self):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 return self.form.keys()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 class ZRoundup(Item, PropertyManager, Implicit, Persistent):
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
98 '''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
99 roundup for one roundup instance
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 meta_type = 'Z Roundup'
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 security = ClassSecurityInfo()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 def __init__(self, id, instance_home):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 self.id = id
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 self.instance_home = instance_home
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 # define the properties that define this object
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 _properties = (
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 {'id':'id', 'type': 'string', 'mode': 'w'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 {'id':'instance_home', 'type': 'string', 'mode': 'w'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 )
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113 property_extensible_schema__ = 0
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115 # define the tabs for the management interface
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116 manage_options= PropertyManager.manage_options + (
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117 {'label': 'View', 'action':'index_html'},
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
118 ) + Item.manage_options
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
119
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 icon = "misc_/ZRoundup/icon"
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
122 security.declarePrivate('_opendb')
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 def _opendb(self):
448
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 447
diff changeset
124 '''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
125 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 instance = roundup.instance.open(self.instance_home)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127 request = RequestWrapper(self.REQUEST['RESPONSE'])
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128 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
129
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
130 # 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
131 url = urlparse.urlparse( self.absolute_url() )
808
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
132 path = url[2]
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
133 path_components = path.split( '/' )
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
134
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
135 # 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
136 if path == "/" :
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
137 env['SCRIPT_NAME'] = "/"
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
138 env['INSTANCE_NAME'] = ''
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
139 else :
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
140 # 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
141 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
142 # the last element is the name
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
143 env['INSTANCE_NAME'] = 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
144
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
145 if env['REQUEST_METHOD'] == 'GET':
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
146 # force roundup to re-parse the request because Zope fiddles
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147 # with it and we lose all the :filter, :columns, etc goodness
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148 form = None
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
149 else:
771
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
150 # For some reason, CRs are embeded in multiline notes.
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
151 # It doesn't occur with apache/roundup.cgi, though.
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
152 form = self.REQUEST.form
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
153 if form.has_key( '__note' ) :
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
154 form['__note'] = form['__note'].replace( '\r' , '' )
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
155 form = FormWrapper(form)
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
156
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
157 return instance.Client(instance, request, env, form)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
158
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
159
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
160 security.declareProtected('View', 'index_html')
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
161 def index_html(self):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
162 '''Alias index_html to roundup's index
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
163 '''
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
164
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
165 # 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
166
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
167 # PATH_INFO, as defined by the CGI spec, has the *real* request path
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
168 orig_path = self.REQUEST.environ[ 'PATH_INFO' ]
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
169 if orig_path[-1] != '/' :
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
170 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
171 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
172 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
173 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
174 RESPONSE = self.REQUEST.RESPONSE
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
175 RESPONSE.setStatus( "MovedPermanently" ) # 301
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
176 RESPONSE.setHeader( "Location" , url )
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
177 return RESPONSE
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
178
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
179 client = self._opendb()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180 # fake the path that roundup should use
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
181 client.split_path = ['index']
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
182 return client.main()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
183
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184 def __getitem__(self, item):
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
185 '''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
186 '''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
187 try:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
188 client = self._opendb()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
189 # fake the path that roundup should use
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
190 client.split_path = [item]
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
191 # and call roundup to do something
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
192 client.main()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
193 return ''
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
194 except cgi_client.NotFound:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
195 raise 'NotFound', self.REQUEST.URL
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
196 pass
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
197 except:
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 import traceback
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
199 traceback.print_exc()
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
200 # all other exceptions in roundup are valid
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
201 raise
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
202 raise KeyError, item
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
203
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
204
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
205 InitializeClass(ZRoundup)
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
206 modulesecurity.apply(globals())
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
207
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
208
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
209 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210 # $Log: not supported by cvs2svn $
808
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
211 # Revision 1.8 2002/06/16 01:01:42 dman13
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
212 # remove CR characters embedded in messages (ZRoundup)
b7f38cc4680a fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 771
diff changeset
213 #
771
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
214 # Revision 1.7 2002/06/14 01:25:46 dman13
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
215 # Fixed bug #558867 by redirecting /instance requests to /instance/
c6802cfe86f5 remove CR characters embedded in messages (ZRoundup)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 768
diff changeset
216 #
768
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
217 # Revision 1.6 2002/06/12 00:59:44 dman13
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
218 # Fixed the logic for determing the cookie path. (Closes #562130.)
ce439805c617 Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents: 765
diff changeset
219 #
765
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
220 # Revision 1.5 2002/05/14 23:36:25 richard
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
221 # . fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
222 # (thanks dman)
1b5575ccffe1 Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents: 717
diff changeset
223 #
717
14e94c28bdb0 fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents: 506
diff changeset
224 # Revision 1.4 2002/01/10 03:38:16 richard
14e94c28bdb0 fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents: 506
diff changeset
225 # reformatting for 80 cols
14e94c28bdb0 fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents: 506
diff changeset
226 #
506
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
227 # Revision 1.3 2001/12/12 23:55:00 richard
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
228 # Fixed some problems with user editing
453096f811f0 reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents: 448
diff changeset
229 #
448
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 447
diff changeset
230 # Revision 1.2 2001/12/12 23:33:58 richard
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 447
diff changeset
231 # added some implementation notes
6e3911304700 Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents: 447
diff changeset
232 #
447
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
233 # Revision 1.1 2001/12/12 23:27:13 richard
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
234 # Added a Zope frontend for roundup.
70bdd0cef7e4 added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents: 446
diff changeset
235 #
446
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
236 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
237 #
ea9a4ca3fb84 Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
238 # vim: set filetype=python ts=4 sw=4 et si

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