On Dec 11, 5:49 pm, mdipierro <[email protected]> wrote:
> 1) use your html instead of {{=form}} for but in the form include
> {{if form.errors.email:}}{{=form.errors.email}}{{pass}}
> {{=form.hidden_field()}}
I'm trying to do the same kind of thing.
I tried using
form=SQLFORM(db.gis_layer)
However I am missing one of the hidden_fields that I need for T2
conflict detection:
<Storage {'modified_on': 'must be YYYY-MM-DD HH:MM:SS!'}>
(Also, all errors are just getting reported in this ugly way in the
form.errors section & not against each field)
If I don't have validation errors then I get this error when it
attempts to update the database:
File "C:\Bin\web2py\applications\sahana/controllers/gis.py", line
184, in update_layer
if form.accepts(request.vars,session,keepvalues=True):
File "C:\Bin\web2py\gluon\sqlhtml.py", line 229, in accepts
raise SyntaxError, "user is tampering with form"
So I tried using:
form=t2.update(db.gis_layer)
Then I don't get any error reporting at all (the form just resets if
there is 1).
If I don't have validation errors then I get the same error when it
attempts to update the database:
File "C:\Bin\web2py\applications\sahana\modules\t2.py", line 457, in
update
if form.accepts(request.vars,session):
File "C:\Bin\web2py\gluon\sqlhtml.py", line 229, in accepts
raise SyntaxError, "user is tampering with form"
I'm guessing that this is because I am building a form from multiple
tables.
This just isn't supported by either SQLFORM or T2 is it?
In which case I need to build my own CRUD...which is probably best
done by extending the T2 class, since I want to use some of it's
functionality.
As a 1st go, I'm doing it within my Controller using plain old FORM:
form=FORM(INPUT(_name="name"),INPUT(_name="description"),SELECT
(_name="type"),SELECT(_name="subtype"),INPUT(_name="priority"),INPUT
(_name="enabled"),INPUT(_type="submit",_value=T("Save")))
However form.accepts() always thinks things are fine, yet nothing is
ever saved to the database (& I also get no errors reported - like the
T2 experiment).
Help very much appreciated for both getting errors displayed (when
there are some) & for getting the database actually updated.
(Perhaps this is the missing T2 hidden fields?)
Here is my processing logic:
# Get a pointer to the Layer record (for getting default values out &
saving updated values back)
layer=db(db.gis_layer.id==t2.id).select()[0]
if form.accepts(request.vars,session,keepvalues=True):
layer.update(
name=form.vars.name,
description=form.vars.description,
type=form.vars.type,
priority=form.vars.priority,
enabled=form.vars.enabled
)
type_new=db(db.gis_layer_type.id==form.vars.type).select()[0].name
if type_new=="openstreetmap":
db(db['gis_layer_%s' % type_new].layer==t2.id).update(
type=form.vars.subtype
)
elif type_new=="google":
db(db['gis_layer_%s' % type_new].layer==t2.id).update(
type=form.vars.subtype
)
db(db.gis_key.service==type_new).update(
key=form.vars.key
)
response.confirmation=T("Layer updated")
elif form.errors:
response.error=T("Form is invalid")
else:
response.notification=T("Please fill the form")
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---