[Zope] dollars-and-cents display fails

David H bluepaul at earthlink.net
Sat May 14 20:13:16 EDT 2005


Greg Fischer wrote:

>I guess my quick fix wont work.  Well, it fixes the fmt for decimals,
>but there's more to the issue.  Statistical summaries, total, sum dont
>work either.
>In my dtml-in I might have this:
><dtml-var total-decimalcolumn>
>or
><dtml-var sum-decimalcolumn>
>
>These dont work with Mysql 5.0.4.  So, what do we have to change in
>the Mysql DA or maybe the Mysql-python to fix this?
>
>If I find anything, I'll post more.
>
>On 5/13/05, Greg Fischer <retheoff at gmail.com> wrote:
>  
>
>>OK well, I fixed it. At least on "My" zope server.
>>
>>The function for dollars-and-cents in DT_Var.py was like this:
>>def dollars_and_cents(v, name='(Unknown name)', md={}):
>>   try: return "$%.2f" % v
>>   except: return ''
>>
>>I changed it to this:
>>def dollars_and_cents(v, name='(Unknown name)', md={}):
>>   try: return "$%.2f" % float(v)
>>   except: return ''
>>
>>Problem solved.  I just tested it in Mysql 5.0.0 and 5.0.4, and it
>>works great.  I'll setup the rest of my app and test some more to make
>>sure I am not missing something. If there are any problems I'll post
>>more details.
>>
>>Is this something that could be posted on the Zope Collector?  It
>>should probably be tested on lots of other Db's I bet.  But, one
>>question I have, should this be handled in the Mysql DA?
>>
>>On 5/13/05, Greg Fischer <retheoff at gmail.com> wrote:
>>    
>>
>>>http://dev.mysql.com/doc/mysql/en/numeric-type-overview.html
>>>That's it right there!  Before 5.0.3, they were unpacked, meaning
>>>saved like a char.  Now they are packed, fixed point numbers.  This is
>>>screwing up the python functions for fmt.
>>>
>>>Well, I was trying to NOT redo all that code, but looks like I will
>>>have to if I want to run the new mysql.  I have tons of reports using
>>>dtml and fmt.   I think I'll stick with 5.0.0 for now until I have
>>>time for that. (spent it all trying to figure out where my problem
>>>was!)
>>>
>>>Though, I might just switch to Firebird if I have to do some code
>>>changing on my app anyway.  It's a bit more mature than Mysql's new
>>>stuff. (considering it's still in beta)  Mysql is just so easy.
>>>
>>>---------
>>>
>>>
>>>On 5/13/05, Greg Fischer <retheoff at gmail.com> wrote:
>>>      
>>>
>>>>ok, lots of testing, and I have found that this is related to Mysql 5.0.4.
>>>>
>>>>I compiled and installed Mysql 5.0.0 and the problem does not exist. I
>>>>guess means that it started in 5.0.1 or higher.  I read through the
>>>>change logs and saw a couple of items related to float values on 5.0.3
>>>>and 5.0.4, but I dont have any idea if those are causing the issue.
>>>>
>>>>So, I dont know where to go next.  I can post this info on the mysql
>>>>lists, but I only see the problem in Zope.  Python, or at least the
>>>>MysqlDA, retrieves the value just fine.  I only get the problem if
>>>>using a fmt option on Zope.
>>>>Here's a recap:
>>>>-- I can use Zope 2.7.4 with Mysql 5.0.4 on Windows (using Egenix ODBC
>>>>DA) and there is no issue.
>>>>-- I can use Zope 2.7.3 with Mysql 5.0.0 on Linux (Zmysqlda 2.0.9b3,
>>>>Mysql-python1.2.0,Python 2.3.4) and there is no issue.
>>>>-- When using Zope 2.7.3 with same setup as before, but with Mysql
>>>>5.0.4, problem exists.
>>>>-- Zope 2.7.6 has same issue.
>>>>
>>>>I tried doing a simple dtml:
>>>><dtml-call "REQUEST.set('dec',10.23)">
>>>><dtml-var dec><br>
>>>><dtml-var dec fmt="dollars-and-cents"><br>
>>>>
>>>>This works just fine.  But when pulling 'dec' from Mysql, dtml wont
>>>>render it if using fmt.
>>>>
>>>>I dont have to use Mysql 5.x.  It's just that I already have the app
>>>>running on it, and I'd like to start testing the stored procedures and
>>>>other useful features.
>>>>
>>>>Sorry for the long post.  I just want to give as much info as
>>>>possible.  Thank you for any help!
>>>>
>>>>Greg
>>>>
>>>>
>>>>On 5/12/05, Greg Fischer <retheoff at gmail.com> wrote:
>>>>        
>>>>
>>>>>Oh, it is a decimal(15,2) column.  (all of them are)  Just thought I'd
>>>>>mention everything too... Running Ubuntu 5.0.4, has the Python 2.4.1
>>>>>package installed, but I have Python 2.3.4 compiled and installed
>>>>>separately for Zope.  Zope is compiled with the --with-python flag.
>>>>>
>>>>>Just tried your suggestion, commenting the 'conv[FIELD_TYPE.DECIMAL] =
>>>>>float' line, restart Zope, still have the issue.
>>>>>
>>>>>So, I have the older Python, which I used to have.  I could try
>>>>>loading an older Zope, but what I might try is loading the MySQL
>>>>>5.0.0, which I had before.  At least I can hopefully find out which is
>>>>>causing my problem.  However, I have Zope 2.7.4 with MySQL 5.0.4 and
>>>>>it works fine, but on Windows using the Egenix adapter.  Now, I cant
>>>>>remember what I had for the mysql-python version, it's on the other
>>>>>server at my clients site. (cant get to it right now)
>>>>>
>>>>>I guess one of my main questions too is, would Zope be getting
>>>>>anything from the 2.4.1 Ubuntu packages that are installed if I
>>>>>compiled it with the 2.3.4 python?  (mysql-python is installed
>>>>>correctly on 2.3.4 too)
>>>>>
>>>>>On 5/12/05, Andy Dustman <farcepest at gmail.com> wrote:
>>>>>          
>>>>>
>>>>>>On 5/12/05, Greg Fischer <retheoff at gmail.com> wrote:
>>>>>>            
>>>>>>
>>>>>>>Thanks Andy.  I do have those versions.  But Python is 2.3.5 because I
>>>>>>>didnt want to move to 2.4.x as I think I read something in the README
>>>>>>>for Zope stating it was not tested for compatibility. (right?)  I
>>>>>>>guess my thought is... Does 2.3.5 have the same issue as 2.4 regarding
>>>>>>>the decimals?  For now, I am just going to setup 2.3.4 and run with
>>>>>>>it.
>>>>>>>              
>>>>>>>
>>>>>>The Python decimal type is new in 2.4.
>>>>>>
>>>>>>I don't think you've actually said whether or not you are actually
>>>>>>using a DECIMAL column.
>>>>>>
>>>>>>I had forgotten that ZMySQLDA-2.0.9b3 always returns DECIMAL columns
>>>>>>as Python float. If you look in ZMySQLDA/db.py, you can see where it
>>>>>>does this in the DB class. You could try commenting this line out,
>>>>>>which will cause it to be returned as a string, and restarting Zope.
>>>>>>It's something to try, at least.
>>>>>>--
>>>>>>Computer interfaces should never be made of meat.
>>>>>>http://www.terrybisson.com/meat.html
>>>>>>_______________________________________________
>>>>>>Zope maillist  -  Zope at zope.org
>>>>>>http://mail.zope.org/mailman/listinfo/zope
>>>>>>**   No cross posts or HTML encoding!  **
>>>>>>(Related lists -
>>>>>> http://mail.zope.org/mailman/listinfo/zope-announce
>>>>>> http://mail.zope.org/mailman/listinfo/zope-dev )
>>>>>>
>>>>>>            
>>>>>>
>>>>>--
>>>>>Greg Fischer
>>>>>1st Byte Solutions
>>>>>http://www.1stbyte.com
>>>>>
>>>>>          
>>>>>
>>>>--
>>>>Greg Fischer
>>>>1st Byte Solutions
>>>>http://www.1stbyte.com
>>>>
>>>>        
>>>>
>  
>
Greg,
Have you contacted the mySQL product maintainer?  This is not a Zope 
community issue.  Which is to say, many of us have the instinct to help 
but simply do not use mySQL and therefore have nothing to suggest.  
Other than what is obvious:
a) contact the maintainer
b) consider changing to a "well-maintained" data adapater.

David



More information about the Zope mailing list