Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tutorius
diff options
context:
space:
mode:
authormike <michael.jmontcalm@gmail.com>2009-11-06 05:13:59 (GMT)
committer mike <michael.jmontcalm@gmail.com>2009-11-06 05:13:59 (GMT)
commit5491c551a2f88dbda852bc0e9d0c5406019e2be8 (patch)
tree94eeb2b16fc8b02d7df5ae46b7ae71a6463645bb /tutorius
parent134d1333acc68ac2ccd3b0459df1be948500f1a7 (diff)
LP 448319 : Add a resource translation layer for tutorial execution
Diffstat (limited to 'tutorius')
-rw-r--r--tutorius/properties.py15
-rw-r--r--tutorius/translator.py27
-rw-r--r--tutorius/vault.py12
3 files changed, 27 insertions, 27 deletions
diff --git a/tutorius/properties.py b/tutorius/properties.py
index ba3c211..c7af821 100644
--- a/tutorius/properties.py
+++ b/tutorius/properties.py
@@ -90,6 +90,21 @@ class TPropContainer(object):
except AttributeError:
return object.__setattr__(self, name, value)
+ def replace_property(self, prop_name, new_prop):
+ """
+ Changes the content of a property. This is done in order to support
+ the insertion of executable properties in the place of a portable
+ property. The typical exemple is that a resource property needs to
+ be changed into a file property with the correct file name, since the
+ installation location will be different on every platform.
+
+ @param prop_name The name of the property to be changed
+ @param new_prop The new property to insert
+ @raise AttributeError of the mentionned property doesn't exist
+ """
+ props = object.__getattribute__(self, "_props")
+ props.__setitem__(prop_name, new_prop)
+
def get_properties(self):
"""
Return the list of property names.
diff --git a/tutorius/translator.py b/tutorius/translator.py
index 9925346..4e3e88d 100644
--- a/tutorius/translator.py
+++ b/tutorius/translator.py
@@ -20,9 +20,9 @@ import copy
logger = logging.getLogger("ResourceTranslator")
-from sugar.tutorius.properties import *
+from .properties import *
# TODO : Uncomment this line upon integration with the Vault
-##from sugar.tutorius.vault import *
+from .vault import Vault
class ResourceTranslator(object):
"""
@@ -38,7 +38,7 @@ class ResourceTranslator(object):
replace it.
"""
- def __init__(self, probe_manager, tutorial_id, testing=False):
+ def __init__(self, probe_manager, tutorial_id):
"""
Creates a new ResourceTranslator for the given tutorial. This
translator is tasked with replacing resource properties of the
@@ -49,15 +49,11 @@ class ResourceTranslator(object):
@param probe_manager The probe manager to decorate
@param tutorial_id The ID of the current tutorial
-
- @param testing Triggers the usage of a fake vault for testing purposes
"""
self._probe_manager = probe_manager
self._tutorial_id = tutorial_id
- self._testing = testing
-
- def translate_resource(self, res_prop):
+ def translate_resource(self, res_value):
"""
Replace the TResourceProperty in the container by their
runtime-defined file equivalent. Since the resources are stored
@@ -66,18 +62,13 @@ class ResourceTranslator(object):
to transform the resource identifier into the absolute path for
the process to be able to use it properly.
- @param res_prop The resource property to be translated
+ @param res_prop The resource property's value to be translated
@return The TFileProperty corresponding to this resource, containing
an absolute path to the resource
"""
# We need to replace the resource by a file representation
- filepath = ""
- # TODO : Refactor when the Vault will be available
- if not self._testing:
- filepath = Vault.get_resource_path(self._tutorial_id, \
- prop_object.value)
- else:
- filepath = "/tmp/tutorius/temp.txt"
+ filepath = Vault.get_resource_path(self._tutorial_id, res_value)
+
# Create the new file representation
file_prop = TFileProperty(filepath)
@@ -114,7 +105,7 @@ class ResourceTranslator(object):
# Apply the translation
file_prop = self.translate_resource(prop_value)
# Set the property with the new value
- setattr(prop_container, propname, file_prop)
+ prop_container.replace_property(propname, file_prop)
# If the property is an addon, then its value IS a
# container too - we need to translate it
@@ -139,7 +130,7 @@ class ResourceTranslator(object):
prop_value.append(container)
# Change the list contained in the addonlist property, since
# we got a copy of the list when requesting it
- setattr(prop_container, propname, prop_value)
+ prop_container.replace_property(propname, prop_value)
### ProbeManager interface for decorator ###
diff --git a/tutorius/vault.py b/tutorius/vault.py
index 22fa940..9576de9 100644
--- a/tutorius/vault.py
+++ b/tutorius/vault.py
@@ -324,14 +324,14 @@ class Vault(object):
@staticmethod
- def deleteTutorial(Tutorial):
+ def deleteTutorial(tutorial_id):
"""
Removes the tutorial from the Vault. It will unpublish the tutorial if need be,
and it will also wipe it from the persistent storage.
@returns true is the tutorial was deleted from the Vault
"""
- bundle = TutorialBundler(Guid)
- bundle_path = bundle.get_tutorial_path(Guid)
+ bundle = TutorialBundler(tutorial_id)
+ bundle_path = bundle.get_tutorial_path(tutorial_id)
# TODO : Need also to unpublish tutorial, need to interact with webservice module
@@ -980,9 +980,3 @@ class TutorialBundler(object):
xml_filename = config.get(INI_METADATA_SECTION, INI_XML_FSM_PROPERTY)
serializer.save_tutorial(fsm, xml_filename, self.Path)
- @staticmethod
- def add_resources(typename, file):
- """
- Add ressources to metadata.
- """
- raise NotImplementedError("add_resources not implemented")