import os
class VersionManager:
-
+ default_type = 'SFA'
+ default_version_num = '1'
+
def __init__(self):
self.versions = []
self.load_versions()
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')