configurationengine/source/cone/carbon/model.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
--- a/configurationengine/source/cone/carbon/model.py	Fri Mar 12 08:30:17 2010 +0200
+++ b/configurationengine/source/cone/carbon/model.py	Tue Aug 10 14:29:28 2010 +0300
@@ -27,6 +27,7 @@
 """
 from cone.public import api, exceptions, container, utils
 from cone.confml import model as confmlmodel
+from cone.carbon import resourcemapper
 
 class ResourceList(object):
     def __init__(self):
@@ -120,10 +121,10 @@
         super(CarbonConfiguration, self).__init__(ref, **kwargs)
         if self.meta == None:
             self.meta = {}
-        
-        self.name                       = kwargs.get('name') or utils.resourceref.remove_ext(utils.resourceref.psplit_ref(self.path)[-1])
-        self.meta.add('type',kwargs.get('type', 'configurationroot'))
-        self._version_identifier        = kwargs.get('version_identifier', None)
+        self.name = kwargs.get('name') or utils.resourceref.remove_ext(utils.resourceref.psplit_ref(self.path)[-1])
+        if self.type == None:
+            self.type = 'configurationroot'
+        self._version_identifier = kwargs.get('version_identifier', None)
 
     @property
     def version_identifier(self):
@@ -132,21 +133,54 @@
             self._version_identifier = "%dwk%02d" % dt.isocalendar()[0:2]
         return self._version_identifier
 
-    @property
-    def type(self):
+    def get_type(self):
         if self.meta and self.meta.get('type'):
-            return self.meta['type']
+            return self.meta.get_property_by_tag('type').value
         else:
             return 'configurationroot'
+        
+    def set_type(self, type):
+        if not self.meta:
+            self.meta = {}
+        self.meta.set_property_by_tag('type',type)
+        
+    def del_type(self):
+        del self.meta['type']
     
+    type = property(get_type, set_type, del_type)
+
+    def get_version_identifier(self):
+        if self._version_identifier == None:
+            dt = datetime.datetime.today()
+            self._version_identifier = "%dwk%02d" % dt.isocalendar()[0:2]
+        return self._version_identifier
+        
+    def set_version_identifier(self, value):
+        self._version_identifier = value
+        
+    def del_version_identifier(self):
+        del self._version_identifier
+    
+    version_identifier = property(get_version_identifier, set_version_identifier, del_version_identifier)
+
 class FeatureList(CarbonConfiguration):
     def __init__(self, ref='', **kwargs):
         if not kwargs.get('path'):
-            kwargs['path']          = str(kwargs.get('name', '')+'.confml')
-        kwargs['type'] = 'featurelist'
+            if kwargs.get('name'):
+                kwargs['path']          = str(kwargs.get('name', '')+'.confml')
+            else:
+                kwargs['path'] = ref
+        
+        pathmapper = resourcemapper.CarbonResourceMapper()
+        tpath = pathmapper.map_confml_resource("featurelist",kwargs['path'])
+        kwargs['path'] = pathmapper.map_carbon_resource(tpath)
+
         super(FeatureList, self).__init__(ref, **kwargs)
-        self.name                = kwargs.get('name', '')
-        self._version_identifier = kwargs.get('version_identifier', 'WORKING')
+        self._version_identifier = kwargs.get('version_identifier', 'working')
+        self.type = 'featurelist'
+
+    def _default_object(self, name):
+        return CarbonFeature(name)
 
 class CarbonFeature(CarbonElement, confmlmodel.ConfmlSetting):
     def __init__(self, ref,**kwargs):
@@ -155,16 +189,24 @@
         
 
 class CarbonSetting(CarbonFeature, confmlmodel.ConfmlSetting):
-    pass
+    def __init__(self, ref,**kwargs):
+        super(CarbonSetting,self).__init__(ref,**kwargs)
+        self.type = 'boolean'
 
 class CarbonIntSetting(CarbonFeature, confmlmodel.ConfmlIntSetting):
-    pass
+    def __init__(self, ref,**kwargs):
+        super(CarbonIntSetting,self).__init__(ref,**kwargs)
+        self.type = 'int'
 
 class CarbonBooleanSetting(CarbonFeature, confmlmodel.ConfmlBooleanSetting):
-    pass
+    def __init__(self, ref,**kwargs):
+        super(CarbonBooleanSetting,self).__init__(ref,**kwargs)
+        self.type = 'boolean'
 
 class CarbonSelectionSetting(CarbonFeature, confmlmodel.ConfmlSelectionSetting):
-    pass
+    def __init__(self, ref,**kwargs):
+        super(CarbonSelectionSetting,self).__init__(ref,**kwargs)
+        self.type = 'selection'
 
 class CarbonStringSetting(CarbonFeature, confmlmodel.ConfmlSetting):
     def __init__(self, ref,**kwargs):