示例#1
0
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