def _to_python(self,value,state): #raise Exception('%s'%value) import time c.schedules_amt = len(value) oschedules=[] for val in value: val['h']['fr'] = h_fr = self.parse_time(val['h']['fr']) val['h']['to'] = h_to = self.parse_time(val['h']['to']) if not h_fr: raise formencode.Invalid(_(u'שעה תחתונה לא חוקית - %s')%val['h']['fr'],value,state) if not h_to: raise formencode.Invalid(_(u'שעה עליוה חוקית - %s')%val['h']['to'],value,state) if h_to<=h_fr: raise formencode.Invalid(_(u'טווח שעות אינו חוקי'),val,state) try: for d in val['d']: if int(d) not in range(1,8): raise formencode.Invalid(_(u'יום אינו חוקי %s')%d,value,state) except KeyError: raise formencode.Invalid(_(u'לא בחרת אף יום'),value,state) #check if schedule crosses with other schedules for this sc = Schedule() myweekdays=[] for dn in val['d']: myweekdays.append(ScheduleWeekday()) myweekdays[-1].weekday = int(dn) sc.weekdays = myweekdays hr = ScheduleHour() hr.time_from = h_fr hr.time_to = h_to sc.hours = [hr] for sc2 in oschedules: if sc.overlaps(sc2): state.schedule_valid=False raise formencode.Invalid(_(u'שעות אלו כבר תפוסות בלו"ז שלך.'),value,state) oschedules.append(sc) #raise Exception('%s'%val) state.schedule_valid=True return value