[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