annotate roundup/cgi/apache.py @ 6593:e70e2789bc2c

issue2551189 - increase text search maxlength This removes I think all the magic references to 25 and 30 (varchar size) and replaces them with references to maxlength or maxlength+5. I am not sure why the db column is 5 characters larger than the size of what should be the max size of a word, but I'll keep the buffer of 5 as making it 1/5 the size of maxlength makes less sense. Also added tests for fts search in templating which were missing. Added postgres, mysql and sqlite native indexing backends in which to test fts. Added fts test to native-fts as well to make sure it's working. I want to commit this now for CI. Todo: add test cases for the use of FTS in the csv output in actions.py. There is no test coverage of the match case there. change maxlength to a higher value (50) as requested in the ticket. Modify existing extremewords test cases to allow words > 25 and < 51 write code to migrate column sizes for mysql and postgresql to match maxlength I will roll this into the version 7 schema update that supports use of database fts support.
author John Rouillard <rouilj@ieee.org>
date Tue, 25 Jan 2022 13:22:00 -0500
parents fb1367285bd7
children 07ce4e4110f5
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
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
6037
495282f62e0c Flake8 reported unknown var home. Replace with _home in cache.
John Rouillard <rouilj@ieee.org>
parents: 5890
diff changeset
78 def sendfile(self, filename, offset=0, len=-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
e70643990e9c Support the use of sendfile() for file transfer, if available.
Stefan Seefeld <stefan@seefeld.name>
parents: 3736
diff changeset
81 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
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)
2560
d45f1669599c added 'TrackerLanguage' option;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2552
diff changeset
151 _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
152 translator=TranslationService.get_translation(_lang,
6038
fb1367285bd7 flake8 format changes.
John Rouillard <rouilj@ieee.org>
parents: 6037
diff changeset
153 tracker_home=_home))
2552
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
154 _client.main()
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
155 return apache.OK
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156
41fbe26aa2df mod_python interface for Roundup Issue Tracker
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 # vim: set et sts=4 sw=4 :

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