annotate roundup/cgi/apache.py @ 5937:5d0873a4de4a

fix rate limit headers - were ints/floats need to be strings Running under gunicorn rest requests were crashing. Not all of the values for the rate limit headers were strings. Some were numbers. This caused the header generation for wsgi to fail. Now the values are all strings.
author John Rouillard <rouilj@ieee.org>
date Sun, 20 Oct 2019 20:56:56 -0400
parents 020e1d1bf5ba
children 495282f62e0c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1 # mod_python interface for Roundup Issue Tracker
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2 #
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
3 # This module is free software, you may redistribute it
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
4 # and/or modify under the same terms as Python.
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
5 #
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
6 # This module provides Roundup Web User Interface
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
7 # using mod_python Apache module. Initially written
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
8 # with python 2.3.3, mod_python 3.1.3, roundup 0.7.0.
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
9 #
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
10 # This module operates with only one tracker
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
11 # and must be placed in the tracker directory.
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
12 #
5890
020e1d1bf5ba Fix doc typo.
John Rouillard <rouilj@ieee.org>
parents: 5889
diff changeset
13 # mod_python is deprecated and not well tested with release 2.0 of
020e1d1bf5ba Fix doc typo.
John Rouillard <rouilj@ieee.org>
parents: 5889
diff changeset
14 # roundup. mod_wsgi is the preferred interface. It may not work
5889
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
15 # with python3.
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
16
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
17 # The patch from https://issues.roundup-tracker.org/issue2550821
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
18 # is included. Look for this url below. It is not tested, but
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
19 # we assume it's safe and syntax it seems ok.
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
20
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
21 import cgi
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
22 import os
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
23 import threading
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
24
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
25 from mod_python import apache
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
26
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
27 import roundup.instance
2560
d45f1669599c added 'TrackerLanguage' option;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2552
diff changeset
28 from roundup.cgi import TranslationService
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
29
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
30 class Headers(dict):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
31
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
32 """HTTP headers wrapper"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
33
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
34 def __init__(self, headers):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
35 """Initialize with `apache.table`"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
36 super(Headers, self).__init__(headers)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
37 self.getheader = self.get
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
38
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
39 class Request(object):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
40
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
41 """`apache.Request` object wrapper providing roundup client interface"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
42
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
43 def __init__(self, request):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
44 """Initialize with `apache.Request` object"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
45 self._req = request
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
46 # .headers.getheader()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
47 self.headers = Headers(request.headers_in)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48 # .wfile.write()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 self.wfile = self._req
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
50
3736
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
51 def start_response(self, headers, response):
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
52 self.send_response(response)
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
53 for key, value in headers:
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
54 self.send_header(key, value)
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
55 self.end_headers()
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
56
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
57 def send_response(self, response_code):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
58 """Set HTTP response code"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
59 self._req.status = response_code
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
60
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
61 def send_header(self, name, value):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
62 """Set output header"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
63 # value may be an instance of roundup.cgi.exceptions.HTTPException
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
64 value = str(value)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
65 # XXX default content_type is "text/plain",
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
66 # and ain't overrided by "Content-Type" header
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
67 if name == "Content-Type":
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
68 self._req.content_type = value
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
69 else:
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
70 self._req.headers_out.add(name, value)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
71
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
72 def end_headers(self):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
73 """NOOP. There aint no such thing as 'end_headers' in mod_python"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
74 pass
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
75
4047
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
76
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
77 def sendfile(self, filename, offset = 0, len = -1):
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
78 """Send 'filename' to the user."""
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
79
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
80 return self._req.sendfile(filename, offset, len)
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
81
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
82 __tracker_cache = {}
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
83 """A cache of optimized tracker instances.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
84
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
85 The keys are strings giving the directories containing the trackers.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
86 The values are tracker instances."""
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
87
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
88 __tracker_cache_lock = threading.Lock()
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
89 """A lock used to guard access to the cache."""
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
90
4047
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
91
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
92 def handler(req):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
93 """HTTP request handler"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
94 _options = req.get_options()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
95 _home = _options.get("TrackerHome")
2560
d45f1669599c added 'TrackerLanguage' option;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2552
diff changeset
96 _lang = _options.get("TrackerLanguage")
2944
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
97 _timing = _options.get("TrackerTiming", "no")
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
98 if _timing.lower() in ("no", "false"):
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
99 _timing = ""
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
100 _debug = _options.get("TrackerDebug", "no")
3735
e8d4ac23692f fix debug flag detection
Richard Jones <richard@users.sourceforge.net>
parents: 2944
diff changeset
101 _debug = _debug.lower() not in ("no", "false")
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
102
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
103 # We do not need to take a lock here (the fast path) because reads
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
104 # from dictionaries are atomic.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
105 if not _debug and _home in __tracker_cache:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
106 _tracker = __tracker_cache[_home]
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
107 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
108 if not (_home and os.path.isdir(_home)):
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
109 apache.log_error(
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
110 "PythonOption TrackerHome missing or invalid for %(uri)s"
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
111 % {'uri': req.uri})
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
112 return apache.HTTP_INTERNAL_SERVER_ERROR
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
113 if _debug:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
114 _tracker = roundup.instance.open(_home, optimize=0)
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
115 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
116 __tracker_cache_lock.acquire()
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
117 try:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
118 # The tracker may have been added while we were acquiring
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
119 # the lock.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
120 if _home in __tracker_cache:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
121 _tracker = __tracker_cache[home]
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
122 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
123 _tracker = roundup.instance.open(_home, optimize=1)
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
124 __tracker_cache[_home] = _tracker
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
125 finally:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
126 __tracker_cache_lock.release()
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
127 # create environment
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
128 # Note: cookies are read from HTTP variables, so we need all HTTP vars
5889
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
129
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
130 # https://issues.roundup-tracker.org/issue2550821
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
131 # Release 3.4 of mod_python uses add_cgi_vars() and depricates
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
132 # add_common_vars. So try to use the add_cgi_vars and if it fails
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
133 # with AttributeError because we are running an older mod_apache without
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
134 # that function, fallback to add_common_vars.
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
135 try:
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
136 req.add_cgi_vars()
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
137 except AttributeError:
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
138 req.add_common_vars()
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
139
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
140 _env = dict(req.subprocess_env)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
141 # XXX classname must be the first item in PATH_INFO. roundup.cgi does:
5433
86b6cea7a975 Python 3 preparation: avoid string.split().
Joseph Myers <jsm@polyomino.org.uk>
parents: 4213
diff changeset
142 # path = os.environ.get('PATH_INFO', '/').split('/')
5434
1ab2c81a64df Python 3 preparation: avoid string.join().
Joseph Myers <jsm@polyomino.org.uk>
parents: 5433
diff changeset
143 # os.environ['PATH_INFO'] = '/'.join(path[2:])
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
144 # we just remove the first character ('/')
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
145 _env["PATH_INFO"] = req.path_info[1:]
2944
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
146 if _timing:
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
147 _env["CGI_SHOW_TIMING"] = _timing
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
148 _form = cgi.FieldStorage(req, environ=_env)
2560
d45f1669599c added 'TrackerLanguage' option;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2552
diff changeset
149 _client = _tracker.Client(_tracker, Request(req), _env, _form,
2809
353dc16a49b2 pass tracker home directory to get_translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2560
diff changeset
150 translator=TranslationService.get_translation(_lang,
353dc16a49b2 pass tracker home directory to get_translation()
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2560
diff changeset
151 tracker_home=_home))
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
152 _client.main()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
153 return apache.OK
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
154
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
155 # vim: set et sts=4 sw=4 :

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