diff --git a/README.md b/README.md index ebc236a..9e1b85c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # bac_monitoring_system Our system monitors and restricts students from over drinking when they are downtown. + +# Libraries +pymongo==3.0.3 **Newer versions don't work** diff --git a/server.py b/server.py new file mode 100755 index 0000000..ac01868 --- /dev/null +++ b/server.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +from datetime import datetime + +import pymongo + + +def checkpoint(message): + """Prints [CHeckpoint] + """ + print("[Checkpoint] {}".format(message)) + +def total_drinks(id): + """Looks up the number of drinks a given user has consumed + """ + # Lookup + return 10 + +def remove_drinks(id=None, finished_drinks): + """Remove finished drinks. Removes all drinks from all ids + if id==None + """ + + # Remove all drinks from all users + if id == None: + # Iterate through all users + # Remove set drink list to empty + else: + # Lookup specific user + # Remove drinks < start_time + +def allowed_drinks(id): + """Gets the amount of drinks someone is allowed to have, taking into account + their body weight & gender + """ + ## Calculate current BAC + # Lookup BAC for 1 drink + user_info = get_info(id) + bac_lookup = {'M': {'100': .06, '120': .05, '140': .045, '160': .04, + '180': .035, '200': .03, '220': .033, '240': .025}, + 'F': {'100': .07, '120': .06, '140': .05, '160': .04, + '180': .04, '200': .035, '220': .03, '240': .03}} + one_drink = bac_lookup[user_info['gender']][user_info['weight']] + + # Add up BAC for each drink + bac = 0 + finished_drinks = [] + # According the the BAC chart, for ever 40 minutes .01% is subtracted from BAC + # and there are 2400 seconds on 40 minutes + curr_time = int(datetime.today().timestamp()) / 2400 + for drink in drinks + # Calculate drinking time and bac + drink_time = drink / 2400 + drinking_time = curr_time - drink_time + # Calculate BAC from specific drink, or remove it + drink_bac = one_drink - (drinking_time * 01) + if drink_bac == 0: + finished_drinks.append[drink] + else: + bac += drink_bac + + # Remove all drinks not contributing to current BAC + remove_drinks(id, finished_drinks) + + # Intoxicated, no drinks consumed, or some drinks consumed + if bac >= .06: + return 0 + elif bac == 0: + return int(.06 / one_drink) + else: + return int(.06 / bac) + +def main(): + + # Arguments + + # Connect to to collection + # Assumes 'bac_monitoring' collection already exists + collection = pymongo.MongoClient().group23.bac_monitoring + + ## Add new drink + # Current time in hours + curr_time = int(datetime.today().timestamp()) + collection.update({'id': 123456}, {'$push': {'drinks': curr_time}}) + + # Insert something + drink_data = collection.find({'id': 123456})[0] + print(drink_data) + +main()