Mercurial > p > roundup > code
annotate frontends/ZRoundup/ZRoundup.py @ 7021:4e25815961a7
flake8: remove trailing whitespace; blank lines for definitions
E305 expected 2 blank lines after class or function definition, found 1
E306 expected 1 blank line before a nested definition, found 0
W291 trailing whitespace
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 09 Oct 2022 17:30:47 -0400 |
| parents | 88dbacd11cd1 |
| children | fed0f839c260 |
| 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 # |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 ''' 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
|
18 |
|
506
453096f811f0
reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents:
448
diff
changeset
|
19 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
|
20 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
|
21 of effort. |
|
447
70bdd0cef7e4
added some implementation notes
Richard Jones <richard@users.sourceforge.net>
parents:
446
diff
changeset
|
22 |
|
506
453096f811f0
reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents:
448
diff
changeset
|
23 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
|
24 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
|
25 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
|
26 advantages over regular CGI :) |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 ''' |
|
768
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
28 |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5399
diff
changeset
|
29 from roundup.anypy import urllib_ |
|
768
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
30 |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 from Globals import InitializeClass, HTMLFile |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 from OFS.SimpleItem import Item |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 from OFS.PropertyManager import PropertyManager |
|
1291
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
34 from Acquisition import Explicit, Implicit |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 from Persistence import Persistent |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 from AccessControl import ClassSecurityInfo |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 from AccessControl import ModuleSecurityInfo |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 modulesecurity = ModuleSecurityInfo() |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 import roundup.instance |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2612
diff
changeset
|
41 from roundup.cgi import client |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
506
453096f811f0
reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents:
448
diff
changeset
|
43 modulesecurity.declareProtected('View management screens', |
|
453096f811f0
reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents:
448
diff
changeset
|
44 'manage_addZRoundupForm') |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 manage_addZRoundupForm = HTMLFile('dtml/manage_addZRoundupForm', globals()) |
|
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 modulesecurity.declareProtected('Add Z Roundups', 'manage_addZRoundup') |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 def manage_addZRoundup(self, id, instance_home, REQUEST): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 """Add a ZRoundup product """ |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 # validate the instance_home |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 roundup.instance.open(instance_home) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 self._setObject(id, ZRoundup(id, instance_home)) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 return self.manage_main(self, REQUEST) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 class RequestWrapper: |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 '''Make the Zope RESPONSE look like a BaseHTTPServer |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 ''' |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 def __init__(self, RESPONSE): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 self.RESPONSE = RESPONSE |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 self.wfile = self.RESPONSE |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 def send_response(self, status): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 self.RESPONSE.setStatus(status) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 def send_header(self, header, value): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 self.RESPONSE.addHeader(header, value) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 def end_headers(self): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 # 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
|
67 pass |
|
3962
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
68 def start_response(self, headers, response): |
|
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
69 self.send_response(response) |
|
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
70 for key, value in headers: |
|
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
71 self.send_header(key, value) |
|
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
72 self.end_headers() |
|
446
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 class FormItem: |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 '''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
|
76 ''' |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 def __init__(self, value): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
78 self.value = value |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 if hasattr(self.value, 'filename'): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 self.filename = self.value.filename |
|
2869
908c27314abf
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
81 self.value = self.value.read() |
|
446
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 class FormWrapper: |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 '''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
|
85 ''' |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 def __init__(self, form): |
|
3505
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
87 self.__form = form |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 def __getitem__(self, item): |
|
3505
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
89 entry = self.__form[item] |
|
2612
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
90 if isinstance(entry, type([])): |
|
5399
dccae35caa59
Python 3 preparation: update map() calls as needed.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5395
diff
changeset
|
91 entry = list(map(FormItem, entry)) |
|
2612
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
92 else: |
|
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
93 entry = FormItem(entry) |
|
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
94 return entry |
|
3962
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
95 def __iter__(self): |
|
41d297d7dcec
Fix ZRoundup to work with Zope 2.8.5 [SF#1806125]
Richard Jones <richard@users.sourceforge.net>
parents:
3505
diff
changeset
|
96 return iter(self.__form) |
|
2612
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
97 def getvalue(self, key, default=None): |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
98 if key in self.__form: |
|
3505
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
99 return self.__form[key] |
|
2612
7cf56f5b3991
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
1911
diff
changeset
|
100 else: |
|
2869
908c27314abf
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
101 return default |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 def has_key(self, item): |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
103 return item in self.__form |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 def keys(self): |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
105 return list(self.__form.keys()) |
|
3505
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
106 |
|
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
107 def __repr__(self): |
|
b294cc477f2c
ZRoundup works again [SF#1263842]
Richard Jones <richard@users.sourceforge.net>
parents:
3180
diff
changeset
|
108 return '<ZRoundup.FormWrapper %r>'%self.__form |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
109 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 class ZRoundup(Item, PropertyManager, Implicit, Persistent): |
|
506
453096f811f0
reformatting for 80 cols
Richard Jones <richard@users.sourceforge.net>
parents:
448
diff
changeset
|
111 '''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
|
112 roundup for one roundup instance |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 ''' |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
114 meta_type = 'Z Roundup' |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 security = ClassSecurityInfo() |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 def __init__(self, id, instance_home): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 self.id = id |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 self.instance_home = instance_home |
|
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 # define the properties that define this object |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 _properties = ( |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 {'id':'id', 'type': 'string', 'mode': 'w'}, |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 {'id':'instance_home', 'type': 'string', 'mode': 'w'}, |
|
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 property_extensible_schema__ = 0 |
|
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 # define the tabs for the management interface |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 manage_options= PropertyManager.manage_options + ( |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 {'label': 'View', 'action':'index_html'}, |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
131 ) + Item.manage_options |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 icon = "misc_/ZRoundup/icon" |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 |
|
1291
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
135 security.declarePrivate('roundup_opendb') |
|
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
136 def roundup_opendb(self): |
|
448
6e3911304700
Fixed some problems with user editing
Richard Jones <richard@users.sourceforge.net>
parents:
447
diff
changeset
|
137 '''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
|
138 ''' |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2612
diff
changeset
|
139 tracker = roundup.instance.open(self.instance_home) |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 request = RequestWrapper(self.REQUEST['RESPONSE']) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 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
|
142 |
|
1b5575ccffe1
Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
717
diff
changeset
|
143 # figure out the path components to set |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5399
diff
changeset
|
144 url = urllib_.urlparse( self.absolute_url() ) |
|
808
b7f38cc4680a
fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
771
diff
changeset
|
145 path = url[2] |
|
b7f38cc4680a
fixed [SF#576086] (dumb copying mistake)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
771
diff
changeset
|
146 path_components = path.split( '/' ) |
|
1291
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
147 |
|
765
1b5575ccffe1
Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
717
diff
changeset
|
148 # 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
|
149 if path == "/" : |
|
1b5575ccffe1
Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
717
diff
changeset
|
150 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
|
151 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
|
152 else : |
|
1b5575ccffe1
Fixed the logic for determing the cookie path. (Closes [SF#562130].)
Derrick Hudson <dman13@users.sourceforge.net>
parents:
717
diff
changeset
|
153 # 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
|
154 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
|
155 # 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
|
156 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
|
157 |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
158 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
|
159 if hasattr(tracker, 'Client'): |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2612
diff
changeset
|
160 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
|
161 return client.Client(tracker, request, env, form) |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 security.declareProtected('View', 'index_html') |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 def index_html(self): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 '''Alias index_html to roundup's index |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 ''' |
|
768
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
167 # 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
|
168 # 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
|
169 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
|
170 if orig_path[-1] != '/' : |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5399
diff
changeset
|
171 url = urllib_.urlparse( self.absolute_url() ) |
|
768
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
172 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
|
173 url[2] = url[2]+'/' # patch |
|
5402
88dbacd11cd1
Python 3 preparation: update urllib / urllib2 / urlparse imports.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5399
diff
changeset
|
174 url = urllib_.urlunparse( url ) # reassemble |
|
768
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
175 RESPONSE = self.REQUEST.RESPONSE |
|
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
176 RESPONSE.setStatus( "MovedPermanently" ) # 301 |
|
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
177 RESPONSE.setHeader( "Location" , url ) |
|
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
178 return RESPONSE |
|
ce439805c617
Fixed [SF#558867] by redirecting /instance requests to /instance/
Derrick Hudson <dman13@users.sourceforge.net>
parents:
765
diff
changeset
|
179 |
|
1291
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
180 client = self.roundup_opendb() |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
181 # fake the path that roundup should use |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
182 client.split_path = ['index'] |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
183 return client.main() |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
184 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
185 def __getitem__(self, item): |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
186 '''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
|
187 ''' |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
188 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
|
189 |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
190 class PathElement(Item, Implicit): |
|
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
191 def __init__(self, zr, path): |
|
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
192 self.zr = zr |
|
1291
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
193 self.path = path |
|
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
194 |
|
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
195 def __getitem__(self, item): |
|
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
196 ''' Get a subitem. |
|
bf8b2380adb3
added CGI :remove:<propname> and :add:<propname>...
Richard Jones <richard@users.sourceforge.net>
parents:
1285
diff
changeset
|
197 ''' |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
198 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
|
199 |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
200 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
|
201 ''' 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
|
202 ''' |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
203 try: |
|
1911
f5c804379c85
fixed ZRoundup - mostly changes to classic template
Richard Jones <richard@users.sourceforge.net>
parents:
1291
diff
changeset
|
204 client = self.zr.roundup_opendb() |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
205 # 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
|
206 client.path = self.path |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
207 # and call roundup to do something |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
208 client.main() |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
209 return '' |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2612
diff
changeset
|
210 except client.NotFound: |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
4570
diff
changeset
|
211 raise Exception('NotFound ' + REQUEST.URL) |
|
446
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
212 pass |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
213 except: |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
214 import traceback |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
215 traceback.print_exc() |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
216 # all other exceptions in roundup are valid |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
217 raise |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
218 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
219 InitializeClass(ZRoundup) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
220 modulesecurity.apply(globals()) |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
221 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 |
|
ea9a4ca3fb84
Added a Zope frontend for roundup.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
223 # vim: set filetype=python ts=4 sw=4 et si |
