Пример #1
0
def register(username, email, password, timezone):
    if not user_check.check_username(username):
        password = password.encode()
        password = bcrypt.hashpw(password, bcrypt.gensalt())
        password = password.decode()
        goal_date = time_manage.iso_utc_in_1_year()
        users.insert_one({
            "username": username,
            "email": email,
            "password": password,
            "timezone": timezone,
            "verified": False,
            "verify_token": "",
            "date_goal": goal_date,
            "night_goal": 10,
            "goal": 50,
            "activeDrive": False,
            "drives": []
        })
        email_tool.send_email_confirmation(username)
        if user_check.check_username(username):
            return True
        else:
            return False
    else:
        return False
Пример #2
0
def stop_drive(username, time_mode):
    if user_check.check_username(username):
        users.update_one({"username": username},
                         {"$set": {
                             "activeDrive": False
                         }})
        users.update_one({
            "username": username,
            "drives.active": True
        }, {"$set": {
            "drives.$.stopTime": time_manage.iso_utc_now()
        }})
        if time_mode == "night":
            users.update_one({
                "username": username,
                "drives.active": True
            }, {"$set": {
                "drives.$.conditions": ["night"]
            }})
        users.update_one({
            "username": username,
            "drives.active": True
        }, {"$set": {
            "drives.$.active": False
        }})
        return not user_get.get(username, "activeDrive")
    else:
        return False
Пример #3
0
def iso_utc_to_time(username, iso_utc):
    if user_check.check_username(username):
        date_object = parser.parse(iso_utc)
        timezone = user_get.get(username, "timezone")
        localized_time = date_object.astimezone(pytz.timezone(timezone))
        return datetime.datetime.strftime(localized_time, "%I:%M %p")
    else:
        return "Error"
Пример #4
0
def do_request_forgo_password():
    if user_check.check_username(request.form["username"]):
        if user_manage.forgot_password_send_email(request.form["username"]):
            return redirect("/login?error=request_success")
        else:
            return redirect("/login?error=request_error")
    else:
        return redirect("/forgot_password?error=username")
Пример #5
0
def get_drive(username, drive_id):
    if user_check.check_username(username):
        drive = get(username, "drives")[int(drive_id)]
        start_date = time_manage.iso_utc_to_date(username, drive["startTime"])
        start_time = time_manage.iso_utc_to_time(username, drive["startTime"])
        stop_time = time_manage.iso_utc_to_time(username, drive["stopTime"])
        duration = time_manage.drive_duration_formatted(drive["startTime"], drive["stopTime"])
        return {"startDate": start_date, "startTime": start_time, "stopTime": stop_time, "duration": duration,
                "id": get_drive_list(username).index(drive), "conditions": drive["conditions"]}
Пример #6
0
def remove_drive(username, drive_id):
    if user_check.check_username(username):
        start_time = users.find_one({"username": username
                                     })["drives"][int(drive_id)]["startTime"]
        users.update_one({"username": username},
                         {"$pull": {
                             "drives": {
                                 "startTime": start_time
                             }
                         }})
Пример #7
0
def change_password(username, password):
    if user_check.check_username(username):
        password = password.encode()
        password = bcrypt.hashpw(password, bcrypt.gensalt())
        password = password.decode()
        users.update_one({"username": username},
                         {"$set": {
                             "password": password
                         }})
        remove_password_token(username)
Пример #8
0
def create_drive(username):
    if user_check.check_username(username):
        users.update_one({"username": username}, {
            "$push": {
                "drives": {
                    "startTime": time_manage.iso_utc_now(),
                    "stopTime": time_manage.iso_utc_now(),
                    "active": False,
                    "conditions": []
                }
            }
        })
Пример #9
0
def verify_user(username, token):
    if user_check.check_username(username):
        if user_get.get(username, "verify_token") == token:
            users.update_one({"username": username},
                             {"$set": {
                                 "verified": True
                             }})
            return True
        else:
            return False
    else:
        return False
Пример #10
0
def get_drive_data(username):
    if user_check.check_username(username):
        drive_list = get_drive_list(username)
        drive_data = []
        for drive in drive_list:
            start_date = time_manage.iso_utc_to_date(username, drive["startTime"])
            start_time = time_manage.iso_utc_to_time(username, drive["startTime"])
            stop_time = time_manage.iso_utc_to_time(username, drive["stopTime"])
            duration = time_manage.drive_duration_formatted(drive["startTime"], drive["stopTime"])
            drive_data.append(
                {"startDate": start_date, "startTime": start_time, "stopTime": stop_time, "duration": duration,
                 "id": drive_list.index(drive), "conditions": drive["conditions"]})
        return drive_data
Пример #11
0
def date_start_stop_to_iso_utc(username, date, start_time, stop_time):
    if user_check.check_username(username):
        user_timezone = pytz.timezone(user_get.get(username, "timezone"))
        start_datetime = datetime.datetime.strptime(f"{date} {start_time}",
                                                    "%b %d, %Y %I:%M %p")
        stop_datetime = datetime.datetime.strptime(f"{date} {stop_time}",
                                                   "%b %d, %Y %I:%M %p")
        if start_datetime > stop_datetime:
            stop_datetime += datetime.timedelta(days=1)
        start_datetime = start_datetime.replace(tzinfo=user_timezone)
        stop_datetime = stop_datetime.replace(tzinfo=user_timezone)
        start_datetime = start_datetime.astimezone(
            pytz.timezone("UTC")).isoformat()
        stop_datetime = stop_datetime.astimezone(
            pytz.timezone("UTC")).isoformat()
        return {"start_date": start_datetime, "stop_date": stop_datetime}
