def schedule_remove(): data = request.form success, result, pill = schedule_error_check(data) if not success: return result pill_day_index = pill['day'] pill_name = pill['name'] pill.pop('day', None) pill.pop('name', None) #remove from pillbox user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] day = pillbox_list[pill_day_index] found = False for index, possiblity in enumerate(day): if possiblity['pill_id'] == pill['pill_id'] and possiblity[ 'time'] == pill['time']: day.pop(index) found = True pillbox_list[pill_day_index] = day get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) if found: return 'Success' else: return 'No pill with these parameters was found.'
def schedule_add(data=None): if data == None: data = request.form success, result, pill = schedule_error_check(data) if not success: return result pill_day_index = pill['day'] pill_name = pill['name'] pill.pop('day', None) pill.pop('name', None) #add to pillbox user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] day = pillbox_list[pill_day_index] day.append(pill) pillbox_list[pill_day_index] = day get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) #return "Successfully added " + pill_name + " on day " + str(pill_day_index) + " at " + pill['time'] return redirect(url_for('pillbox.index'), code=302)
def schedule_clear_all(): user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_template }}) return "Successfully cleared entire schedule"
def seed_user(): username = '******' user = get_users().find_one({'username': username}) if not user: user = {} user['_id'] = ObjectId(user_id_str) user['username'] = username user[ 'password'] = '******' get_users().insert(user) update_users_schema() seed_random_pillbox(username) return "User curtis data reset."
def reset_taken(): user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] for day in pillbox_list: for pill_index, pill in enumerate(day): if 'taken' in pill and pill['taken']: pill.pop('taken', None) day[pill_index] = pill get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) return "User " + user_profile['username'] + "'s pillbox has been reset."
def schedule_clear_day(day_index): try: day_index = int(day_index) if day_index not in range(7): return "ERROR: invalid day." except: return "ERROR: invalid day." user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] pillbox_list[day_index] = [] get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) return "Successfully cleared day " + str(day_index) + "."
def set_taken_auto(): current_datetime = datetime.now() current_time = current_datetime.time() current_day = (current_datetime.weekday() + 1) % 7 current_month = current_datetime.month current_year = current_datetime.year print(str(current_month) + " " + str(current_year)) current_week_start = current_datetime.date() - timedelta(current_day) current_hour_str = current_datetime.strftime("%H:%M:%S") user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] for day_index in range(0, current_day + 1): day = pillbox_list[day_index] for pill_index, pill in enumerate(day): datestring = str(current_week_start.year) + "|" + str( current_week_start.month) + "|" + str( current_week_start.day) + "|" pill_datetime = datetime.strptime(datestring + pill['time'], "%Y|%m|%d|%H:%M:%S") pill_datetime += timedelta(days=day_index) print(str(pill_datetime) + "<" + str(current_datetime)) if pill_datetime < current_datetime: pill['taken'] = True day[pill_index] = pill pillbox_list[day_index] = day get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) result = "" for item in pillbox_list: result += str(item) + "\n" return "CURRENT DAY: " + str( current_day) + " TIME: " + current_hour_str + "\n\n" + result
def schedule_add_frompage(): data = request.form hour = data.getlist('hour')[0] minute = data.getlist('minute')[0] meridian = data.getlist('meridian')[0] hour = int(hour) minute = int(minute) if meridian == 'pm': hour = hour + 12 hour = "%02d" % hour minute = "%02d" % minute name = data.getlist('name')[0] pill_obj = get_pills().find_one({'name': name}) current_datetime = datetime.now() current_day = (current_datetime.weekday() + 1) % 7 pill = {'pill_id': pill_obj['_id'], 'time': hour + ":" + minute + ":00"} #add to pillbox user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] day = pillbox_list[current_day] day.append(pill) pillbox_list[current_day] = day get_users().find_one_and_update({'_id': user_profile['_id']}, {'$set': { 'pillbox': pillbox_list }}) #return "Successfully added " + pill_name + " on day " + str(pill_day_index) + " at " + pill['time'] return redirect(url_for('pillbox.index'), code=302)
def get_pillbox_simple(): user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] pillbox = [] for day in range(7): day = pillbox_list[day] for index, pill in enumerate(day): pill_obj = get_pills().find_one(pill['pill_id']) stripped_pill = {'time': pill['time'], 'name': pill_obj['name']} day[index] = stripped_pill sorted_day = sorted(day, key=lambda pill: pill['time'], reverse=False) pillbox.append(sorted_day) return str(pillbox)
def get_pillbox_timesheet(): user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] pillbox = [] for day in range(7): day = pillbox_list[day] day_collections = {} for index, pill in enumerate(day): pill_obj = get_pills().find_one(pill['pill_id']) time = pill['time'] name = pill_obj['name'] if time in day_collections: day_collections[time].append(name) else: day_collections[time] = [name] pillbox.append(day_collections) return str(pillbox)
def get_pilltimes(day_index, single=False): try: day_index = int(day_index) if day_index not in range(7): return "ERROR: invalid day." except: return "ERROR: invalid day." user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] time_list = [] for pill in pillbox_list[day_index]: time = pill['time'] if time not in time_list: pill_obj = get_pills().find_one({'_id': pill['pill_id']}) pill['name'] = pill_obj['name'] if 'taken' in pill_obj and pill_obj['taken']: pill['taken'] = 1 else: pill['taken'] = 0 #time_list.append(time) time_list.append(pill) pill_list = sorted(time_list, key=lambda pill: pill['time'], reverse=False) if single: current_time = datetime.now().time() for index, pill in enumerate(pill_list): if current_time <= datetime.strptime(pill['time'], "%H:%M:%S").time(): pill['time'] = pill['time'][0:5] pill.pop('pill_id', None) return str(pill) return "{}" else: return str(time_list)
def get_pillbox_day(day_index): try: day_index = int(day_index) if day_index not in range(7): return "ERROR: invalid day." except: return "ERROR: invalid day." user_profile = get_users().find_one({'_id': ObjectId(user_id_str) }) #hardcoded user pillbox_list = user_profile['pillbox'] day = pillbox_list[day_index] day_collection = {} for index, pill in enumerate(day): pill_obj = get_pills().find_one(pill['pill_id']) time = pill['time'] name = pill_obj['name'] if time in day_collection: day_collection[time].append(name) else: day_collection[time] = [name] return str(day_collection)