Ejemplo n.º 1
0
    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