if version not in self.versions:
self.versions[version] = ApplicationVersion(distutils.version.LooseVersion(version), self)
return self.versions[version]
+ @staticmethod
+ def make(name):
+ """Makes an application, but uses the correct subtype if available."""
+ try:
+ __import__("wizard.app." + name)
+ return getattr(wizard.app, name).Application(name)
+ except ImportError:
+ return Application(name)
class ApplicationVersion(object):
"""Represents an abstract notion of a version for an application"""
version = "trunk"
except ValueError: # mostly from the a, b = foo.split(' ')
raise DeploymentParseError(deploydir, location)
- if not applookup: applookup = applications
+ if not applookup: applookup = applications()
try:
# defer to the application for version creation
return applookup[app].makeVersion(version)
# these are technically deprecated
"advancedpoll", "gallery",
]
-
-"""Hash table for looking up string application name to instance"""
-applications = dict([(n,Application(n)) for n in application_list ])
+_applications = None
+
+def applications():
+ """Hash table for looking up string application name to instance"""
+ global _applications
+ if not _applications:
+ _applications = dict([(n,Application.make(n)) for n in application_list ])
+ return _applications