Thanks to all for your input and suggestions.  I've tried to make the
changes without effecting the functionality or the goal of using the
'crud' controllers.

Massimo - I'll repost the application with the changes below.

Alvaro - I've considered abandoning the use of the crud controllers
and use 'form', but I've gone this far and it has become a challenge,
plus I hope to add to the knowledge base about the use of the crud
code.

dlypka - I've taken your suggestion and (essentially) copied the code
from the {{=form}} to be as sure as I could to duplicate the layout

John - I've incorporated the form.custom.inpval.  When I looked at
what was generated by {{=form}} it didn't seem to need the form
action.  I may be missing something, but everything works except the
response.error display, so I'm a little confused.  Massimo has asked
to see the updated version of the code, so I'll let him take a look
before I add too much more.

Here is the MVC.  The view contains both custom code and {{=form}}.
It doesn't make any difference which input fields or submit button is
used, the data is handled properly.  The problem is, if you leave
'testfield1' blank, only the {{=form}} version displays the 'cannot be
empty' message.  The error is not displayed in the custom form.  The
code for the labels and fields are copied directly from the {{=form}}
source of the page and modified to display the
form.custom.inpval.fieldname variables.

Model
--------
try:
    from gluon.contrib.gql import *  # if running on Google App Engine
except:
    db = SQLDB('sqlite://storage.db')  # if not, use SQLite or other
DB
else:
    db = GQLDB()  # connect to Google BigTable
    session.connect(request, response, db=db)  # and store sessions
there
##
db.define_table('testtable',SQLField('testfield1','string'),SQLField
('testfield2','string'))
db.testtable.testfield1.requires=IS_NOT_EMPTY()

from gluon.tools import Mail, Auth, Crud     # new in web2py 1.56
auth=Auth(globals(),db)                      # authentication/
authorization
auth.define_tables()                         # creates all needed
tables
crud=Crud(globals(),db)                      # for CRUD helpers using
auth
crud.settings.update_next = URL(r=request, f='index')

Controller
------------
def index():
    session.action = ""
    redirect(URL(r=request,f='testdata'))

@auth.requires_login()
def testdata():
    setsubmit()
    if request.args: id = request.args[0]
    else: id = 3   # Included for testing
    if session.action == "create":
        return dict(form=crud.create(db.testtable))
    elif session.action == "update":
        return dict(form=crud.update(db.testtable,id))
    else:
        return dict(form=crud.read(db.testtable,id))

def setsubmit():
    if request.vars.submit1: session.action = "create"
    if request.vars.submit2: session.action = "update"
    if request.vars.submit3: session.action = ""

def data():
    response.view="%s/%s/%s.html" %
(request.controller,request.function, request.args[0])
    return dict(form=crud())

def user():
    return dict(form=auth())

Views
------
( The following is default/testdata.html )

{{extend 'layout.html'}}
 <h1>Testdata
{{if session.action == "update":}}
Update
{{elif session.action == "create":}}
Add
{{pass}}
</h1>
{{=form}}
=======================================
<form action="" enctype="multipart/form-data" method="post">
<table>
<tr id="testtable_testfield1__row">
    <td><label for="testtable_testfield1"
id="testtable_testfield1__label">Testfield1: </label></td>
    {{if session.action in ["update","create"]:}}
    <td><input class="string" id="testtable_testfield1"
name="testfield1" type="text"
value="{{=form.custom.inpval.testfield1}}" /></td>
    {{else:}}
    <td>{{=form.custom.inpval.testfield1}}</td>
    {{pass}}
    <td></td>
</tr>
<tr>
    <td><label >Testfield2:</label></td>
    {{if session.action in ["update","create"]:}}
    <td><input class="string" id="testtable_testfield2"
name="testfield2" type="text"
value="{{=form.custom.inpval.testfield2}}" /></td>
    {{else:}}
    <td>{{=form.custom.inpval.testfield2}}</td>
    {{pass}}
    <td></td>
</tr>
{{if session.action == "update":}}
<tr id="delete_record__row">
    <td><label for="delete_record" id="delete_record__label">Check to
delete:</label></td>
    <td><input class="delete" id="delete_record"
name="delete_this_record" type="checkbox" value="on" /></td>
    <td></td>
</tr>
{{pass}}
</table>
{{include 'buttons.html'}}

( The following is buttons.html)

<br />
{{if session.action in ["update","create"]:}}
    <input type="submit" name="submit" value="Submit" />
    <input type="submit" name="submit3" value="Cancel" />
{{else:}}
    <input type="submit" name="submit1"
value="&nbsp;&nbsp;Add&nbsp;&nbsp;&nbsp;" />
    <input type="submit" name="submit2" value="Update" />
    <input type="submit" name="submit3" value="Cancel" />
{{pass}}
{{=form.hidden_fields()}}

++++++++++++++ End of MVC ++++++++++++++++++++

Thanks again to all.

Regards,
Gary

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to