In your validator:

(db.companyactivity.activity==request.vars.activity)

the left hand side a reference field or an int and the right hand side
is a string. Hard to follow but I think

db.timetable.activity.requires=IS_IN_SET([row.activity for row in
activity])

should be

db.timetable.activity.requires=IS_IN_SET([row.id for row in activity],
[row.activity for row in activity])


Massimo

On Dec 11, 12:48 pm, annet <annet.verm...@gmail.com> wrote:
> In my model I have a combination table that combines companies with
> activities. Since I don't want a user to enter a combination twice I
> defined the following validator:
>
> db.companyactivity.company.requires=[IS_IN_DB(db,db.company.id,'%
> (companyname)s'),IS_NOT_IN_DB(db
> (db.companyactivity.activity==request.vars.activity),db.companyactivity.company,error_message='already
> in database')]
>
> I also have a table timetable which reads like:
>
> db.define_table('timetable',
>     Field
> ('company',db.company,default='',notnull=True,ondelete='CASCADE',
> writable=False, readable=False),
>     Field('activity',length=48,default='',notnull=True),
>     Field('day',db.dag,default='',notnull=True,ondelete='RESTRICT'),
>     Field('time',type='time',default='',notnull=True),
>     Field('duration',length=3,default='',notnull=True),
>     Field('location',length=24),
>     Field
> ('level',db.level,default=1,notnull=True,ondelete='RESTRICT'),
>     migrate='timetable.table')
>
> In my cms the function to insert a class or update a class reads like:
>
> @auth.requires_membership('site_manager')
> def create_timetable():
>     response.view='default/form.html'
>     response.flash='Insert class'
>     db.timetable.company.default=auth.user.company
>     activity=activity_rowset()
>     db.timetable.activity.requires=IS_IN_SET([row.activity for row in
> activity])
>     form=create_form(db.timetable,message='Class inserted')
>     return dict(form=form)
>
> @auth.requires_membership('site_manager')
> def update_timetable():
>     response.view='default/form.html'
>     response.flash='Update or delete class'
>     record=db.timetable[request.args[0]]
>     if not record or not record.company==auth.user.bedrijf:
>         redirect(URL(r=request,f='crud_timetable'))
>     activity=activity_rowset()
>     db.timetable.activity.requires=IS_IN_SET([row.activity for row in
> activity])
>     form=update_form(db.timetable,record,'crud_timetable','Class
> deleted or updated',True)
>     return dict(form=form)
>
> When I expose these function I get the following error ticket:
>
> Traceback (most recent call last):
>   File "/Library/Python/2.5/site-packages/web2py/gluon/restricted.py",
> line 184, in restricted
>     exec ccode in environment
>   File "/Library/Python/2.5/site-packages/web2py/applications/cms/
> models/db.py", line 293, in <module>
>     db.bedrijfactiviteit.bedrijf.requires=[IS_IN_DB(db,db.bedrijf.id,'%
> (bedrijfsnaam)s'),IS_NOT_IN_DB(db
> (db.bedrijfactiviteit.activiteit==request.vars.activiteit),db.bedrijfactiviteit.bedrijf,error_message='combinatie
> bedrijf en activiteit al in database')]
>   File "/Library/Python/2.5/site-packages/web2py/gluon/sql.py", line
> 2310, in __eq__
>     return Query(self, '=', value)
>   File "/Library/Python/2.5/site-packages/web2py/gluon/sql.py", line
> 2688, in __init__
>     right = sql_represent(right, left.type, left._db._dbname)
>   File "/Library/Python/2.5/site-packages/web2py/gluon/sql.py", line
> 466, in sql_represent
>     return str(int(obj))
> ValueError: invalid literal for int() with base 10: 'BodyCircuit'
>
> When I remove the validator from the companyactivity table, both
> functions work for the timetable table work. I don't see the
> connection between the validator and the two functions, therefore I
> don't understand why this error occurs. Does one of you know why this
> happens?
>
> Kind regards,
>
> Annet.

--

You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@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.


Reply via email to