[Checkins] SVN: zopyx.smartprintng.client/trunk/ updated
Andreas Jung
andreas at andreas-jung.com
Tue Aug 2 07:21:05 EDT 2011
Log message for revision 122440:
updated
Changed:
U zopyx.smartprintng.client/trunk/README.txt
U zopyx.smartprintng.client/trunk/docs/HISTORY.txt
U zopyx.smartprintng.client/trunk/setup.py
U zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py
-=-
Modified: zopyx.smartprintng.client/trunk/README.txt
===================================================================
--- zopyx.smartprintng.client/trunk/README.txt 2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/README.txt 2011-08-02 11:21:04 UTC (rev 122440)
@@ -9,7 +9,6 @@
=======
This package is licensed under the Zope Public License V 2.1 (ZPL).
-
Contact
=======
Modified: zopyx.smartprintng.client/trunk/docs/HISTORY.txt
===================================================================
--- zopyx.smartprintng.client/trunk/docs/HISTORY.txt 2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/docs/HISTORY.txt 2011-08-02 11:21:04 UTC (rev 122440)
@@ -1,6 +1,11 @@
Changelog
=========
+0.8.0 (2011-08-02)
+------------------
+- obsoleted Proxy() implementation
+- added Proxy2() implementation supporting a standard URL
+
0.7.0 (2011-03-02)
------------------
- removed convertZIP() api method
Modified: zopyx.smartprintng.client/trunk/setup.py
===================================================================
--- zopyx.smartprintng.client/trunk/setup.py 2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/setup.py 2011-08-02 11:21:04 UTC (rev 122440)
@@ -7,7 +7,7 @@
from setuptools import setup, find_packages
import os
-version = '0.7.0'
+version = '0.8.0'
setup(name='zopyx.smartprintng.client',
version=version,
Modified: zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py
===================================================================
--- zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py 2011-08-01 21:02:31 UTC (rev 122439)
+++ zopyx.smartprintng.client/trunk/zopyx/smartprintng/client/zip_client.py 2011-08-02 11:21:04 UTC (rev 122440)
@@ -17,6 +17,7 @@
class Proxy(object):
+ """ THIS IMPLEMENTATION IS OBSOLETE, USE 'Proxy2' INSTEAD """
def __init__(self, host='localhost', port=6543, username='', password=''):
self.host = host
@@ -121,17 +122,103 @@
return result
+class Proxy2(Proxy):
+ """ ZIP Client proxy """
+
+ def __init__(self, url):
+ """ Accepts the url of P&P server as
+ http://user:password@host:port
+ """
+ self.url = url
+ self.setOutputDirectory(os.path.join(tempfile.gettempdir(), 'smartprintng_client', str(time.time())))
+
+ def setOutputDirectory(self, output_directory):
+ if not os.path.exists(output_directory):
+ os.makedirs(output_directory)
+ self.output_directory = output_directory
+
+ def _makeZipFromDirectory(self, directory):
+ """ Generate a ZIP file from a directory containing all its
+ contents. Returns the filename of the generated ZIP file.
+ """
+
+ directory = os.path.abspath(directory)
+ zip_filename = tempfile.mktemp()
+ ZF = zipfile.ZipFile(zip_filename, 'w')
+ for dirname, dirnames, filenames in os.walk(directory):
+ for fname in filenames:
+ arcname = os.path.join(dirname, fname).replace(directory + os.path.sep, '')
+ fullname = os.path.abspath(os.path.join(dirname, fname))
+ ZF.write(fullname, arcname)
+ ZF.close()
+ return zip_filename
+
+ def ping(self):
+ server = xmlrpclib.ServerProxy(self.url + '/ping')
+ return server()
+
+ def availableConverters(self):
+ server = xmlrpclib.ServerProxy(self.url + '/availableConverters')
+ return server()
+
+ def convertZIP2(self, dirname, converter_name='pdf-prince', workdir=None):
+ """ XMLRPC client to SmartPrintNG server """
+
+ zip_filename = self._makeZipFromDirectory(dirname)
+ server = xmlrpclib.ServerProxy(self.url + '/convertZIP')
+ zip_data = server('',
+ base64.encodestring(file(zip_filename, 'rb').read()),
+ converter_name)
+
+ # and receive the conversion result as base64 encoded ZIP archive
+ # (it will contain only *one* file)
+ zip_temp = tempfile.mktemp()
+ file(zip_temp, 'wb').write(base64.decodestring(zip_data))
+
+ result = dict()
+ ZF = zipfile.ZipFile(zip_temp, 'r')
+ for name in ZF.namelist():
+ fullname = os.path.join(workdir or self.output_directory, os.path.basename(name))
+ file(fullname, 'wb').write(ZF.read(name))
+ if name.startswith('output.'):
+ result['output_filename'] = fullname
+ elif name.startswith('conversion-output'):
+ result['conversion_output'] = fullname
+ ZF.close()
+ os.unlink(zip_filename)
+ os.unlink(zip_temp)
+ return result
+
+ def convertZIPandRedirect(self, dirname, converter_name='pdf-prince', prefix=None):
+ """ XMLRPC client to SmartPrintNG server """
+
+ zip_filename = self._makeZipFromDirectory(dirname)
+ server = xmlrpclib.ServerProxy(self.url + '/convertZIPandRedirect')
+ location = server('',
+ base64.encodestring(file(zip_filename, 'rb').read()),
+ converter_name,
+ prefix)
+ os.unlink(zip_filename)
+ return location
+
+ def convertZIPEmail(self, dirname, converter_name='pdf-prince',
+ sender=None, recipients=None, subject=None, body=None):
+
+ zip_filename = self._makeZipFromDirectory(dirname)
+ server = xmlrpclib.ServerProxy(self.url + '/convertZIPEmail')
+ result = server.convertZIPEmail('',
+ base64.encodestring(file(zip_filename, 'rb').read()),
+ converter_name,
+ sender,
+ recipients,
+ subject,
+ body)
+ return result
+
+
if __name__ == '__main__':
- # usage: convertZIP <dirname>
-
- proxy = Proxy(host='localhost', port=6543)
+
+ proxy = Proxy2('http://localhost:6543')
print proxy.ping()
print proxy.availableConverters()
- print proxy.convertZIP(sys.argv[1])
print proxy.convertZIP2(sys.argv[1])
-# print proxy.convertZIPEmail(sys.argv[1],
-# sender='foo at bar.org',
-# recipients='foo at bar.org',
-# subject=unicode('üöä', 'latin1').encode('utf-8'),
-# body=unicode('üöä', 'latin1').encode('utf-8'))
-
More information about the checkins
mailing list