Browse Source

Moving storeNode to slicerNetwork

Andrej Studen 5 years ago
parent
commit
ac4181a3ba
1 changed files with 44 additions and 1 deletions
  1. 44 1
      labkeyBrowser/slicerNetwork.py

+ 44 - 1
labkeyBrowser/slicerNetwork.py

@@ -85,7 +85,7 @@ class labkeyURIHandler(slicer.vtkURIHandler):
     #do this first
         try:
             self.ctx=ssl.SSLContext(ssl.PROTOCOL_SSLv23)
-            self.ctx.load_cert_chain(cert,key,pwd)
+            self.ctx.load_cert_chain(cert,keyfile=key,password=pwd)
             self.ctx.verify_mode=ssl.CERT_REQUIRED
             self.ctx.load_verify_locations(cacert)
         except ssl.SSLError as err:
@@ -324,6 +324,49 @@ class labkeyURIHandler(slicer.vtkURIHandler):
          return None
     #     #remove retrieved file
 
+    def storeNode(self,node,project,dir=None):
+
+        removeFile=True
+        relativePath=project+'/%40files'
+        if not dir==None:
+            relativePath+='/'+dir
+        labkeyPath=self.GetLabkeyPathFromRelativePath(relativePath)
+        print ("Remote: {}").format(labkeyPath)
+      
+        #checks if exists
+        self.mkdir(labkeyPath)
+
+        localPath=self.GetLocalPathFromRelativePath(relativePath)
+        localPath.replace('/',os.path.sep)
+
+        nodeName=node.GetName()
+
+        suffix=".nrrd"
+        if node.__class__.__name__=="vtkMRMLDoubleArrayNode":
+            suffix=".mcsv"
+        if node.__class__.__name__=="vtkMRMLTransformNode":
+            suffix=".h5"
+        fileName=nodeName+suffix
+        file=os.path.join(localPath,fileName)
+        slicer.util.saveNode(node,file)
+        print("Stored to: {}").format(file)
+        f=open(file,"rb")
+
+        f.seek(0,2)
+        sz=f.tell()
+        print("File size in memory: {0}").format(sz)
+        f.seek(0)
+
+        localBuffer=f.read()
+        print("Local buffer size: {}").format(len(localBuffer))
+        remoteFile=labkeyPath+'/'+fileName
+        resp=self.put(remoteFile,localBuffer)
+        print(resp.read())
+        f.close()
+        if removeFile:
+            os.remove(file)
+
+
 
     def remoteDirExists(self,url):
         status,dirs=self.listRemoteDir(url);