configurationengine/source/cone/public/api.py
changeset 5 d2c80f5cab53
parent 4 0951727b8815
equal deleted inserted replaced
4:0951727b8815 5:d2c80f5cab53
   612         
   612         
   613         export_storage.unload(configuration.get_full_path(),configuration)
   613         export_storage.unload(configuration.get_full_path(),configuration)
   614         for child in configuration._traverse(type=Configuration):
   614         for child in configuration._traverse(type=Configuration):
   615             export_storage.unload(child.get_full_path(),child)
   615             export_storage.unload(child.get_full_path(),child)
   616         
   616         
       
   617         ruleml_eval_globals_files = []
       
   618         for child in configuration._traverse(type=RulemlEvalGlobals):
       
   619             if child.file != None:
       
   620                 ruleml_eval_globals_files.append(RulemlEvalGlobals.get_script_file_full_path(child))
       
   621         
   617         #If the configuration is not in the root of the project adding the path 
   622         #If the configuration is not in the root of the project adding the path 
   618         #to final exporting source path.
   623         #to final exporting source path.
   619         #l = []
   624         #l = []
       
   625         empty_folders = kwargs.get('empty_folders',False)
       
   626         layer = configuration.get_layer()
       
   627         all_resources = []
       
   628         layer_content = layer.list_content(empty_folders)
       
   629         layer_doc = layer.list_doc(empty_folders)
       
   630         layer_implml = layer.list_implml(empty_folders)
       
   631 
       
   632         include_filters = kwargs.get('include_filters',{})
       
   633         exclude_filters = kwargs.get('exclude_filters',{})
       
   634         
       
   635         include_content_filter = include_filters.get('content')
       
   636         exclude_content_filter = exclude_filters.get('content')
       
   637         
       
   638         # perform filtering of content files
       
   639         if exclude_content_filter:
       
   640             f = lambda x: not re.search(exclude_content_filter, x, re.IGNORECASE)
       
   641             layer_content = filter(f,layer_content)
       
   642 
       
   643         if include_content_filter:
       
   644             f = lambda x: re.search(include_content_filter, x, re.IGNORECASE)
       
   645             layer_content = filter(f,layer_content)
       
   646         
       
   647         all_resources.extend(layer_content) 
       
   648         all_resources.extend(layer_doc)
       
   649         all_resources.extend(layer_implml)
       
   650         
   620         cpath = utils.resourceref.get_path(configuration.get_path()) 
   651         cpath = utils.resourceref.get_path(configuration.get_path()) 
   621         resr = [utils.resourceref.join_refs([cpath,related]) \
   652         resr = [utils.resourceref.join_refs([cpath,related]) \
   622                 for related in configuration.get_layer().list_all_related(**kwargs)]
   653                 for related in all_resources]
       
   654         resr.extend(ruleml_eval_globals_files)
   623         
   655         
   624         self.storage.export_resources(resr ,export_storage, kwargs.get("empty_folders", False))
   656         self.storage.export_resources(resr ,export_storage, kwargs.get("empty_folders", False))
   625         return
   657         return
   626 
   658 
   627     def get_configuration_class(self):
   659     def get_configuration_class(self):
   906         self.namespace = kwargs.get('namespace', '')
   938         self.namespace = kwargs.get('namespace', '')
   907         self.name = kwargs.get('name',utils.resourceref.to_objref(self.path))
   939         self.name = kwargs.get('name',utils.resourceref.to_objref(self.path))
   908         self.version = kwargs.get('version')
   940         self.version = kwargs.get('version')
   909         super(Configuration, self).__init__(utils.resourceref.to_objref(self.path), **kwargs)
   941         super(Configuration, self).__init__(utils.resourceref.to_objref(self.path), **kwargs)
   910         self.container = True
   942         self.container = True
       
   943 
       
   944     def __getstate__(self):
       
   945         state = self.__dict__.copy()
       
   946         if state.has_key('_children'):
       
   947             childs = state.get('_children')
       
   948             if childs.has_key('?default_view'):
       
   949                 childs.pop('?default_view')
       
   950                 state['_children'] = childs
       
   951         return state
   911 
   952 
   912     def _default_object(self, name):
   953     def _default_object(self, name):
   913         return self._default_class()(name)
   954         return self._default_class()(name)
   914 
   955 
   915     def _default_class(self):
   956     def _default_class(self):
  1643         self.name = kwargs.get('name', None)
  1684         self.name = kwargs.get('name', None)
  1644         self.type = kwargs.get('type', None)
  1685         self.type = kwargs.get('type', None)
  1645         self.relevant = kwargs.get('relevant', None)
  1686         self.relevant = kwargs.get('relevant', None)
  1646         self.constraint = kwargs.get('constraint', None)
  1687         self.constraint = kwargs.get('constraint', None)
  1647         self._dataproxy = None
  1688         self._dataproxy = None
       
  1689         self.extensionAttributes = []
  1648 
  1690 
  1649     def __copy__(self):
  1691     def __copy__(self):
  1650         dict = {}
  1692         dict = {}
  1651         for key in self.__dict__.keys():
  1693         for key in self.__dict__.keys():
  1652             if key.startswith('_') or key == 'ref':
  1694             if key.startswith('_') or key == 'ref':
  2183         
  2225         
  2184         if cast_value:  value_list = value_subsetting.get_value()
  2226         if cast_value:  value_list = value_subsetting.get_value()
  2185         else:           value_list = value_subsetting.get_original_value()
  2227         else:           value_list = value_subsetting.get_original_value()
  2186         return value_list[key_list.index(mapping_key)]
  2228         return value_list[key_list.index(mapping_key)]
  2187 
  2229 
       
  2230     def set_extension_attributes(self, attributes):
       
  2231         self.extensionAttributes = attributes
       
  2232         
       
  2233     def get_extension_attributes(self):
       
  2234         return self.extensionAttributes
       
  2235     
       
  2236     def add_extension_attribute(self, attribute):
       
  2237         self.extensionAttributes.append(attribute)
  2188 
  2238 
  2189 class FeatureSequence(Feature):
  2239 class FeatureSequence(Feature):
  2190     POLICY_REPLACE = 0
  2240     POLICY_REPLACE = 0
  2191     POLICY_APPEND = 1
  2241     POLICY_APPEND = 1
  2192     POLICY_PREPEND = 2
  2242     POLICY_PREPEND = 2
  3272         self.value = value
  3322         self.value = value
  3273         self.map = kwargs.get('map', None)
  3323         self.map = kwargs.get('map', None)
  3274         self.relevant = kwargs.get('relevant', None)
  3324         self.relevant = kwargs.get('relevant', None)
  3275         self.map_value = kwargs.get('map_value', None)
  3325         self.map_value = kwargs.get('map_value', None)
  3276         self.display_name = kwargs.get('display_name', None)
  3326         self.display_name = kwargs.get('display_name', None)
       
  3327         self.extensionAttributes = []
  3277 
  3328 
  3278     @classmethod
  3329     @classmethod
  3279     def to_optref(cls, value, map):
  3330     def to_optref(cls, value, map):
  3280         """ 
  3331         """ 
  3281         @return: An option reference converted from value or map, depending
  3332         @return: An option reference converted from value or map, depending
  3304         elif self.ref == ref:
  3355         elif self.ref == ref:
  3305             return 0
  3356             return 0
  3306         else:
  3357         else:
  3307             return 1
  3358             return 1
  3308 
  3359 
       
  3360     def set_extension_attributes(self, attributes):
       
  3361         self.extensionAttributes = attributes
       
  3362         
       
  3363     def get_extension_attributes(self):
       
  3364         return self.extensionAttributes
       
  3365     
       
  3366     def add_extension_attribute(self, attribute):
       
  3367         self.extensionAttributes.append(attribute)
  3309 
  3368 
  3310 class Storage(object):
  3369 class Storage(object):
  3311     """
  3370     """
  3312     A general base class for all storage type classes
  3371     A general base class for all storage type classes
  3313     """
  3372     """
  3948         for layerpath in self.list_layers():
  4007         for layerpath in self.list_layers():
  3949             for respath in self.get_layer(layerpath).list_confml():
  4008             for respath in self.get_layer(layerpath).list_confml():
  3950                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  4009                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  3951         return lres
  4010         return lres
  3952 
  4011 
  3953     def list_implml(self):
  4012     def list_implml(self,empty_folders=False):
  3954         """
  4013         """
  3955         @return: array of implml file references.
  4014         @return: array of implml file references.
  3956         """
  4015         """
  3957         lres = []
  4016         lres = []
  3958         for layerpath in self.list_layers():
  4017         for layerpath in self.list_layers():
  3959             for respath in self.get_layer(layerpath).list_implml():
  4018             for respath in self.get_layer(layerpath).list_implml(empty_folders):
  3960                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  4019                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  3961         return lres
  4020         return lres
  3962 
  4021 
  3963     def list_content(self):
  4022     def list_content(self,empty_folders=False):
  3964         """
  4023         """
  3965         @return: array of content file references.
  4024         @return: array of content file references.
  3966         """
  4025         """
  3967         lres = []
  4026         lres = []
  3968         for layerpath in self.list_layers():
  4027         for layerpath in self.list_layers():
  3969             for respath in self.get_layer(layerpath).list_content():
  4028             for respath in self.get_layer(layerpath).list_content(empty_folders):
  3970                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  4029                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  3971         return lres
  4030         return lres
  3972 
  4031 
  3973     def list_doc(self):
  4032     def list_doc(self,empty_folders=False):
  3974         """
  4033         """
  3975         @return: array of document file references.
  4034         @return: array of document file references.
  3976         """
  4035         """
  3977         lres = []
  4036         lres = []
  3978         for layerpath in self.list_layers():
  4037         for layerpath in self.list_layers():
  3979             for respath in self.get_layer(layerpath).list_doc():
  4038             for respath in self.get_layer(layerpath).list_doc(empty_folders):
  3980                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  4039                 lres.append(utils.resourceref.join_refs([layerpath, respath]))
  3981         return lres
  4040         return lres
  3982 
  4041 
  3983     def list_all_resources(self, **kwargs):
  4042     def list_all_resources(self, **kwargs):
  3984         """
  4043         """
  4054         """
  4113         """
  4055         res = self.list_resources(self.predefined['confml_path'], recurse=True)
  4114         res = self.list_resources(self.predefined['confml_path'], recurse=True)
  4056         res += super(Layer, self).list_confml()
  4115         res += super(Layer, self).list_confml()
  4057         return res 
  4116         return res 
  4058 
  4117 
  4059     def list_implml(self):
  4118     def list_implml(self,empty_folders=False):
  4060         """
  4119         """
  4061         @return: array of implml file references.
  4120         @return: array of implml file references.
  4062         """
  4121         """
  4063         res = self.list_resources(self.predefined['implml_path'], recurse=True)
  4122         res = self.list_resources(self.predefined['implml_path'], recurse=True,empty_folders=empty_folders)
  4064         res += super(Layer, self).list_implml()
  4123         res += super(Layer, self).list_implml(empty_folders)
  4065         return res 
  4124         return res 
  4066 
  4125 
  4067     def list_content(self):
  4126     def list_content(self,empty_folders=False):
  4068         """
  4127         """
  4069         @return: array of content file references.
  4128         @return: array of content file references.
  4070         """
  4129         """
  4071         res = self.list_resources(self.predefined['content_path'], recurse=True)
  4130         res = self.list_resources(self.predefined['content_path'], recurse=True,empty_folders=empty_folders)
  4072         res += super(Layer, self).list_content()
  4131         res += super(Layer, self).list_content(empty_folders)
  4073         return res
  4132         return res
  4074 
  4133 
  4075     def list_doc(self):
  4134     def list_doc(self,empty_folders=False):
  4076         """
  4135         """
  4077         @return: array of document file references.
  4136         @return: array of document file references.
  4078         """
  4137         """
  4079         res = self.list_resources(self.predefined['doc_path'], recurse=True)
  4138         res = self.list_resources(self.predefined['doc_path'], recurse=True,empty_folders=empty_folders)
  4080         res += super(Layer, self).list_doc()
  4139         res += super(Layer, self).list_doc(empty_folders)
  4081         return res
  4140         return res
  4082 
  4141 
  4083     def confml_folder(self):
  4142     def confml_folder(self):
  4084         cpath = self.get_current_path()
  4143         cpath = self.get_current_path()
  4085         spath = self.predefined['confml_path']
  4144         spath = self.predefined['confml_path']
  4184     Return a instance of appropriate mapper for given model.
  4243     Return a instance of appropriate mapper for given model.
  4185     """
  4244     """
  4186     mapmodule = __import__('cone.public.mapping')
  4245     mapmodule = __import__('cone.public.mapping')
  4187     return mapmodule.public.mapping.BaseMapper()
  4246     return mapmodule.public.mapping.BaseMapper()
  4188 
  4247 
       
  4248 class RulemlEvalGlobals(Base):
       
  4249     """
       
  4250     Ruleml subelement of extensions element
       
  4251     """
       
  4252     refname = "_extension"
       
  4253     def __init__(self, value = None, file = None, **kwargs):
       
  4254         """
       
  4255         """
       
  4256         super(RulemlEvalGlobals,self).__init__(self.refname)
       
  4257         self.value = value
       
  4258         self.file = file
       
  4259     
       
  4260     @classmethod
       
  4261     def get_script_file_full_path(self, child): 
       
  4262         parent_config = child._find_parent(type=Configuration)
       
  4263         cpath = parent_config.get_full_path()
       
  4264         cpath = utils.resourceref.psplit_ref(cpath)[0]
       
  4265         path = utils.resourceref.join_refs([cpath, child.file])
       
  4266         return path
  4189 
  4267 
  4190 class Problem(object):
  4268 class Problem(object):
  4191     SEVERITY_ERROR      = "error"
  4269     SEVERITY_ERROR      = "error"
  4192     SEVERITY_WARNING    = "warning"
  4270     SEVERITY_WARNING    = "warning"
  4193     SEVERITY_INFO       = "info"
  4271     SEVERITY_INFO       = "info"