[Zope] Pass <dtml-var sequence-item> as parameter to External Method

Thomas G. Apostolou thomas.info at hol.gr
Wed Oct 19 10:44:41 EDT 2005


Αρχικό μήνυμα από  Tino Wildenhain <tino at wildenhain.de>:

> Thomas G. Apostolou schrieb:
> > Αρχικό μήνυμα από  Tino Wildenhain <tino at wildenhain.de>:
> > 
> > 
> >>Thomas G. Apostolou schrieb:
> >>
> >>>I have an External Method "CharSetConv" that get a
> >>>String_To_Be_Converted, its encoding and the encoding to convert
> >>
> >>it
> >>
> >>>to.
> >>>
> >>>I call it like this:
> >>><dtml-in sequence-item>
> >>>        <td><dtml-var expr="CharSetConv(_,
> >>
> >>'String_To_Be_Converted',
> >>
> >>>'ISO-8859-7', 'UTF-8')"> </td>
> >>>      </dtml-in>
> >>>but in the place of 'String_To_Be_Converted' i want to pass
> >>
> >><dtml-var
> >>
> >>>sequence-item>, and i can not find the way to do so.
> >>>i have tried to write it like:
> >>><dtml-in sequence-item>
> >>>        <td><dtml-var expr="CharSetConv(_, '<dtml-var
> >>
> >>sequence-item>',
> >>
> >>>'ISO-8859-7', 'UTF-8')"> </td>
> >>>      </dtml-in>
> >>>but does not work
> >>>Can anyone help please?
> >>
> >>Well, DTML sux for a reason ;)
> >>
> >>but <dtml-in sequence-item> makes no sense unless you have list in
> >>list.
> >>
> >>You dont need an external method to convert between charsets:
> >>
> >><dtml-var
> >>    expr="_['sequence-item'].decode('iso-8859-7').encode('utf-8')"
> >
> >>
> >>HTH
> >>Tino
> > 
> > 
> > Dear friend thanks alot fro your reply.
> > I do have a lists in list
> > your sugestion return an error
> > 
> > Site error This site encountered an error trying to fulfill your
> > request. The errors were: 
> > Error Type 
> > AttributeError 
> > Error Value 
> > 'NoneType' object has no attribute 'decode' 
> > Request made at 
> > 2005/10/19 17:17:03.485 GMT+3 
> > 
> > what is wrong?
> 
> Looks like you have a None object among your strings in the list.
> If so, you can either do:
> 
> <dtml-if sequence-item> <dtml-var> 
> expr="_['sequence-item'].decode('iso-8859-7').encode('utf-8')" >
> </dtml-if>
> 
> which is the quick & dirty variant, or:
> <dtml-var expr="(_['sequence-item'] or 
> "").decode('iso-8859-7').encode('utf-8')" >
> 
> Which uses a "boolean trick".
> 
> HTH
> Tino
> 
> PS: get used to python scripts where this is a lot better
> to write

I agree with you and i would write this in python script (if this was
not an emegerncy and i was not a niewbie)
There one more thing to solve. Not all my elements in the list are
strings. If i was writing python i would use
for i,elem in enumerate(data):
    for j,ele in enumerate(elem):
        if isinstance(ele,(str,unicode)):
            print unicode(ele,'iso-8859-7').encode('utf-8')
what is the corresponding dtml-if to check if sequence-item is a
string?

THANK YOU VERY MUCH ALLREADY!!!



Thomas G. Apostolou
Software Engineer
Θωμάς Γ. Αποστόλου
Μηχανικός Λογισμικού


More information about the Zope mailing list