This thread might interest you : http://groups.google.com/group/web2py/browse_thread/thread/f35eeb3c78b90fbd/3c57edf44009d62d?lnk=gst&q=Re%3A+1.99+gluon%2Ftools.py+replace_id+mishandling+url+%5BSOLVED%5D#3c57edf44009d62d
Richard On Mon, Nov 7, 2011 at 11:38 AM, Richard Vézina <ml.richard.vez...@gmail.com > wrote: > Did you have a look of what is coming out request.vars.membid and > request.vars.next... I maybe not what you expect that you get and it may > cause the problem... > > If you test your controller manually does it work properly? If so, it must > be a wrong type coming from your request.vars, you can try to convert to > the proper type int(request.vars.membid) for example. > > Richard > > > On Mon, Nov 7, 2011 at 10:44 AM, David Manns <dgma...@gmail.com> wrote: > >> I don't think its to do with the model (the table in question has no >> float or decimal in any case). >> >> I think it has to do with the handling of next= in crud. >> >> The controller code (somewhat simplified, but still reproduces the >> problem) is: >> >> def memberform(): >> if request.vars.membid: >> next = URL('memberform', >> vars=dict(membid=request.vars.membid, >> next=request.vars.next)) >> form = crud.update(db.Members, request.vars.membid, >> next=next) >> else: >> form = crud.create(db.Members, next=request.vars.next) >> return dict(form=form, next=request.vars.next, >> membid=request.vars.membid) >> >> The first time in, with membid the ID of an existing record, the >> record is correctly displayed via the crud.update() form. When a >> field is edited and the form submitted, the failure occurs. >> >> On Oct 28, 7:59 am, Richard Vézina <ml.richard.vez...@gmail.com> >> wrote: >> > Without model I think it difficult to debug... >> > >> > But the problem come from a float type error, so there must be a failing >> > constrain on one of your field... Look at you member model if there is a >> > double type field or decimal and make sure you have a validator with >> > appropriate constraining domain... >> > >> > doubleIS_FLOAT_IN_RANGE(-1e100, >> 1e100)decimal(n,m)IS_DECIMAL_IN_RANGE(-1e100, >> > 1e100) >> > Richard >> > >> > >> > >> > >> > >> > >> > >> > On Sat, Oct 15, 2011 at 10:15 AM, David Manns <dgma...@gmail.com> >> wrote: >> > > This problem appeared when I moved my application from x to 1.99.2. >> > >> > > I use crud.update to display and modify a member directory record. >> > > Selecting and displaying the record works, but when submitting an >> updated >> > > record I get a failure: >> > >> > > TRACEBACK >> > >> > > 1. >> > > 2. >> > > 3. >> > > 4. >> > > 5. >> > > 6. >> > > 7. >> > > 8. >> > > 9. >> > > 10. >> > > 11. >> > > 12. >> > >> > > Traceback (most recent call last): >> > > File "C:\Documents and Settings\David Manns\My >> Documents\ocsnedb\gluon\restricted.py", line 194, in restricted >> > > raise >> > > File "C:/Documents and Settings/David Manns/My Documents/ocsnedb >> saved/applications/init/controllers/default.py" < >> http://127.0.0.1:8000/admin/default/edit/init/controllers/default.py>, >> line 889, in <module> >> > > File "C:\Documents and Settings\David Manns\My >> Documents\ocsnedb\gluon\globals.py", line 149, in <lambda> >> > > File "C:/Documents and Settings/David Manns/My Documents/ocsnedb >> saved/applications/init/controllers/default.py" < >> http://127.0.0.1:8000/admin/default/edit/init/controllers/default.py>, >> line 273, in memberform >> > > deletable = False, next=next, onvalidation=setmodified) >> > > File "C:\Documents and Settings\David Manns\My >> Documents\ocsnedb\gluon\tools.py", line 2994, in update >> > > formname=DEFAULT, >> > > File "C:\Documents and Settings\David Manns\My >> Documents\ocsnedb\gluon\tools.py", line 79, in replace_id >> > > TypeError: float argument required >> > >> > > The controller code looks like: >> > >> > > def memberform(): >> > > chkurlreader() >> > > if request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.membid: >> > > member=db.Members[request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid] >> > > db.Members.Email.comment = A < >> http://127.0.0.1:8000/examples/global/vars/A>('Add/Edit/Delete Email >> Address(es)', >> > > _href=URL >> > > <http://127.0.0.1:8000/examples/global/vars/URL>('memberemail', >> vars=dict(membid=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid, >> next=request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.next))) >> > > db.Members.Affiliation.comment = A < >> http://127.0.0.1:8000/examples/global/vars/A>('Add/Edit/Delete >> Affiliation(s)', >> > > _href=URL >> > > <http://127.0.0.1:8000/examples/global/vars/URL>('memberaffiliation', >> vars=dict(membid=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid, >> next=request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.next))) >> > > if member.Status in ('Full', 'Student'): >> > > db.Members.Paiddate.comment = A < >> http://127.0.0.1:8000/examples/global/vars/A>('Process dues payment', >> > > _href=URL < >> http://127.0.0.1:8000/examples/global/vars/URL>('memberdues', >> vars=dict(membid=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid, >> next=request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.next))) >> > > else: >> > > db.Members.Paiddate.comment = 'Only for Full & Student >> Members' >> > > next = URL >> > > <http://127.0.0.1:8000/examples/global/vars/URL>('memberform', >> vars=dict(membid=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid, >> next=request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.next)) >> > > form = crud.update(db.Members, request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.membid, >> > > deletable = False, next=next, >> onvalidation=setmodified) >> > > form[0][-1][1].append(INPUT < >> http://127.0.0.1:8000/examples/global/vars/INPUT >> >(_type="button",_value="Cancel", >> > > _onclick="window.location='%s';"%request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.next)) >> > > else: >> > > db.Members.Email.comment = 'Add email address(es) after creating >> basic record' >> > > db.Members.Affiliation.comment = 'Add affiliation(s) after >> creating basic record' >> > > db.Members.Paiddate.comment = 'Usually set by processing dues >> payment' >> > > form = crud.create(db.Members, next=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.next, >> onaccept=newmember) >> > > form[0][-1][1].append(INPUT < >> http://127.0.0.1:8000/examples/global/vars/INPUT >> >(_type="button",_value="Cancel", >> > > _onclick="window.location='%s';"%request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.next)) >> > > return dict(form=form, next=request < >> http://127.0.0.1:8000/examples/global/vars/request>.vars.next, >> membid=request <http://127.0.0.1:8000/examples/global/vars/request >> >.vars.membid) > > >