comparison roundup/instance.py @ 6325:1a15089c2e49 issue2550923_computed_property

Merge trunk into branch
author John Rouillard <rouilj@ieee.org>
date Sat, 06 Feb 2021 20:15:26 -0500
parents 1e5ed659e8ca 778a9f455067
children 30358e334232
comparison
equal deleted inserted replaced
6319:20e77c3ce6f6 6325:1a15089c2e49
81 rdbms_backend = self.config.RDBMS_BACKEND 81 rdbms_backend = self.config.RDBMS_BACKEND
82 82
83 # TODO: Remove in v1.7 83 # TODO: Remove in v1.7
84 # Provide some backwards compatability for existing Roundup instances 84 # Provide some backwards compatability for existing Roundup instances
85 # that still define the backend type in 'db/backend_name' and warn the 85 # that still define the backend type in 'db/backend_name' and warn the
86 # users they need to update their config.ini 86 # users they need to update their config.ini. Note that a missing
87 # rdbms backend causes the config to throw an error, so this may
88 # not be possible.
87 if rdbms_backend == '': 89 if rdbms_backend == '':
88 filename = os.path.join(self.config.DATABASE, 'backend_name') 90 raise TrackerError("database backend not found in config.ini.\n"
89 msg = """\n 91 "Old style `backend_name` in db directory not supported\n"
90 The 'backend_name' file is no longer used to configure the database backend 92 "See doc/upgrading.txt for required steps.")
91 used for the tracker. Please read 'doc/upgrading.txt' to find out how to
92 update your config.ini
93 """
94 try:
95 with open(filename) as backend_file:
96 rdbms_backend = backend_file.readline().strip()
97
98 with warnings.catch_warnings():
99 warnings.simplefilter("once", DeprecationWarning)
100 warnings.warn(msg, DeprecationWarning, stacklevel=2)
101 except IOError:
102 pass
103 93
104 self.backend = backends.get_backend(rdbms_backend) 94 self.backend = backends.get_backend(rdbms_backend)
105 95
106 if self.optimize: 96 if self.optimize:
107 self.templates.precompile() 97 self.templates.precompile()
275 265
276 class TrackerError(RoundupException): 266 class TrackerError(RoundupException):
277 pass 267 pass
278 268
279 269
280 class OldStyleTrackers:
281 def __init__(self):
282 self.number = 0
283 self.trackers = {}
284
285 def open(self, tracker_home, optimize=0):
286 """Open the tracker.
287
288 Parameters:
289 tracker_home:
290 tracker home directory
291 optimize:
292 if set, precompile html templates
293
294 Raise ValueError if the tracker home doesn't exist.
295
296 """
297 import imp
298 # sanity check existence of tracker home
299 if not os.path.exists(tracker_home):
300 raise ValueError('no such directory: "%s"' % tracker_home)
301
302 # sanity check tracker home contents
303 for reqd in 'config dbinit select_db interfaces'.split():
304 if not os.path.exists(os.path.join(tracker_home, '%s.py' % reqd)):
305 raise TrackerError('File "%s.py" missing from tracker '
306 'home "%s"' % (reqd, tracker_home))
307
308 if tracker_home in self.trackers:
309 return imp.load_package(self.trackers[tracker_home],
310 tracker_home)
311 # register all available backend modules
312 backends.list_backends()
313 self.number = self.number + 1
314 modname = '_roundup_tracker_%s' % self.number
315 self.trackers[tracker_home] = modname
316
317 # load the tracker
318 tracker = imp.load_package(modname, tracker_home)
319
320 # ensure the tracker has all the required bits
321 for required in 'open init Client MailGW'.split():
322 if not hasattr(tracker, required):
323 raise TrackerError('Required tracker attribute "%s" missing' %
324 required)
325
326 # load and apply the config
327 tracker.config = configuration.CoreConfig(tracker_home)
328 tracker.dbinit.config = tracker.config
329
330 tracker.optimize = optimize
331 tracker.templates = templating.get_loader(tracker.config["TEMPLATES"])
332 if optimize:
333 tracker.templates.precompile()
334
335 return tracker
336
337
338 OldStyleTrackers = OldStyleTrackers()
339
340
341 def open(tracker_home, optimize=0): 270 def open(tracker_home, optimize=0):
342 if os.path.exists(os.path.join(tracker_home, 'dbinit.py')): 271 if os.path.exists(os.path.join(tracker_home, 'dbinit.py')):
343 # user should upgrade... 272 # user should upgrade...
344 return OldStyleTrackers.open(tracker_home, optimize=optimize) 273 raise TrackerError("Old style trackers using dbinit.py "
274 "are not supported after release 2.0")
345 275
346 return Tracker(tracker_home, optimize=optimize) 276 return Tracker(tracker_home, optimize=optimize)
347 277
348 # vim: set filetype=python sts=4 sw=4 et si : 278 # vim: set filetype=python sts=4 sw=4 et si :

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