Пример #12
0
def do_login():
    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]
        if request.form.get("remember_me"):
            if request.form["remember_me"] == "on":
                session.permanent = True
        if not user_check.check_username(username):
            return redirect("/login?error=login")
        if not user_check.check_verified(username):
            return redirect("/login?error=verified")
        if user_check.check_password(username, password):
            session["logged_in"] = True
            session["username"] = username
        else:
            return redirect("/login?error=login")
    return redirect(url_for("route"))
Пример #13
0
def update_settings(username, date_goal, goal, night_goal):
    if int(goal) <= 0:
        return False
    if int(night_goal) <= 0:
        return False
    if user_check.check_username(username):
        users.update_one({"username": username}, {
            "$set": {
                "date_goal": time_manage.date_local_to_iso_utc(
                    username, date_goal),
                "goal": goal,
                "night_goal": night_goal
            }
        })
        return True
    else:
        return False
Пример #14
0
def do_register():
    if request.method == "POST":
        username = request.form["username"]
        email = request.form["email"]
        password = request.form["password"]
        password_repeat = request.form["password_repeat"]
        timezone = request.form["timezone"]
        print(timezone)
        if user_check.check_username(username):
            return redirect("/register?error=username")
        elif user_check.check_email(email):
            return redirect("/register?error=email")
        elif not password == password_repeat:
            return redirect("/register?error=password")
        else:
            if user_manage.register(username, email, password, timezone):
                return redirect("/login?error=register_success")
            else:
                return "Error"
Пример #15
0
def start_drive(username):
    if user_check.check_username(username):
        users.update_one({"username": username},
                         {"$set": {
                             "activeDrive": True
                         }})
        id = len(users.find_one({"username": username})["drives"])
        users.update_one({"username": username}, {
            "$push": {
                "drives": {
                    "startTime": time_manage.iso_utc_now(),
                    "stopTime": 0,
                    "active": True,
                    "conditions": []
                }
            }
        })
        return user_get.get(username, "activeDrive")
    else:
        return False
Пример #16
0
def update_drive(username, drive_id, start_date, start_time, stop_time,
                 conditions):
    if user_check.check_username(username):
        updated_drive_info = time_manage.date_start_stop_to_iso_utc(
            username, start_date, start_time, stop_time)
        users.update_one({"username": username}, {
            "$set": {
                f"drives.{drive_id}.startTime":
                updated_drive_info["start_date"]
            }
        })
        users.update_one({"username": username}, {
            "$set": {
                f"drives.{drive_id}.stopTime": updated_drive_info["stop_date"]
            }
        })
        users.update_one(
            {"username": username},
            {"$set": {
                f"drives.{drive_id}.conditions": conditions
            }})
        return True
    return False
Пример #17
0
def get_drive_list(username):
    if user_check.check_username(username):
        return users.find_one({"username": username})["drives"]
    else:
        return []
Пример #18
0
def get_active_drive(username):
    if user_check.check_username(username):
        for drive in users.find_one({"username": username})["drives"]:
            if drive["active"]:
                return drive
        return
Пример #19
0
def remove_user(username):
    users.remove({"username": username})
    return not user_check.check_username(username)
Пример #20
0
def remove_password_token(username):
    if user_check.check_username(username):
        users.update_one({"username": username},
                         {"$set": {
                             "password_token": ""
                         }})
Пример #21
0
def get_start_time(username):
    if user_check.check_username(username) and get(username, "activeDrive"):
        return get_active_drive(username)["startTime"]
    else:
        return time_manage.unix_now()
Пример #22
0
def forgot_password_send_email(username):
    if user_check.check_username(username):
        return email_tool.send_forgot_password(username)
    else:
        return False
Пример #23
0
def do_delete_account():
    if request.method == "POST":
        if request.form["username"] == session["username"]:
            session.clear()
            user_manage.remove_user(request.form["username"])
            return str(user_check.check_username(request.form["username"]))
Пример #24
0
def associate_password_token(username, token):
    if user_check.check_username(username):
        users.update_one({"username": username},
                         {"$set": {
                             "password_token": token
                         }})
Пример #25
0
def date_local_to_iso_utc(username, date_local):
    if user_check.check_username(username):
        user_timezone = pytz.timezone(user_get.get(username, "timezone"))
        datetime_local = datetime.datetime.strptime(date_local, "%b %d, %Y")
        datetime_local = datetime_local.replace(tzinfo=user_timezone)
        return datetime_local
Пример #26
0
def iso_utc_to_unix(username, iso_utc):
    if user_check.check_username(username):
        date_object = parser.parse(iso_utc)
        timezone = user_get.get(username, "timezone")
        localized_time = date_object.astimezone(pytz.timezone(timezone))
        return localized_time.timestamp()