def _loadProfileMeta(self, module_path): """ """ instance_identifier = self.getInstanceIdentifier() profilemeta_path = join(module_path, 'profilemeta.xml') profilemeta_handler, error = profilemeta_parser().parse(self.futRead(profilemeta_path, 'r')) if profilemeta_handler is not None: if profilemeta_handler.root is not None: profiles_tool = self.getProfilesTool() entry_title = 'Profile at %s' % instance_identifier #add entry in profiles tool if not profiles_tool.profiles_meta.has_key(self.meta_type): profiles_tool.profiles_meta[self.meta_type] = { 'title': entry_title, 'properties': [], 'instances': [] } psa = profiles_tool.profiles_meta[self.meta_type]['properties'].append for p in profilemeta_handler.root.properties: psa({'id': p.id, 'value': p.value, 'type': p.type}) if instance_identifier not in profiles_tool.profiles_meta[self.meta_type]['instances']: #update profile meta instances list profiles_tool.profiles_meta[self.meta_type]['instances'].append(instance_identifier) profiles_tool._p_changed = 1 #update all existing profiles sheet_id = self.getInstanceSheetId() for profile_ob in profiles_tool.getProfiles(): manage_addProfileSheet(profile_ob, sheet_id, entry_title, instance_identifier) sheet_ob = profile_ob._getOb(sheet_id) for p in profilemeta_handler.root.properties: sheet_ob.manage_addProperty(p.id, p.value, p.type) else: raise Exception, EXCEPTION_PARSINGFILE % (profilemeta_path, error)
def loadProfileSheets(self, profile_ob): """ Given a profile object, it loads all needed sheets according with profile metadata definitions. """ for k, v in self.profiles_meta.items(): title = v['title'] properties = v['properties'] for x in v['instances']: instance_ob = self.getInstanceByIdentifier(x) sheet_id = instance_ob.getInstanceSheetId() manage_addProfileSheet(profile_ob, sheet_id, title, x) sheet_ob = profile_ob._getOb(sheet_id) for p in properties: sheet_ob.manage_addProperty(p['id'], p['value'], p['type'])