def get_time(days_bfield, start_time, stop_time): id_tuple = (days_bfield, start_time, stop_time) if start_time == 'WEB': if get_time.web_time is not None: return get_time.web_time try: time = time.sess.query(TimePref).filter_by(time_type='online').one() except NoResultFound: time = TimePref(time_type='online') #sess.add(time) get_time.web_time = time return time if id_tuple in get_time.times: time = get_time.times[id_tuple] app.logger.debug('found time %r in the cache' % time) return time days_dict = bfield2dict(days_bfield) start_time = timestr2time(str(start_time)) stop_time = timestr2time(str(stop_time)) try: time = sess.query(TimePref).filter_by( time_type='normal', start_time=start_time, stop_time=stop_time, Sa=False, Su=False, **days_dict ).one() get_time.times[id_tuple] = time app.logger.debug('found time %r in the db' % time) return time except NoResultFound: time = TimePref() time.start_time = start_time time.stop_time = stop_time time.update(Sa=False,Su=False,**days_dict) #sess.add(time) app.logger.debug('Adding time %r to the db' % time) #sess.commit() get_time.times[id_tuple] = time return time