Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/tutorius/bundler.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sugar/tutorius/bundler.py')
-rw-r--r--src/sugar/tutorius/bundler.py159
1 files changed, 82 insertions, 77 deletions
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.
"""