I'm new to both Python and web2py and am having difficulty coding a
web2py radio form where each input field displays a name and an
image.  One (and only one) of these images should be set as the user's
default image.  I'm having trouble figuring out how to do this in
web2py.  I was able to produce the dict and then loop through to list
them accordingly:

CONTROLLER:
@auth.requires_login()
def show_cards():
    records = db((db.card.owner == session.auth.user.id) |
(db.card.is_active == True)).select()
    user = db(db.auth_user.id == session.auth.user.id).select()
    return dict(records=records,user=user)


VIEW (show_cards.html):

{{for record in records:}} <input type='radio' name='mylist'
_value="{{=record.id}}"> <img src="{{=URL('download',
args=record.image)}}"/><br> {{pass}}

MODEL:

db.define_table('auth_user',
    Field('id','id'),
    Field('username', type='string',
          label=T('Username')),
    Field('password', type='password',
          readable=False,
          label=T('Password')),
    Field('default_card', 'reference card')

db.define_table('card',
    Field('id','id'),
    Field('image', 'upload',
uploadfield='image_file',label=T('Image')),
    Field('image_file', 'blob'),
    Field('nick',label=T('Nickname')),
    Field('owner', db.auth_user),
    Field('is_active','boolean',default=False,
          label=T('Active')),

The problem now is, I have no idea how to structure the view so that
"checked=checked" is printed if the card value is equal to the owner's
default value.  I know it's going to involve a nested "if" clause, but
I'm not sure how to do this in a view. Something like: "{{if record.id
== user.auth_user.default_card: print 'checked="checked''}}"  How
should I include this in the code?  I've not yet seen how to format
nested logic in a view.

I also think that I could do this with a widget, but the more I read
on radio buttons and widgets, the more lost I become.  I know there
are probably much better ways to do this, but this is all I could hack
together.

Any guidance would be greatly appreciated, even if it's just a pointer
in the right direction.

Thanks in advance for your help.

Eric

Reply via email to