cleanup
[sfa.git] / sfa / rspecs / rspec_version.py
1 #!/usr/bin/python
2 from sfa.util.sfalogging import logger
3
4 class BaseVersion:
5     type = None
6     content_type = None
7     version = None
8     schema = None
9     namespace = None
10     extensions = {}
11     namespaces = dict(extensions.items() + [('default', namespace)])
12     elements = []
13     enabled = False
14
15     def __init__(self, xml=None):
16         self.xml = xml
17
18     def to_dict(self):
19         return {
20             'type': self.type,
21             'version': self.version,
22             'schema': self.schema,
23             'namespace': self.namespace,
24             'extensions': self.extensions
25         }
26
27     def to_string(self):
28         return "%s %s" % (self.type, self.version)
29     
30
31 class RSpecVersion(dict):
32
33     fields = {'type': None,
34               'version': None,
35               'schema': None,
36               'namespace': None,
37               'extensions': []
38         }
39     def __init__(self, version={}):
40         
41         dict.__init__(self, self.fields)
42
43         if not version:
44             from sfa.rspecs.sfa_rspec import sfa_rspec_version
45             self.update(sfa_rspec_version)          
46         elif isinstance(version, dict):
47             self.update(version)
48         elif isinstance(version, basestring):
49             version_parts = version.split(' ')
50             num_parts = len(version_parts)
51             self['type'] = version_parts[0]
52             if num_parts > 1:
53                 self['version'] = version_parts[1]
54         else:
55             logger.info("Unable to parse rspec version, using default")
56
57     def get_version_name(self):
58         return "%s %s" % (str(self['type']), str(self['version']))
59
60 if __name__ == '__main__':
61
62     from sfa.rspecs.pl_rspec_version import ad_rspec_versions
63     for version in [RSpecVersion(), 
64                     RSpecVersion("SFA"), 
65                     RSpecVersion("SFA 1"),
66                     RSpecVersion(ad_rspec_versions[0])]: 
67         print version.get_version_name() + ": " + str(version)
68