From f3b8ac1765ee6bfc8fd07d710fd7ccb66159ba6a Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 2 Sep 2011 16:21:35 -0400 Subject: [PATCH] added _get_version() method --- sfa/rspecs/version_manager.py | 40 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/sfa/rspecs/version_manager.py b/sfa/rspecs/version_manager.py index 511ede0f..534ec835 100644 --- a/sfa/rspecs/version_manager.py +++ b/sfa/rspecs/version_manager.py @@ -1,7 +1,9 @@ import os class VersionManager: - + default_type = 'SFA' + default_version_num = '1' + def __init__(self): self.versions = [] self.load_versions() @@ -22,21 +24,43 @@ class VersionManager: if hasattr(attr, 'version'): self.versions.append(attr) - def get_version(self, format, version_num=None, type=None): + def _get_version(self, type, version_num=None, content_type=None): retval = None for version in self.versions: - if format is None or format.lower() == version.format.lower(): + if type is None or type.lower() == version.type.lower(): if version_num is None or version_num == version.version: - if type is None or type.lower() == version.type.lower(): + if content_type is None or content_type.lower() == version.content_type.lower(): retval = version if not retval: - raise Exception, "No such version format: %s version: %s type:%s "% (format, version_num, type) - return retval - + raise Exception, "No such version format: %s version: %s type:%s "% (type, version_num, content_type) + return retval + + def get_version(self, version): + retval = None + if isinstance(version, dict): + retval = self._get_version(version.get('type'), version.get('version_num'), version.get('content_type')) + elif isinstance(version, basestring): + version_parts = version.split(' ') + num_parts = len(version_parts) + type = version_parts[0] + version_num = None + content_type = None + if num_parts > 1: + version_num = version_parts[1] + if num_parts > 2: + content_type = version_parts[2] + retval = self._get_version(type, version_num, content_type) + else: + logger.info("Unable to parse rspec version, using default") + retval = self._get_version(self.default_type, self.default_version_num) + + return retval if __name__ == '__main__': v = VersionManager() print v.versions - print v.get_version('sfa') + print v.get_version('sfa 1') + print v.get_version('protogeni 2') + print v.get_version('protogeni 2 advertisement') -- 2.43.0