comparison roundup/instance.py @ 6010:8ccb41b477d1

Flake8 cleanup. Formating only no code changes.
author John Rouillard <rouilj@ieee.org>
date Tue, 31 Dec 2019 21:22:48 -0500
parents 5258e89e896a
children c177e7128dc9
comparison
equal deleted inserted replaced
6009:d56e290ecab7 6010:8ccb41b477d1
45 from roundup import configuration, mailgw 45 from roundup import configuration, mailgw
46 from roundup import hyperdb, backends, actions 46 from roundup import hyperdb, backends, actions
47 from roundup.cgi import client, templating 47 from roundup.cgi import client, templating
48 from roundup.cgi import actions as cgi_actions 48 from roundup.cgi import actions as cgi_actions
49 49
50
50 class Tracker: 51 class Tracker:
51 def __init__(self, tracker_home, optimize=0): 52 def __init__(self, tracker_home, optimize=0):
52 """New-style tracker instance constructor 53 """New-style tracker instance constructor
53 54
54 Parameters: 55 Parameters:
72 libdir = os.path.join(self.tracker_home, 'lib') 73 libdir = os.path.join(self.tracker_home, 'lib')
73 self.libdir = os.path.isdir(libdir) and libdir or '' 74 self.libdir = os.path.isdir(libdir) and libdir or ''
74 75
75 self.load_interfaces() 76 self.load_interfaces()
76 self.templates = templating.get_loader(self.config["TEMPLATES"], 77 self.templates = templating.get_loader(self.config["TEMPLATES"],
77 self.config["TEMPLATE_ENGINE"]) 78 self.config["TEMPLATE_ENGINE"])
78 79
79 rdbms_backend = self.config.RDBMS_BACKEND 80 rdbms_backend = self.config.RDBMS_BACKEND
80 81
81 # TODO: Remove in v1.7 82 # TODO: Remove in v1.7
82 # Provide some backwards compatability for existing Roundup instances 83 # Provide some backwards compatability for existing Roundup instances
176 if not isinstance(prop, (hyperdb.Link, 177 if not isinstance(prop, (hyperdb.Link,
177 hyperdb.Multilink)): 178 hyperdb.Multilink)):
178 continue 179 continue
179 linkto = prop.classname 180 linkto = prop.classname
180 if linkto not in classes: 181 if linkto not in classes:
181 raise ValueError("property %s.%s links to non-existent class %s" 182 raise ValueError("property %s.%s links to "
182 % (classname, propname, linkto)) 183 "non-existent class %s"
184 % (classname, propname, linkto))
183 185
184 db.post_init() 186 db.post_init()
185 self.db_open = 1 187 self.db_open = 1
186 return db 188 return db
187 189
190 env = {} 192 env = {}
191 if os.path.isfile(os.path.join(self.tracker_home, 'interfaces.py')): 193 if os.path.isfile(os.path.join(self.tracker_home, 'interfaces.py')):
192 self._execfile('interfaces.py', env) 194 self._execfile('interfaces.py', env)
193 self.Client = env.get('Client', client.Client) 195 self.Client = env.get('Client', client.Client)
194 self.MailGW = env.get('MailGW', mailgw.MailGW) 196 self.MailGW = env.get('MailGW', mailgw.MailGW)
195 self.TemplatingUtils = env.get('TemplatingUtils', templating.TemplatingUtils) 197 self.TemplatingUtils = env.get('TemplatingUtils',
198 templating.TemplatingUtils)
196 199
197 def get_extensions(self, dirname): 200 def get_extensions(self, dirname):
198 """Load python extensions 201 """Load python extensions
199 202
200 Parameters: 203 Parameters:
219 return extensions 222 return extensions
220 223
221 def init(self, adminpw, tx_Source=None): 224 def init(self, adminpw, tx_Source=None):
222 db = self.open('admin') 225 db = self.open('admin')
223 db.tx_Source = tx_Source 226 db.tx_Source = tx_Source
224 self._execfile('initial_data.py', {'db': db, 'adminpw': adminpw, 227 self._execfile('initial_data.py',
225 'admin_email': self.config['ADMIN_EMAIL']}) 228 {'db': db, 'adminpw': adminpw,
229 'admin_email': self.config['ADMIN_EMAIL']})
226 db.commit() 230 db.commit()
227 db.close() 231 db.close()
228 232
229 def exists(self): 233 def exists(self):
230 return self.backend.db_exists(self.config) 234 return self.backend.db_exists(self.config)
264 self.cgi_actions[name] = action 268 self.cgi_actions[name] = action
265 269
266 def registerUtil(self, name, function): 270 def registerUtil(self, name, function):
267 self.templating_utils[name] = function 271 self.templating_utils[name] = function
268 272
273
269 class TrackerError(BaseException): 274 class TrackerError(BaseException):
270 pass 275 pass
271 276
272 277
273 class OldStyleTrackers: 278 class OldStyleTrackers:
288 293
289 """ 294 """
290 import imp 295 import imp
291 # sanity check existence of tracker home 296 # sanity check existence of tracker home
292 if not os.path.exists(tracker_home): 297 if not os.path.exists(tracker_home):
293 raise ValueError('no such directory: "%s"'%tracker_home) 298 raise ValueError('no such directory: "%s"' % tracker_home)
294 299
295 # sanity check tracker home contents 300 # sanity check tracker home contents
296 for reqd in 'config dbinit select_db interfaces'.split(): 301 for reqd in 'config dbinit select_db interfaces'.split():
297 if not os.path.exists(os.path.join(tracker_home, '%s.py'%reqd)): 302 if not os.path.exists(os.path.join(tracker_home, '%s.py' % reqd)):
298 raise TrackerError('File "%s.py" missing from tracker '\ 303 raise TrackerError('File "%s.py" missing from tracker '
299 'home "%s"'%(reqd, tracker_home)) 304 'home "%s"' % (reqd, tracker_home))
300 305
301 if tracker_home in self.trackers: 306 if tracker_home in self.trackers:
302 return imp.load_package(self.trackers[tracker_home], 307 return imp.load_package(self.trackers[tracker_home],
303 tracker_home) 308 tracker_home)
304 # register all available backend modules 309 # register all available backend modules
305 backends.list_backends() 310 backends.list_backends()
306 self.number = self.number + 1 311 self.number = self.number + 1
307 modname = '_roundup_tracker_%s'%self.number 312 modname = '_roundup_tracker_%s' % self.number
308 self.trackers[tracker_home] = modname 313 self.trackers[tracker_home] = modname
309 314
310 # load the tracker 315 # load the tracker
311 tracker = imp.load_package(modname, tracker_home) 316 tracker = imp.load_package(modname, tracker_home)
312 317
313 # ensure the tracker has all the required bits 318 # ensure the tracker has all the required bits
314 for required in 'open init Client MailGW'.split(): 319 for required in 'open init Client MailGW'.split():
315 if not hasattr(tracker, required): 320 if not hasattr(tracker, required):
316 raise TrackerError('Required tracker attribute "%s" missing'%required) 321 raise TrackerError('Required tracker attribute "%s" missing' %
322 required)
317 323
318 # load and apply the config 324 # load and apply the config
319 tracker.config = configuration.CoreConfig(tracker_home) 325 tracker.config = configuration.CoreConfig(tracker_home)
320 tracker.dbinit.config = tracker.config 326 tracker.dbinit.config = tracker.config
321 327
324 if optimize: 330 if optimize:
325 tracker.templates.precompile() 331 tracker.templates.precompile()
326 332
327 return tracker 333 return tracker
328 334
335
329 OldStyleTrackers = OldStyleTrackers() 336 OldStyleTrackers = OldStyleTrackers()
337
338
330 def open(tracker_home, optimize=0): 339 def open(tracker_home, optimize=0):
331 if os.path.exists(os.path.join(tracker_home, 'dbinit.py')): 340 if os.path.exists(os.path.join(tracker_home, 'dbinit.py')):
332 # user should upgrade... 341 # user should upgrade...
333 return OldStyleTrackers.open(tracker_home, optimize=optimize) 342 return OldStyleTrackers.open(tracker_home, optimize=optimize)
334 343

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