You are getting an error at this line: File "/Library/Python/2.5/site-packages/web2py/applications/cms/ models/db.py", line 281, in <module> db.bedrijfactiviteit.activiteit['requires'] =db.bedrijfactiviteit.activiteit.requires TypeError: 'SQLField' object does not support item assignment
but that is not what I asked to add. The line I suggested was db.adres.adressoort.widget['requires']=db.adres.adressoort.requires the line db.bedrijfactiviteit.activiteit['requires'] =db.bedrijfactiviteit.activiteit.requires does not appear in the examples you posted. Massimo On Jul 7, 11:19 am, annet <annet.verm...@gmail.com> wrote: > Massimo, > > I will try and give you a translated example which is probable easier > to understand. I have two tables: > > db.define_table('company', > db.Field('company_name',length=54,default='',notnull=True), > db.Field(...), > migrate=False) > > db.define_table('activity', > db.Field > ('activity_name',length=48,default='',notnull=True,unique=True), > db.Field(...), > migrate=False) > > ... and a combination table: > > db.define_table('companyactivity', > db.Field > ('company',db.company,default='',notnull=True,ondelete='CASCADE'), > db.Field > ('activity',db.activity,default='',notnull=True,ondelete='RESTRICT'), > db.Field(...), > migrate=False) > > To prevent the user to enter the same company activity combination > twice I would like to have a two column unique constraint on company > and activity. The first validator which I tried read like: > > db.companyactivity.company.requires=[IS_IN_DB(db,db.company.id,'% > (company_name)s'),IS_NOT_IN_DB > (db.companyactivity.activity==request.vars.activity),db.companyactivity.company)] > db.companyactivity.activity.requires=IS_IN_DB(db,db.activity.id,'% > (activity_name)s') > > This validator does not disable the drop box functionality, but > doesn't perform the correct validation as well. I can enter a company > activity combination twice. > > In the second validator I put the validator on activity instead of > company, this disabled the drop box so I had to add that using the > widget. > > db.companyactivity.company.requires=IS_IN_DB(db,db.company.id,'% > (company_name)s') > db.companyactivity.activity.requires=[IS_IN_DB(db,db.activity.id,'% > (activity_name)s'),IS_NOT_IN_DB > (db.companyactivity.company==request.vars.company),db.companyactivity.activity)] > tmp=SQLField > ('activity',db.activity,requires=db.companyactivity.activity.requires > [0]) > tmp._tablename=db.companyactivity.activity._tablename > db.companyactivity.activity.widget=lambda f,v: OptionsWidget.widget > (tmp,v) > > This validator does display the drop box, but doesn't perform the > correct validation. I can enter a company activity combination twice. > I tried adding the line of code you suggested in your previous post, > but that did result in an error ticket being issued: > > Traceback (most recent call last): > File "/Library/Python/2.5/site-packages/web2py/gluon/restricted.py", > line 176, in restricted > exec ccode in environment > File "/Library/Python/2.5/site-packages/web2py/applications/cms/ > models/db.py", line 281, in <module> > db.bedrijfactiviteit.activiteit['requires'] > =db.bedrijfactiviteit.activiteit.requires > TypeError: 'SQLField' object does not support item assignment > > I am not sure the validator is the cause of the problem, I had a look > at the function I expose: > > @auth.requires_membership('tier2_manager') > def crud_activity(): > response.functionname='Manage activities' > db.companyactivity.company.writable=False > db.companyactivity.company.default=auth.user.company > form=create_form(db.companyactivity) > records=db((db.companyactivity.company==auth.user.company)& > (db.companyactivity.activity==db.activity.id))\ > .select > (db.companyactivity.ALL,db.activity.activity_name,orderby=db.activity.activity_name) > return dict(form=form,records=records) > > ... maybe these lines of code are the cause of the problem > > db.companyactivity.company.writable=False > db.companyactivity.company.default=auth.user.company > > ... request.vars.company probably doesn't have a value? > > I hope I provided you with sufficient information to help me solve the > problem. I apologize for asking the question without translating the > Dutch words into English, to me German, Dutch and English are similar > one another. > > Kind regards, > > Annet. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---