annotate roundup/cgi/apache.py @ 8562:9c3ec0a5c7fc

chore: remove __future print_funcion from code. Not needed as of Python 3.
author John Rouillard <rouilj@ieee.org>
date Wed, 08 Apr 2026 21:39:40 -0400
parents dd13b3a0ea8d
children
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 os
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
22 import threading
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
23
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
24 from mod_python import apache
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
25
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
26 import roundup.instance
7582
978285986b2c fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
27 from roundup.anypy.cgi_ import cgi
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
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
30
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
31 class Headers(dict):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
32
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
33 """HTTP headers wrapper"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
34
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
35 def __init__(self, headers):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
36 """Initialize with `apache.table`"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
37 super(Headers, self).__init__(headers)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
38 self.getheader = self.get
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
39
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
40
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
41 class Request(object):
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 """`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
44
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
45 def __init__(self, request):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
46 """Initialize with `apache.Request` object"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
47 self._req = request
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48 # .headers.getheader()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 self.headers = Headers(request.headers_in)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
50 # .wfile.write()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
51 self.wfile = self._req
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
52
3736
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
53 def start_response(self, headers, response):
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
54 self.send_response(response)
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
55 for key, value in headers:
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
56 self.send_header(key, value)
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
57 self.end_headers()
a2d22d0de0bc WSGI support via roundup.cgi.wsgi_handler
Richard Jones <richard@users.sourceforge.net>
parents: 3735
diff changeset
58
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
59 def send_response(self, response_code):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
60 """Set HTTP response code"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
61 self._req.status = response_code
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
62
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
63 def send_header(self, name, value):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
64 """Set output header"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
65 # 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
66 value = str(value)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
67 # XXX default content_type is "text/plain",
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
68 # 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
69 if name == "Content-Type":
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
70 self._req.content_type = value
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
71 else:
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
72 self._req.headers_out.add(name, value)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
73
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
74 def end_headers(self):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
75 """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
76 pass
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
77
8103
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
78 def sendfile(self, filename, offset=0, length=-1):
4047
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
79 """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
80
8103
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
81 return self._req.sendfile(filename, offset, length)
4047
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
82
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
83
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
84 __tracker_cache = {}
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
85 """A cache of optimized tracker instances.
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
86
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
87 The keys are strings giving the directories containing the trackers.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
88 The values are tracker instances."""
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
89
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
90 __tracker_cache_lock = threading.Lock()
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
91 """A lock used to guard access to the cache."""
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
92
4047
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
93
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
94 def handler(req):
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
95 """HTTP request handler"""
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
96 _options = req.get_options()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
97 _home = _options.get("TrackerHome")
2560
d45f1669599c added 'TrackerLanguage' option;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2552
diff changeset
98 _lang = _options.get("TrackerLanguage")
2944
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
99 _timing = _options.get("TrackerTiming", "no")
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
100 if _timing.lower() in ("no", "false"):
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
101 _timing = ""
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
102 _debug = _options.get("TrackerDebug", "no")
3735
e8d4ac23692f fix debug flag detection
Richard Jones <richard@users.sourceforge.net>
parents: 2944
diff changeset
103 _debug = _debug.lower() not in ("no", "false")
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
104
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
105 # 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
106 # from dictionaries are atomic.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
107 if not _debug and _home in __tracker_cache:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
108 _tracker = __tracker_cache[_home]
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
109 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
110 if not (_home and os.path.isdir(_home)):
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
111 apache.log_error(
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
112 "PythonOption TrackerHome missing or invalid for %(uri)s"
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
113 % {'uri': req.uri})
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
114 return apache.HTTP_INTERNAL_SERVER_ERROR
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
115 if _debug:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
116 _tracker = roundup.instance.open(_home, optimize=0)
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
117 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
118 __tracker_cache_lock.acquire()
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
119 try:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
120 # The tracker may have been added while we were acquiring
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
121 # the lock.
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
122 if _home in __tracker_cache:
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
123 _tracker = __tracker_cache[_home]
4213
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
124 else:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
125 _tracker = roundup.instance.open(_home, optimize=1)
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
126 __tracker_cache[_home] = _tracker
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
127 finally:
302bc481ceb1 Cache tracker instances.
Stefan Seefeld <stefan@seefeld.name>
parents: 4047
diff changeset
128 __tracker_cache_lock.release()
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
129 # create environment
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
130 # 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
131
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
132 # https://issues.roundup-tracker.org/issue2550821
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
133 # 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
134 # 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
135 # 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
136 # that function, fallback to add_common_vars.
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
137 try:
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
138 req.add_cgi_vars()
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
139 except AttributeError:
a243a036e7f3 mod_python update/deprication.
John Rouillard <rouilj@ieee.org>
parents: 5434
diff changeset
140 req.add_common_vars()
6038
fb1367285bd7 flake8 format changes.
John Rouillard <rouilj@ieee.org>
parents: 6037
diff changeset
141
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
142 _env = dict(req.subprocess_env)
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
143 # 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
144 # 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
145 # 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
146 # we just remove the first character ('/')
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
147 _env["PATH_INFO"] = req.path_info[1:]
2944
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
148 if _timing:
835ac4013578 added options TrackerDebug and TrackerTiming;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2809
diff changeset
149 _env["CGI_SHOW_TIMING"] = _timing
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
150 _form = cgi.FieldStorage(req, environ=_env)
8103
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
151 _client = _tracker.Client(
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
152 _tracker, Request(req), _env, _form,
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
153 translator=TranslationService.get_translation(_lang,
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
154 tracker_home=_home)
dd13b3a0ea8d chore(lint): fix variable shadow builtin (len); proper indent func args.
John Rouillard <rouilj@ieee.org>
parents: 7582
diff changeset
155 )
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156 _client.main()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 return apache.OK
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
158
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
159 # vim: set et sts=4 sw=4 :

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