[Zope] dollars-and-cents display fails

Greg Fischer retheoff at gmail.com
Sat May 14 19:45:52 EDT 2005


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 Fischer
> > 1st Byte Solutions
> > http://www.1stbyte.com
> >
> 
> --
> Greg Fischer
> 1st Byte Solutions
> http://www.1stbyte.com
> 


-- 
Greg Fischer
1st Byte Solutions
http://www.1stbyte.com


More information about the Zope mailing list