From 6e0699097aabf89f166afb953a73812203443446 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Savard Date: Wed, 15 Apr 2009 15:37:21 +0000 Subject: LP 341760 Serializer : Bundler.py up to date --- (limited to 'src/sugar/tutorius/bundler.py') diff --git a/src/sugar/tutorius/bundler.py b/src/sugar/tutorius/bundler.py index d6fb9e2..3678e86 100644 --- a/src/sugar/tutorius/bundler.py +++ b/src/sugar/tutorius/bundler.py @@ -22,6 +22,7 @@ This module contains all the data handling class of Tutorius import logging import os +import uuid from sugar.tutorius import gtkutils, overlayer from sugar.tutorius.core import Tutorial, State, FiniteStateMachine @@ -158,8 +159,8 @@ class TutorialBundler: editor. """ - TUT_STORE_ROOT = os.getenv("$SUGAR_PREFIX") + "/share/tutorius/" + guid - TUT_BUNDLE_ROOT = os.getenv("$SUGAR_BUNDLE_PATH") + "/data/tutorius/" + TUT_STORE_ROOT = os.getenv("$SUGAR_PREFIX") + "/share/tutorius/Data" + TUT_BUNDLE_ROOT = os.getenv("$SUGAR_BUNDLE_PATH") + "/data/tutorius/Data" INI_ACTIVITY_SECTION = "RELATED_ACTIVITIES" INI_METADATA_SECTION = "GENERAL_METADATA" INI_GUID_PROPERTY = "GUID" @@ -170,104 +171,108 @@ class TutorialBundler: def __init__(self,generated_guid = None): """ TODO. - The GUID associated to the tutorial will be generated in the constructor. + Tutorial_bundler constructor. If a GUID is given in the parameter, the + Tutorial_bundler object will be associated with it. If no GUID is given, + a new GUID will be generated, """ + def __SetGuid(self, value): + self.__guid = value + + def __GetGuid(self): + return self.__guid + + def __DelGuid(self): + del self.__guid + + Guid = property(fget=__SetGuid, + fset=__GetGuid, + fdel=__DelGuid, + doc="The guid associated with the Tutoria_Bundler") + + guid = property(fget=get_guid(), + fset=set_guid()) + + if generated_gui is not None: + self.Guid = generated_guid + else: + self.Guid = uuid.uuid1() + + + #TODO : GUID generation if no guid is given in entry to the constructor. - def write_metadata_file(data, guid=None): + def write_metadata_file(self, data): """ Write metadata to a property file. If a GUID is provided, TutorialBundler will try to find and overwrite the existing property file who contain the - given GUID, and will raise an exception if it cannot find it. If no - GUID is provided, TutorialBundler will create a new property file. + given GUID, and will raise an exception if it cannot find it. """ NotImplementedError - - def write_fsm(fsm, guid=None, metadata_filename = None): - + + def return_ini_file_path(self): + """ + Return the path of the .ini file associated with the guiven guid set in + the Guid property of the Tutorial_Bundler. If the guid is present in + more than one path, the TUT_STORE_ROOT is given priority. """ - Save fsm to disk. If a GUID parameter is provided, the existing GUID is - located in the .ini files in TUT_STORRE_ROOT and TUT_BUNDLE_ROOT and - the corresponding FSM is/are overwritten. If the GUID is not found, an - exception occur. If no GUID is provided, FSM is written in a new file - in TUT_STORE_ROOT. If a new FSM is created, the existing .ini filename - must be given in "metadata_filename". - """ config = SafeConfigParser() - - if guid is not None: + path = None - logging.debug("************ Path of TUT_STORE_ROOT folder of activity : " \ + logging.debug("************ Path of TUT_STORE_ROOT folder of activity : " \ + TUT_STORE_ROOT) - # iterate for each .ini file in the TUT_STORE_ROOT folder + # iterate for each .ini file in the TUT_STORE_ROOT folder - for file_name in os.listdir(TUT_STORE_ROOT): - if file_name.endswith(".ini"): - logging.debug("******************* Found .ini file : " \ - + file_name) - config.read(file_name) - if config.get(INI_METADATA_SECTION, INI_GUID_PROPERTY) == guid: - xml_filename = config.get(INI_METADATA_SECTION, - INI_XML_FSM_PROPERTY) - save_fsm(fsm, xml_filename, TUT_STORE_ROOT) + for file_name in os.listdir(TUT_STORE_ROOT): + if file_name.endswith(".ini"): + logging.debug("******************* Found .ini file : " \ + + file_name) + config.read(file_name) + if config.get(INI_METADATA_SECTION, INI_GUID_PROPERTY) == self.Guid: + xml_filename = config.get(INI_METADATA_SECTION, + INI_XML_FSM_PROPERTY) + path = TUT_STORE_ROOT + "/" + self.Guid + "/" + file_name + return path - logging.debug("************ Path of TUT_BUNDLE_ROOT folder of activity : " \ + logging.debug("************ Path of TUT_BUNDLE_ROOT folder of activity : " \ + TUT_BUNDLE_ROOT) - ## TODO : Remove code duplication - - # iterate for each .ini file in the TUT_BUNDLE_ROOT folder - for file_name in os.listdir(TUT_BUNDLE_ROOT): - if file_name.endswith(".ini"): - logging.debug("******************* Found .ini file : " \ - + file_name) - config.read(file_name) - if config.get(INI_METADATA_SECTION, INI_GUID_PROPERTY) == guid: - xml_filename = config.get(INI_METADATA_SECTION, - INI_XML_FSM_PROPERTY) - save_fsm(fsm, xml_filename, TUT_STORE_ROOT) - - elif metadata_filename is not None: - - logging.debug("************ Path of TUT_STORE_ROOT folder of activity : " \ - + TUT_STORE_ROOT) - - # iterate for each .ini file in the TUT_STORE_ROOT folder - - for file_name in os.listdir(TUT_STORE_ROOT): - if file_name == metadata_filename: - logging.debug("******************* Found .ini file : " \ - + file_name) - config.read(file_name) - xml_filename = config.get(INI_METADATA_SECTION, INI_XML_FSM_PROPERTY) - save_fsm(fsm,xml_filename,TUT_STORE_ROOT) + # iterate for each .ini file in the TUT_BUNDLE_ROOT folder + for file_name in os.listdir(TUT_BUNDLE_ROOT): + if file_name.endswith(".ini"): + logging.debug("******************* Found .ini file : " \ + + file_name) + config.read(file_name) + if config.get(INI_METADATA_SECTION, INI_GUID_PROPERTY) == guid: + path = TUT_BUNDLE_ROOT + "/" + self.Guid + "/" + file_name + return path + + if path is None: + logging.debug("**************** Error : GUID not found") + raise KeyError - - logging.debug("************ Path of TUT_BUNDLE_ROOT folder of activity : " \ - + TUT_BUNDLE_ROOT) - - ## TODO : Remove code duplication - - # iterate for each .ini file in the TUT_BUNDLE_ROOT folder - for file_name in os.listdir(TUT_BUNDLE_ROOT): - if file_name == metadata_filename: - logging.debug("******************* Found .ini file : " \ - + file_name) - config.read(file_name) - if config.get(INI_METADATA_SECTION, INI_GUID_PROPERTY) == guid: - xml_filename = config.get(INI_METADATA_SECTION, - INI_XML_FSM_PROPERTY) - save_fsm(fsm, xml_filename, TUT_STORE_ROOT) - - + def write_fsm(self, fsm, guid=None): + + """ + Save fsm to disk. If a GUID parameter is provided, the existing GUID is + located in the .ini files in TUT_STORRE_ROOT and TUT_BUNDLE_ROOT and + the corresponding FSM is/are created or overwritten. If the GUID is not + found, an exception occur. + """ - return tuto + config = SafeConfigParser() + + if guid is not None: + path = return_ini_file_path() + config.read(path) + xml_filename = config.get(INI_METADATA_SECTION, INI_XML_FSM_PROPERTY) + save_fsm(fsm, xml_filename, TUT_STORE_ROOT) + - def add_resources(typename, file): + def add_resources(self, typename, file): """ Add ressources to metadata. """ -- cgit v0.9.1