The labels for the checkboxes are the names of the mailinglists, that's ok, 
but not for the destinataire which the email field is replaced by the 
destinataire id. This is just a simple form where one user can subscribe to 
multiple mailinglists giving his email.
 In the same way, I want to limit the proposed mailinglists to the user 
where mailinglist.public is True. Is it possible?
 

Le mardi 7 août 2012 05:14:07 UTC+2, Cliff Kachinske a écrit :
>
> So the label for your checkboxes is the record id instead of the email 
> address?
>
> Right at the moment I don't know the answer ... Sorry.
>
>
>
> On Monday, August 6, 2012 3:27:15 PM UTC-4, goabbear wrote:
>>
>> Hi,
>> thanks for your help, I can now have checkboxes in the form, but I can't 
>> change the "destinataire" field from "id" to "email" :
>> def sabonner():
>>     abo = db.abonnement
>>     abo.mailinglist_id.widget = SQLFORM.widgets.checkboxes.widget
>>     form = SQLFORM(abo)
>>     return dict(form=form)
>>
>> Where can I specify wich fields can be exposed in the form?
>> thanks
>>
>>
>> Le lundi 6 août 2012 21:02:44 UTC+2, Cliff Kachinske a écrit :
>>>
>>> For starters, I'm not sure the syntax is correct for multiple 
>>> validators.  The Web2py manual states they need to be in the form of a list.
>>>
>>> http://web2py.com/books/default/chapter/29/7#Validators
>>>
>>> Also notice I have cleaned up the closing parends.
>>>
>>> db.abonnement.destinataire_id.requires = [
>>>    IS_IN_DB(db, 'destinataire.id', '%(email)s',), 
>>>    IS_NOT_IN_DB(db(db.abonnement.mailinglist_id==request.vars.
>>> mailinglist_id), 'abonnement.destinataire_id')
>>> )]
>>>
>>> To change from a dropdown box to checkboxes, you would use widgets. 
>>>  Check out http://web2py.com/books/default/chapter/29/7#Widgets
>>>
>>> On Monday, August 6, 2012 12:52:54 PM UTC-4, goabbear wrote:
>>>>
>>>> Hi all,
>>>> I have tried django before and I want to give a try to web2py because 
>>>> it looks more language natural, but I run into a problem (sorry if my 
>>>> question is stupid) :
>>>> in db.py :
>>>> ########################
>>>>
>>>> db.define_table('destinataire',
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('email', unique=True, 
>>>> required=True, length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('nom', length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('prenom', length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('entreprise', 
>>>> length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('fax', length=10),
>>>>                 format = '%(email)s')
>>>>
>>>> db.define_table('mailinglist',
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('nom', unique=True, 
>>>> required=True, length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('description', 
>>>> required=True, length=150),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('declencheur', 
>>>> required=True, length=30),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('public', 'boolean'),
>>>>                 format = '%(nom)s')
>>>>
>>>> db.define_table('abonnement',
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('destinataire_id', 
>>>> db.destinataire),
>>>>                 Field 
>>>> <http://127.0.0.1:8000/examples/global/vars/Field>('mailinglist_id', 
>>>> db.mailinglist)
>>>>                 )
>>>>
>>>> db.destinataire.email.requires = IS_NOT_IN_DB 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db, 
>>>> db.destinataire.email)
>>>> db.destinataire.email.requires = IS_EMAIL 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_EMAIL>()
>>>> db.destinataire.email.requires = IS_NOT_EMPTY 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>>>>
>>>> db.mailinglist.nom.requires = IS_NOT_IN_DB 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db, 
>>>> db.mailinglist.nom)
>>>> db.mailinglist.nom.requires = IS_NOT_EMPTY 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>>>> db.mailinglist.description.requires = IS_NOT_EMPTY 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>>>> db.mailinglist.declencheur.requires = IS_NOT_EMPTY 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>>>>
>>>> #l'abonnement d'un destinataire à une mailinglist doit être unique
>>>> #tiré de http://osdir.com/ml/web2py/2010-07/msg01889.html
>>>> db.abonnement.destinataire_id.requires = IS_IN_DB 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_IN_DB>(db, 
>>>> 'destinataire.id', '%(email)s',
>>>>     _and=IS_NOT_IN_DB 
>>>> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db(db.abonnement.mailinglist_id==request
>>>>  
>>>> <http://127.0.0.1:8000/examples/global/vars/request>.vars.mailinglist_id), 
>>>> 'abonnement.destinataire_id'))
>>>>
>>>> ########################
>>>>
>>>> As described, a "destinataire" can make multiple subscriptions 
>>>> "abonnement" to "mailinglist", and a mailinglist have multiple subscribers.
>>>>
>>>> I don't understand how to give a user the possibility to make a 
>>>> subscription to multiple mailinglists in one form like :
>>>>
>>>> enter email : _____
>>>>
>>>> select mailinglists : 
>>>>
>>>> ml1 X
>>>>
>>>> ml2 X
>>>>
>>>> ml3 .
>>>>
>>>> where the user select each mailinglist he wants to subscribe with a 
>>>> checkbox.
>>>>
>>>> Thanks for any help
>>>>
>>>>

-- 



Reply via email to