[Erp5-report] r9476 - in /erp5/trunk/utils/ooodoc_server: pool.py serw.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Aug 25 23:21:20 CEST 2006


Author: bartek
Date: Fri Aug 25 23:21:17 2006
New Revision: 9476

URL: http://svn.erp5.org?rev=9476&view=rev
Log:
fixed some ugly things

Modified:
    erp5/trunk/utils/ooodoc_server/pool.py
    erp5/trunk/utils/ooodoc_server/serw.py

Modified: erp5/trunk/utils/ooodoc_server/pool.py
URL: http://svn.erp5.org/erp5/trunk/utils/ooodoc_server/pool.py?rev=9476&r1=9475&r2=9476&view=diff
==============================================================================
--- erp5/trunk/utils/ooodoc_server/pool.py (original)
+++ erp5/trunk/utils/ooodoc_server/pool.py Fri Aug 25 23:21:17 2006
@@ -101,7 +101,7 @@
       pids=os.popen('ps -A -o pid,ppid | grep %d | cut -f 1 -d " "' % pid)
       for p in pids:
         lib.log('killing pid '+p.strip(),3)
-	os.kill(int(p),9)
+        os.kill(int(p),9)
       start.startInstance(i)
       # give it time to load before we try to connect
       time.sleep(config.loadtime)

Modified: erp5/trunk/utils/ooodoc_server/serw.py
URL: http://svn.erp5.org/erp5/trunk/utils/ooodoc_server/serw.py?rev=9476&r1=9475&r2=9476&view=diff
==============================================================================
--- erp5/trunk/utils/ooodoc_server/serw.py (original)
+++ erp5/trunk/utils/ooodoc_server/serw.py Fri Aug 25 23:21:17 2006
@@ -30,6 +30,7 @@
 from SimpleXMLRPCServer import *
 from SocketServer import ThreadingMixIn
 import time,threading,base64,os,pdb,sys,socket,traceback,string, random
+import zipfile, cStringIO, glob, re
 import lib
 import config
 import pool
@@ -111,25 +112,26 @@
       if kw.get('filename') is None:
         # we generate a random name mostly because unit tests of ERP5 have a problem with it
         kw['filename']=str(random.random()).split('.')[1]
+      # we have to store in a file for OOo to open
       filename='%d_%s' % (id,self._asciify(kw['filename'])) # in case we have two files of the same name
       filename=self._mkName(filename)
       f=open(filename,'w')
-      f2=open(self._mkName('temp64'),'w')
-      f2.write(kw['data'])
+      #f2=open(self._mkName('temp64'),'w') # for debugging only
+      #f2.write(kw['data'])
+      #f2.close()
       f.write(base64.decodestring(kw['data']))
       f.close()
-      f2.close()
       kw['filename']=filename
     return w
 
   def _safeRemove(self,filename):
     '''remove a file or log warning if none exists'''
     any=False
-    for f in os.listdir(os.path.join(config.basedir,'tmp')):
-      if f.startswith(os.path.basename(filename)): # html formats generate a number of files
-        lib.log('removing %s' % f)
-        #os.remove(self._mkName(f))
-        any=True
+    pth=os.path.join(config.basedir,'tmp',os.path.basename(filename))
+    for f in glob.glob(pth+'*'):
+      lib.log('removing %s' % f)
+      os.remove(self._mkName(f))
+      any=True
     if not any:
       lib.log('no file beginning with %s' % filename,1)
 
@@ -142,10 +144,9 @@
       # because we are in finally, things can be none
       # if there was an exception
       if kw.get('filename') is not None:
-        os.system('rm -f %s*' % self._mkName(kw['filename']))
-        #self._safeRemove(self._mkName(kw['filename']))
-      #if kw.get('newfilename') is not None:
-        #self._safeRemove(self._mkName(kw['newfilename']))
+        self._safeRemove(self._mkName(kw['filename']))
+      if kw.get('newfilename') is not None:
+        self._safeRemove(self._mkName(kw['newfilename']))
     finally:
       if w is not None: 
         w.setFree()
@@ -173,18 +174,21 @@
               tozip=False
             if tozip:
                 #first delete the original
-                # XXX rewrite to use zipfile and os filesystem layer
                 fname=kw['filename']
                 fullname=self._mkName(fname)
                 os.remove(fullname)
-                zipname=fullname+'.zip'
-                zipwildcard=fullname+'*'
-                cmd='mv %s.%s %s.html' % (fullname,kw['extension'],fullname)
-                res=os.system(cmd)
-                cmd='zip -j %s %s' % (zipname,zipwildcard)
-                res=os.system(cmd)
-                kw['data']=base64.encodestring(open(zipname).read())
-                res=os.system('rm %s' % zipname)
+                arch=cStringIO.StringIO()
+                pack=zipfile.ZipFile(arch,'a')
+                r=re.compile(kw['extension']+'$')
+                for f in glob.glob(fullname+'*'):
+                  name=os.path.basename(f)
+                  # fix html extension
+                  name=r.sub('html',name)
+                  pack.write(f,name)
+                pack.close()
+                arch.seek(0)
+                kw['data']=base64.encodestring(arch.read())
+                arch.close()
                 kw['mime']='application/zip' # generation returns mime type
             else:
               kw['data']=base64.encodestring(open(self._mkName(kw['newfilename'])).read())




More information about the Erp5-report mailing list