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:
> > 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)