[tuxdroid-svn] r5080 - in software_suite_v3/smart-core/smart-server/trunk: resources/03_content_se
Status: Beta
Brought to you by:
ks156
|
From: remi <c2m...@c2...> - 2009-07-08 09:16:10
|
Author: remi
Date: 2009-07-08 11:15:58 +0200 (Wed, 08 Jul 2009)
New Revision: 5080
Modified:
software_suite_v3/smart-core/smart-server/trunk/resources/03_content_servers/02_resourceGagdetsServer.py
software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/gadget/GadgetsContainer.py
software_suite_v3/smart-core/smart-server/trunk/util/misc/DirectoriesAndFilesTools.py
Log:
* Added a function copy a file.
* Added a method to export gadgets data to a directory.
(The resulting data structure will be used for the online gadgets download)
* Added a service to the method. example : (http://127.0.0.1:270/gadgets_server/export_gadgets?dest_path=c:\gadgets)
Modified: software_suite_v3/smart-core/smart-server/trunk/resources/03_content_servers/02_resourceGagdetsServer.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/resources/03_content_servers/02_resourceGagdetsServer.py 2009-07-08 07:26:04 UTC (rev 5079)
+++ software_suite_v3/smart-core/smart-server/trunk/resources/03_content_servers/02_resourceGagdetsServer.py 2009-07-08 09:15:58 UTC (rev 5080)
@@ -464,3 +464,29 @@
# Register the service into the resource
resourceGadgetsServer.addService(TDSServiceGadgetsServerRemoveGadget)
+
+# ------------------------------------------------------------------------------
+# Declaration of the service "export_gadgets".
+# ------------------------------------------------------------------------------
+class TDSServiceGadgetsServerExportGadgets(TDSService):
+
+ def configure(self):
+ self.parametersDict = {
+ 'dest_path' : 'string',
+ }
+ self.minimalUserLevel = TDS_CLIENT_LEVEL_ANONYMOUS
+ self.exclusiveExecution = True
+ self.name = "export_gadgets"
+ self.comment = "Export gadgets data to an external directory."
+
+ def execute(self, id, parameters):
+ headersStruct = self.getDefaultHeadersStruct()
+ contentStruct = self.getDefaultContentStruct()
+ contentStruct['root']['result'] = getStrError(E_TDREST_SUCCESS)
+ destPath = parameters['dest_path']
+ resourceGadgetsServer.getGadgetsContainer().exportGadgets(destPath)
+ return headersStruct, contentStruct
+
+# Register the service into the resource
+resourceGadgetsServer.addService(TDSServiceGadgetsServerExportGadgets)
+
Modified: software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/gadget/GadgetsContainer.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/gadget/GadgetsContainer.py 2009-07-08 07:26:04 UTC (rev 5079)
+++ software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/gadget/GadgetsContainer.py 2009-07-08 09:15:58 UTC (rev 5080)
@@ -8,7 +8,10 @@
from util.filesystem.AutoDeployer import AutoDeployer
from util.xml.XmlSerializer import XmlSerializer
+from util.misc import DirectoriesAndFilesTools
+from util.applicationserver.plugin.Plugin import SUPPORTED_LANGUAGES_LIST
from Gadget import Gadget
+from GadgetGenerator import GadgetGenerator
# ------------------------------------------------------------------------------
# Gadgets container class.
@@ -110,6 +113,64 @@
gadgetName = "%s (%d)" % (baseGadgetName, i)
return gadgetName
+ # --------------------------------------------------------------------------
+ # Export gadgets data to an external directory.
+ # --------------------------------------------------------------------------
+ def exportGadgets(self, destDirectory = "c:/gadgetsV3"):
+ """Export gadgets data to an external directory.
+ @param destDirectory: Directory how to export the data.
+ """
+ baseDir = destDirectory
+ deflatedDir = os.path.join(baseDir, "deflated")
+ scgDir = os.path.join(baseDir, "scg")
+ gadgetXmlFile = os.path.join(baseDir, "gadgets.xml")
+ # Create directories arch
+ DirectoriesAndFilesTools.MKDirsF(baseDir)
+ if not os.path.isdir(baseDir):
+ return
+ DirectoriesAndFilesTools.MKDirs(deflatedDir)
+ DirectoriesAndFilesTools.MKDirs(scgDir)
+ # Loop on gadgets data
+ gadgetsXmlDict = {
+ 'gadgets' : {
+ 'count' : self.getCount(),
+ },
+ }
+ for i, gadget in enumerate(self.getGadgets()):
+ # Export scg file
+ src = gadget.getScgFile()
+ scgName = os.path.split(src)[-1]
+ dest = os.path.join(scgDir, scgName)
+ DirectoriesAndFilesTools.CPFile(src, dest)
+ # Export deflated directory
+ src = gadget.getWorkingPath()
+ symbolicName = os.path.split(gadget.getWorkingPath())[-1]
+ dest = os.path.join(deflatedDir, symbolicName)
+ DirectoriesAndFilesTools.CPDir(src, dest)
+ # Get some informations about the gadget
+ gadgetData = {}
+ gadgetData['symbolicName'] = symbolicName
+ gadgetData['version'] = gadget.getDescription().getVersion()
+ gadgetData['defaultLanguage'] = gadget.getDescription().getDefaultLanguage()
+ gadgetData['category'] = gadget.getDescription().getCategory()
+ gadgetData['author'] = gadget.getDescription().getAuthor()
+ gadgetData['name'] = {}
+ gadgetData['description'] = {}
+ gadgetData['helpFile'] = {}
+ for lang in SUPPORTED_LANGUAGES_LIST:
+ name = gadget.getDescription().getTranslatedName(lang)
+ gadgetData['name'][lang] = name
+ description = gadget.getDescription().getDescription(lang)
+ gadgetData['description'][lang] = description
+ helpFile = os.path.split(gadget.getDescription().getHelpFile(lang))[-1]
+ gadgetData['helpFile'][lang] = helpFile
+ gadgetsXmlDict['gadgets']['gadget_%.4d' % i] = gadgetData
+ # Export gadgets.xml file
+ gadgetsXmlFileContent = GadgetGenerator.gadgetDictToXml(gadgetsXmlDict)
+ f = open(gadgetXmlFile, "w")
+ f.write(gadgetsXmlFileContent)
+ f.close()
+
# ==========================================================================
# AUTO-DEPLOYER
# ==========================================================================
Modified: software_suite_v3/smart-core/smart-server/trunk/util/misc/DirectoriesAndFilesTools.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/util/misc/DirectoriesAndFilesTools.py 2009-07-08 07:26:04 UTC (rev 5079)
+++ software_suite_v3/smart-core/smart-server/trunk/util/misc/DirectoriesAndFilesTools.py 2009-07-08 09:15:58 UTC (rev 5080)
@@ -138,6 +138,23 @@
shutil.copytree(src, dest)
# ------------------------------------------------------------------------------
+# Copy a file.
+# ------------------------------------------------------------------------------
+def CPFile(src, dest):
+ """Copy a file.
+ @param src: Source file path.
+ @param dest: Destination file path.
+ @return: True or False.
+ """
+ if not os.path.isfile(src):
+ return False
+ try:
+ shutil.copy(src, dest)
+ except:
+ return False
+ return True
+
+# ------------------------------------------------------------------------------
# Retrieve the OS temporary directory.
# ------------------------------------------------------------------------------
def GetOSTMPDir():
|