can you add some print statements to determine which lines are executed and which not? I suspect a logic problem.
On Mar 16, 3:39 am, mohammed al-moustady <[email protected]> wrote: > here is my db.py > > db.define_table('time_table', > Field('time_in','time'), > Field('time_out','time') > ) > > db.define_table('years', > Field('year_number','string') > ) > > db.define_table('buildings', > Field('b_number','string') > ) > > db.define_table('levels', > Field('l_number','string') > ) > > db.define_table('room', > Field('building_number',db.buildings), > Field('level','string'), > Field('room_number','string'), > Field('area','string') > ) > > db.define_table('module', > Field('name','string'), > Field('module_number','string'), > Field('year',db.years) > ) > > db.define_table('reservation', > Field('room',db.room), > Field('module',db.module), > Field('Time_IN',db.time_table), > Field('Time_OUT',db.time_table), > Field('Date','date') > ) > > db.module.year.requires=IS_IN_DB(db,'years.id','years.year_number') > db.room.building_number.requires=IS_IN_DB(db,'buildings.id','buildings.b_number') > db.room.level.requires=IS_IN_DB(db,'levels.id','levels.l_number') > db.reservation.room.requires=IS_IN_DB(db,'room.id','room.room_number') > db.reservation.module.requires=IS_IN_DB(db,'module.id','module.name') > db.reservation.Time_IN.requires=IS_IN_DB(db,'time_table.id','time_table.time_in') > db.reservation.Time_OUT.requires=IS_IN_DB(db,'time_table.id','time_table.time_out') > > and here is my default.py in controler: > def index(): > > return dict(message="") > > def room_reg(): > form=SQLFORM(db.room) > if form.accepts(request.vars,session): > response.flash='new record inserted' > records=SQLTABLE(db().select(db.room.ALL)) > > return dict(form=form,records=records) > > def module_reg(): > form=SQLFORM(db.module) > if form.accepts(request.vars,session): > response.flash='new record inserted' > records=SQLTABLE(db().select(db.module.ALL)) > > return dict(form=form,records=records) > > def validation(form): > > st1=form.vars.Time_IN > en1=form.vars.Time_OUT > dbselect=db(db.reservation.Date==form.vars.Date).select() > > if en1<st1 : > form.errors.Time_OUT='الرجاء تعديل الوقت' > > for i in dbselect: > st2=i.Time_IN > en2=i.Time_OUT > if st1==st2 or en1==en2: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2>st1 and en2>en1: > if st2>en1: > pass > else: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2<st1 and en2<en1: > if en2<st1: > pass > else: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2>st1 and en2<en1: > form.errors.Time_OUT='الرجاء تعديل الوقت' > else: > pass > > def reservation(): > form=SQLFORM(db.reservation) > if form.accepts(request.vars,session, onvalidation=validation): > response.flash='new record inserted' > records=SQLTABLE(db().select(db.reservation.ALL)) > dt=db(db.reservation.Date==form.vars.Date).select() > return dict(form=form,records=records,dt=dt) > > My issue is in the Validation function for the form processing in the > function reservation() > first I am validating if the user has input a time in later than time > out: > > st1=form.vars.Time_IN > en1=form.vars.Time_OUT > > if en1<st1 : > form.errors.Time_OUT='الرجاء تعديل الوقت' > > and it works fine. > > then I tried to do extra validation at which I select from the > database the same date inputed by the user: > > dbselect=db(db.reservation.Date==form.vars.Date).select() > > then do some logic to see if there is a conflicting time already in > the database in that same particular date: > > for i in dbselect: > st2=i.Time_IN > en2=i.Time_OUT > if st1==st2 or en1==en2: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2>st1 and en2>en1: > if st2>en1: > pass > else: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2<st1 and en2<en1: > if en2<st1: > pass > else: > form.errors.Time_OUT='الرجاء تعديل الوقت' > elif st2>st1 and en2<en1: > form.errors.Time_OUT='الرجاء تعديل الوقت' > else: > pass > > the problem is that the validation is completely ignored. > > can any one help? -- 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.

