diff -r 0951727b8815 -r d2c80f5cab53 configurationengine/source/cone/public/api.py --- a/configurationengine/source/cone/public/api.py Wed Sep 08 12:20:56 2010 +0300 +++ b/configurationengine/source/cone/public/api.py Thu Oct 21 16:36:53 2010 +0300 @@ -614,12 +614,44 @@ for child in configuration._traverse(type=Configuration): export_storage.unload(child.get_full_path(),child) + ruleml_eval_globals_files = [] + for child in configuration._traverse(type=RulemlEvalGlobals): + if child.file != None: + ruleml_eval_globals_files.append(RulemlEvalGlobals.get_script_file_full_path(child)) + #If the configuration is not in the root of the project adding the path #to final exporting source path. #l = [] + empty_folders = kwargs.get('empty_folders',False) + layer = configuration.get_layer() + all_resources = [] + layer_content = layer.list_content(empty_folders) + layer_doc = layer.list_doc(empty_folders) + layer_implml = layer.list_implml(empty_folders) + + include_filters = kwargs.get('include_filters',{}) + exclude_filters = kwargs.get('exclude_filters',{}) + + include_content_filter = include_filters.get('content') + exclude_content_filter = exclude_filters.get('content') + + # perform filtering of content files + if exclude_content_filter: + f = lambda x: not re.search(exclude_content_filter, x, re.IGNORECASE) + layer_content = filter(f,layer_content) + + if include_content_filter: + f = lambda x: re.search(include_content_filter, x, re.IGNORECASE) + layer_content = filter(f,layer_content) + + all_resources.extend(layer_content) + all_resources.extend(layer_doc) + all_resources.extend(layer_implml) + cpath = utils.resourceref.get_path(configuration.get_path()) resr = [utils.resourceref.join_refs([cpath,related]) \ - for related in configuration.get_layer().list_all_related(**kwargs)] + for related in all_resources] + resr.extend(ruleml_eval_globals_files) self.storage.export_resources(resr ,export_storage, kwargs.get("empty_folders", False)) return @@ -909,6 +941,15 @@ super(Configuration, self).__init__(utils.resourceref.to_objref(self.path), **kwargs) self.container = True + def __getstate__(self): + state = self.__dict__.copy() + if state.has_key('_children'): + childs = state.get('_children') + if childs.has_key('?default_view'): + childs.pop('?default_view') + state['_children'] = childs + return state + def _default_object(self, name): return self._default_class()(name) @@ -1645,6 +1686,7 @@ self.relevant = kwargs.get('relevant', None) self.constraint = kwargs.get('constraint', None) self._dataproxy = None + self.extensionAttributes = [] def __copy__(self): dict = {} @@ -2185,6 +2227,14 @@ else: value_list = value_subsetting.get_original_value() return value_list[key_list.index(mapping_key)] + def set_extension_attributes(self, attributes): + self.extensionAttributes = attributes + + def get_extension_attributes(self): + return self.extensionAttributes + + def add_extension_attribute(self, attribute): + self.extensionAttributes.append(attribute) class FeatureSequence(Feature): POLICY_REPLACE = 0 @@ -3274,6 +3324,7 @@ self.relevant = kwargs.get('relevant', None) self.map_value = kwargs.get('map_value', None) self.display_name = kwargs.get('display_name', None) + self.extensionAttributes = [] @classmethod def to_optref(cls, value, map): @@ -3306,6 +3357,14 @@ else: return 1 + def set_extension_attributes(self, attributes): + self.extensionAttributes = attributes + + def get_extension_attributes(self): + return self.extensionAttributes + + def add_extension_attribute(self, attribute): + self.extensionAttributes.append(attribute) class Storage(object): """ @@ -3950,33 +4009,33 @@ lres.append(utils.resourceref.join_refs([layerpath, respath])) return lres - def list_implml(self): + def list_implml(self,empty_folders=False): """ @return: array of implml file references. """ lres = [] for layerpath in self.list_layers(): - for respath in self.get_layer(layerpath).list_implml(): + for respath in self.get_layer(layerpath).list_implml(empty_folders): lres.append(utils.resourceref.join_refs([layerpath, respath])) return lres - def list_content(self): + def list_content(self,empty_folders=False): """ @return: array of content file references. """ lres = [] for layerpath in self.list_layers(): - for respath in self.get_layer(layerpath).list_content(): + for respath in self.get_layer(layerpath).list_content(empty_folders): lres.append(utils.resourceref.join_refs([layerpath, respath])) return lres - def list_doc(self): + def list_doc(self,empty_folders=False): """ @return: array of document file references. """ lres = [] for layerpath in self.list_layers(): - for respath in self.get_layer(layerpath).list_doc(): + for respath in self.get_layer(layerpath).list_doc(empty_folders): lres.append(utils.resourceref.join_refs([layerpath, respath])) return lres @@ -4056,28 +4115,28 @@ res += super(Layer, self).list_confml() return res - def list_implml(self): + def list_implml(self,empty_folders=False): """ @return: array of implml file references. """ - res = self.list_resources(self.predefined['implml_path'], recurse=True) - res += super(Layer, self).list_implml() + res = self.list_resources(self.predefined['implml_path'], recurse=True,empty_folders=empty_folders) + res += super(Layer, self).list_implml(empty_folders) return res - def list_content(self): + def list_content(self,empty_folders=False): """ @return: array of content file references. """ - res = self.list_resources(self.predefined['content_path'], recurse=True) - res += super(Layer, self).list_content() + res = self.list_resources(self.predefined['content_path'], recurse=True,empty_folders=empty_folders) + res += super(Layer, self).list_content(empty_folders) return res - def list_doc(self): + def list_doc(self,empty_folders=False): """ @return: array of document file references. """ - res = self.list_resources(self.predefined['doc_path'], recurse=True) - res += super(Layer, self).list_doc() + res = self.list_resources(self.predefined['doc_path'], recurse=True,empty_folders=empty_folders) + res += super(Layer, self).list_doc(empty_folders) return res def confml_folder(self): @@ -4186,6 +4245,25 @@ mapmodule = __import__('cone.public.mapping') return mapmodule.public.mapping.BaseMapper() +class RulemlEvalGlobals(Base): + """ + Ruleml subelement of extensions element + """ + refname = "_extension" + def __init__(self, value = None, file = None, **kwargs): + """ + """ + super(RulemlEvalGlobals,self).__init__(self.refname) + self.value = value + self.file = file + + @classmethod + def get_script_file_full_path(self, child): + parent_config = child._find_parent(type=Configuration) + cpath = parent_config.get_full_path() + cpath = utils.resourceref.psplit_ref(cpath)[0] + path = utils.resourceref.join_refs([cpath, child.file]) + return path class Problem(object): SEVERITY_ERROR = "error"