how to decode base64 in DTML?
Hi all, Would you like to help me with decoding base64 string, please? I was try many ways (*), but no with success, but import cStringIO import mimetools import binascii binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n') in commandline python works OK. (*)here are some examples: <dtml-var "_.base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "'YWxla2liYW5nb0B6dWcuY3o=\n'.base64.decode()"> <dtml-var "mimetools.base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_mimetools.base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_.mimetools.base64.decode('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_.base64.decodestring('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "mimetools.base64.decodestring('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_mimetools.base64.decodestring('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_.mimetools.base64.decodestring('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_.binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "_a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')"> <dtml-var "'YWxla2liYW5nb0B6dWcuY3o=\n'.binascii.a2b_base64()"> <dtml-var "'YWxla2liYW5nb0B6dWcuY3o=\n'.a2b_base64()"> <dtml-var "_.binascii('YWxla2liYW5nb0B6dWcuY3o=\n').a2b_base64()"> <dtml-var "_binascii('YWxla2liYW5nb0B6dWcuY3o=\n').a2b_base64()"> <dtml-var "binascii('YWxla2liYW5nb0B6dWcuY3o=\n').a2b_base64()"> Many thanks for your help, JL.
--On 4. Mai 2006 20:42:08 +0200 Jaroslav Lukesh <lukesh@seznam.cz> wrote:
Hi all,
Would you like to help me with decoding base64 string, please?
I was try many ways (*), but no with success, but
import cStringIO import mimetools import binascii binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')
in commandline python works OK.
Move such code inside a PythonScript..such code does not belong into DTML.. it just bad style. -aj -- ZOPYX Ltd. & Co. KG - Charlottenstr. 37/1 - 72070 Tübingen - Germany Web: www.zopyx.com - Email: info@zopyx.com - Phone +49 - 7071 - 793376 E-Publishing, Python, Zope & Plone development, Consulting
From: Andreas Jung [mailto:lists@zopyx.com]
import cStringIO import mimetools import binascii binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')
in commandline python works OK.
Move such code inside a PythonScript..such code does not belong into DTML.. it just bad style.
I was try this PythonScript (parameter: xemail): import cStringIO import mimetools from Products.PythonScripts.Utility import allow_module allow_module("base64") xe=xemail + '=\n' print xe.decode('base64') return printed ... but it give me import error (bottom of that page). So I try to write External method. Many rewrites, many tries, here are working one - note that allow_module does not work: import binascii def preved64(xemail): xe=xemail + '=\n' return binascii.a2b_base64(xe) Using: <dtml-var "externalmethodname('kjsdjhf_base64_lkskd')"> Great thanks to all!!! JL. ---------------------------------------- <P><STRONG>ImportError</STRONG></P> Sorry, a site error occurred.<p> <!-- Traceback (innermost last): File D:\zope\251\lib\python\ZPublisher\Publish.py, line 150, in publish_module File D:\zope\251\lib\python\ZPublisher\Publish.py, line 114, in publish File D:\zope\251\lib\python\Zope\__init__.py, line 159, in zpublisher_exception_hook (Object: zzzkusebni) File D:\zope\251\lib\python\ZPublisher\Publish.py, line 98, in publish File D:\zope\251\lib\python\ZPublisher\mapply.py, line 88, in mapply (Object: skript) File D:\zope\251\lib\python\ZPublisher\Publish.py, line 39, in call_object (Object: skript) File D:\zope\251\lib\python\Shared\DC\Scripts\Bindings.py, line 252, in __call__ (Object: skript) File D:\zope\251\lib\python\Shared\DC\Scripts\Bindings.py, line 283, in _bindAndExec (Object: skript) File D:\zope\251\lib\python\Products\PythonScripts\PythonScript.py, line 302, in _exec (Object: skript) (Info: ({'script': <PythonScript instance at 02A97E50>, 'context': <Folder instance at 0295ADA0>, 'container': <Folder instance at 0295ADA0>, 'traverse_subpath': []}, ('YWxla2liYW5nb0B6dWcuY3o',), {}, None)) File Script (Python), line 19, in skript File D:\zope\251\lib\python\AccessControl\ZopeGuards.py, line 151, in guarded_import ImportError: import of "Products.PythonScripts.Utility" is unauthorized
On Thu, May 04, 2006 at 10:22:25PM +0200, Jaroslav Lukesh wrote:
From: Andreas Jung [mailto:lists@zopyx.com]
import cStringIO import mimetools import binascii binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')
in commandline python works OK.
Move such code inside a PythonScript..such code does not belong into DTML.. it just bad style.
I was try this PythonScript (parameter: xemail):
import cStringIO import mimetools from Products.PythonScripts.Utility import allow_module
I think you're confused about this... allow_module has to be used in filesystem Product code *so that* you can import other stuff into Python Scripts. You can't use allow_module *inside* a Python Script, that would defeat the whole purpose :) -- Paul Winkler http://www.slinkp.com
Jaroslav Lukesh wrote:
From: Andreas Jung [mailto:lists@zopyx.com]
import cStringIO import mimetools import binascii binascii.a2b_base64('YWxla2liYW5nb0B6dWcuY3o=\n')
in commandline python works OK.
Move such code inside a PythonScript..such code does not belong into DTML.. it just bad style.
I was try this PythonScript (parameter: xemail):
import cStringIO import mimetools from Products.PythonScripts.Utility import allow_module allow_module("base64")
xe=xemail + '=\n' print xe.decode('base64') return printed
... but it give me import error (bottom of that page).
So I try to write External method. Many rewrites, many tries, here are working one - note that allow_module does not work:
import binascii def preved64(xemail): xe=xemail + '=\n' return binascii.a2b_base64(xe)
Using: <dtml-var "externalmethodname('kjsdjhf_base64_lkskd')">
I'd just use "base64encodedstring".decode("base64") since this is part of the unicode api (see "rot13" and such for other excotic "encodings") Regards Tino
bounces+lsh=wo.cz@zope.org] On Behalf Of Igor Stroh
Jaroslav Lukesh wrote:
import cStringIO import mimetools import binascii
[...]
<dtml-var "'YWxla2liYW5nb0B6dWcuY3o=\n'.decode('base64')">
Thank you - it is exact what I need, but it does not have rights to make that conversion - see bottom. So only way is now to add this rights into dtml - via external method only, because in Python script it gives me the same guard error. Parameter:xemail import cStringIO import mimetools xe=xemail + '=\n' print xe.decode('base64') return printed Thanks, many thanks, I was little to learn how to use python scripts in zope :o) So I dive into external method. Many thanks,JL. Error from DTML: <P><STRONG>AttributeError</STRONG></P> Sorry, a site error occurred.<p> <!-- Traceback (innermost last): File D:\zope\251\lib\python\ZPublisher\Publish.py, line 150, in publish_module File D:\zope\251\lib\python\ZPublisher\Publish.py, line 114, in publish File D:\zope\251\lib\python\Zope\__init__.py, line 159, in zpublisher_exception_hook (Object: zzzkusebni) File D:\zope\251\lib\python\ZPublisher\Publish.py, line 98, in publish File D:\zope\251\lib\python\ZPublisher\mapply.py, line 88, in mapply (Object: test) File D:\zope\251\lib\python\ZPublisher\Publish.py, line 39, in call_object (Object: test) File D:\zope\251\lib\python\OFS\DTMLMethod.py, line 127, in __call__ (Object: test) File D:\zope\251\lib\python\DocumentTemplate\DT_String.py, line 473, in __call__ (Object: test) File D:\zope\251\lib\python\DocumentTemplate\DT_Util.py, line 159, in eval (Object: 'YWxla2liYW5nb0B6dWcuY3o=\n'.decode('base64')) File <string>, line 1, in f File D:\zope\251\lib\python\AccessControl\DTML.py, line 29, in guarded_getattr (Object: test) File D:\zope\251\lib\python\AccessControl\ZopeGuards.py, line 47, in guarded_getattr AttributeError: decode
participants (5)
-
Andreas Jung -
Igor Stroh -
Jaroslav Lukesh -
Paul Winkler -
Tino Wildenhain