Mercurial > p > roundup > code
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 |
