In db.py:
db.define_table('job',
Field('filename', 'string', label='File Name',
requires = IS_NOT_EMPTY()),
Field('total_duration_minutes', 'integer',
label ='Total Duration (minutes)', requires = IS_NOT_EMPTY()))
db.define_table('worker', Field('filename', 'string', requires =
IS_IN_DB(db, 'job.filename'), Field('name','string',
requires=IS_NOT_EMPTY())))
Every job may be assigned to multiple workers (one-many relationship).
Controller (default.py) code:
def assign():
"""
assign a newly created job to workers <br/>
"""
jobform = SQLFORM(db.job, request.args[0], readonly = True) #
request.args[0] is the id of the current job
# fetch existing workers
records = db((db.worker.filename == request.args[1])).select()
# add the above to the read-only form
for r in range(len(records)):
readonlyrecord = TR(TD(str(r+1)), TD(records[r].name), TD
(records[r].filename))
jobform[0].append(readonlyrecord)
# add an additional row to the form for assigning transcribers
form = SQLFORM(db.worker, keepopts=['filename'])
newrow = TR(TD(''),SELECT(form.custom.inpval.filename,
name='filename'), \
INPUT(_type='text',name='name', requires=IS_NOT_EMPTY()), INPUT
(_type='submit', _value='Add another'))
jobform[0].append(newrow)
if form.accepts(request.vars, session):
session.flash = 'Added worker!'
db.worker.insert(job_id = request.args[0], name =
jobform.vars.name) # control never reaches here
redirect(URL(r=request, f='assign', args=request.args))
elif form.errors:
session.flash = 'Some error occured.'
return dict(jobform = jobform)
There may be some typos, please use your judgement to correct them. :)
On Jan 25, 6:52 pm, mdipierro <[email protected]> wrote:
> I need to try this. Can you post the entire action and a sample (one
> field) child and parent tables?
>
> On Jan 25, 5:36 am, Adi <[email protected]> wrote:
>
>
>
> > Corrections: form1 = SQLFORM(db.parent, record, readonly=True)
>
> > On Jan 25, 4:35 pm, Adi <[email protected]> wrote:
>
> > > Hi all,
>
> > > I'm trying to build a custom form in this fashion:
>
> > > There's a parent table and a child table (many one relationship). I've
> > > created a read-only SQLFORM for a record of the parent, and then I'm
> > > trying this:
>
> > > form1 = SQLFORM(db.parent, readonly=True)
>
> > > form2 = SQLFORM(db.child, keepopts=['gender'])
>
> > > form1[0].append(TR(INPUT(_type='text', name='name',
> > > requires=IS_NOT_EMPTY()), \
> > > SELECT(form2.custom.inpval.gender, name='gender'),\
> > > INPUT(_type='submit', _value='Add another'))
>
> > > This gives me the appearance of the form as I want, i.e., parent read-
> > > only record in a form, with additional single row of updateable child
> > > form with "Add another" button. The second form is to provide a drop-
> > > down list for 'gender'. However, in this case the "Add another" button
> > > doesn't submit, i.e, I can't get control in form1.accepts or
> > > form2.accepts.
>
> > > What am I doing wrong?
--
You received this message because you are subscribed to the Google Groups
"web2py-users" 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.