Author: remi
Date: 2009-04-07 18:46:28 +0200 (Tue, 07 Apr 2009)
New Revision: 4404

Added:
   
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/03_advanced_api/resourceUserConfiguration.py
Log:
* added a resource to load the configurations from a user directory

Added: 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/03_advanced_api/resourceUserConfiguration.py
===================================================================
--- 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/03_advanced_api/resourceUserConfiguration.py
                               (rev 0)
+++ 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/03_advanced_api/resourceUserConfiguration.py
       2009-04-07 16:46:28 UTC (rev 4404)
@@ -0,0 +1,154 @@
+# 
==============================================================================
+# Task creation resource.
+# 
==============================================================================
+
+from util.misc.tuxPaths import TUXDROID_LANGUAGE
+from util.misc.tuxPaths import TUXDROID_DEFAULT_LOCUTOR
+from util.misc.DirectoriesAndFilesTools import *
+
+# 
------------------------------------------------------------------------------
+# Declaration of the resource "user_configuration".
+# 
------------------------------------------------------------------------------
+class TDSResourceUserConfiguration(TDSResource):
+
+    # 
--------------------------------------------------------------------------
+    # Inherited methods from TDSResource
+    # 
--------------------------------------------------------------------------
+
+    def configure(self):
+        self.name = "user_configuration"
+        self.comment = "Resource to manages the user configurations."
+        self.fileName = RESOURCE_FILENAME
+        # Default configuration
+        self.defaultConfiguration = {
+            'auto-start' : False,
+            'configuration_path' : "",
+        }
+
+    def stop(self):
+        self.getConfigurator().store()
+
+    def start(self):
+        config = self.getConfigurator().load(
+            "resourceUserConfiguration.conf",
+            self.defaultConfiguration)
+        if config['auto-start']:
+            self.loadUserDirectory(config['configuration_path'])
+
+    # 
--------------------------------------------------------------------------
+    # Public methods
+    # 
--------------------------------------------------------------------------
+
+    def loadUserDirectory(self, userDirectory):
+        """Load the configuration from a user directory.
+        @param userDirectory: User directory (with "MyTux" ...)
+        @return: The success of the configuration loading.
+        """
+        if not os.path.isdir(userDirectory):
+            return False
+        if userDirectory.split(os.sep)[-1] != "MyTux":
+            return False
+        # User directories
+        userGadgetsDir = os.path.join(userDirectory, "MyTuxGadgets")
+        userAttitunesDir = os.path.join(userDirectory, "MyTuxAttitunes")
+        userTasksDir = os.path.join(userDirectory, "MyTuxTasks")
+        userLocalesConfigFile = os.path.join(userDirectory, "locales.conf")
+        MKDirs(userGadgetsDir)
+        MKDirs(userAttitunesDir)
+        MKDirs(userTasksDir)
+        # Read the locales configuration
+        if not os.path.isfile(userLocalesConfigFile):
+            # Create the locales config
+            splitedLC = TUXDROID_LANGUAGE.split("_")
+            language = splitedLC[0]
+            if len(splitedLC) > 1:
+                country = splitedLC[1]
+            else:
+                country = language.upper()
+            locutor = TUXDROID_DEFAULT_LOCUTOR
+            pitch = 130
+            userLocalesConfigDict = {
+                'language' : language,
+                'country' : country,
+                'locutor' : locutor,
+                'pitch' : pitch,
+                'L1' : language,
+                'L2' : language,
+                'GL' : language,
+            }
+            try:
+                open(userLocalesConfigFile, 
"wb").write(str(userLocalesConfigDict))
+            except:
+                RMFile(userLocalesConfigFile)
+                return False
+        else:
+            try:
+                userLocalesConfigDict = eval(open(
+                    userLocalesConfigFile, "rb").read())
+            except:
+                RMFile(userLocalesConfigFile)
+                return False
+        def async():
+            # Start the gadget framework
+            parameters = {
+                'language' : userLocalesConfigDict['language'],
+                'country' : userLocalesConfigDict['country'],
+                'locutor' : userLocalesConfigDict['locutor'],
+                'pitch' : userLocalesConfigDict['pitch'],
+                'gadgets_path' : userGadgetsDir,
+            }
+            resourceGadgetFramework.getService("start").execute(0, parameters)
+            # Start the attitune manager
+            parameters = {
+                'attitunes_path' : userAttitunesDir,
+            }
+            resourceAttituneManager.getService("start").execute(0, parameters)
+            # Start the scheduler
+            parameters = {
+                'tasks_path' : userTasksDir,
+            }
+            resourceScheduler.getService("start").execute(0, parameters)
+        t = threading.Thread(target = async)
+        t.start()
+        return True
+
+# Create an instance of the resource
+resourceUserConfiguration = 
TDSResourceUserConfiguration("resourceUserConfiguration")
+# Register the resource into the resources manager
+resourcesManager.addResource(resourceUserConfiguration)
+
+# 
------------------------------------------------------------------------------
+# Declaration of the service "set_user_directory".
+# 
------------------------------------------------------------------------------
+class TDSServiceUserConfigurationSetDirectory(TDSService):
+
+    def configure(self):
+        self.parametersDict = {
+            'configuration_path' : 'string',
+        }
+        self.minimalUserLevel = TDS_CLIENT_LEVEL_ANONYMOUS
+        self.exclusiveExecution = False
+        self.name = "set_user_directory"
+        self.comment = "Set the user directory."
+
+    def execute(self, id, parameters):
+        headersStruct = self.getDefaultHeadersStruct()
+        contentStruct = self.getDefaultContentStruct()
+        contentStruct['root']['result'] = getStrError(E_TDREST_SUCCESS)
+        # Check the directory
+        if not os.path.isdir(parameters['configuration_path']):
+            contentStruct['root']['result'] = getStrError(E_TDREST_FAILED)
+        else:
+            if not resourceUserConfiguration.loadUserDirectory(
+                parameters['configuration_path']):
+                contentStruct['root']['result'] = getStrError(E_TDREST_FAILED)
+            else:
+                configurator = resourceUserConfiguration.getConfigurator()
+                config = configurator.getConfiguration()
+                config['configuration_path'] = parameters['configuration_path']
+                config['auto-start'] = True
+                configurator.store()
+        return headersStruct, contentStruct
+
+# Register the service into the resource
+resourceUserConfiguration.addService(TDSServiceUserConfigurationSetDirectory)


Property changes on: 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/03_advanced_api/resourceUserConfiguration.py
___________________________________________________________________
Name: svn:keywords
   + Id


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to