in lambda/src/medication_diary_bot.py [0:0]
def parse_time_input(time_val, time_of_day_val, time_val_alts=[]):
if time_val is None:
if time_val_alts: # e.g. ["05:00", "17:00" ] ambiguous AM or PM
time_val_alts.sort() # pick the smaller one
if time_of_day_val is None:
time_val = time_val_alts[0]
return TimeDetail(time_str=time_val, time_of_day=None, finished=False)
elif time_of_day_val == 'AM':
time_val = time_val_alts[0]
return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
else: # PM
time_val = time_val_alts[1]
return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
else:
# did not get time value
return TimeDetail(time_str=None, time_of_day=time_of_day_val, finished=False)
else:
# case: time_val is one of "NI", "MO", "AF", "EV"
if time_val in PERIOD_TO_AMPM:
time_of_day_val = PERIOD_TO_AMPM[time_val]
return TimeDetail(time_str=None, time_of_day=time_of_day_val, finished=False)
elif time_of_day_val is not None:
if time_of_day_val == 'PM':
hour = int(time_val.split(':')[0])
if hour < 12:
hour += 12
time_val = str(hour) + time_val[2:]
return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
else:
hour = int(time_val.split(':')[0])
logger.info(f'hour: {hour}')
time_of_day_val = 'AM' if hour < 12 else 'PM'
return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)