Beispiel #1
0
def validate_lib_login_form(form):

    user = query_db("SELECT * FROM users WHERE email=?", (form.email.data, ),
                    False, True)
    if user:
        check_password = bcrypt.check_password_hash(user['password'],
                                                    form.password.data)
        if check_password:
            if user['verified']:
                set_session_values(user)
                query_db("UPDATE users SET last_online=? WHERE username=?",
                         ("Online", user['username']), True)
                flash(f"Welcome {user['username']}, you are logged in!",
                      'success')
            else:
                flash(
                    'You have not yet verified your email, please verify to continue',
                    'danger')
                return redirect(url_for('login'))
            return redirect(url_for('home'))
        else:
            flash("Password Incorrect", 'danger')
            return redirect(url_for('login'))
    else:
        flash("That email does not exist, please try another", 'danger')
        return redirect(url_for('login'))
Beispiel #2
0
def validate_lib_signup_form(form):
    valid = True

    username = query_db("SELECT * FROM users WHERE username = ?",
                        (form.username.data, ))
    email = query_db("SELECT * FROM users WHERE email = ?",
                     (form.email.data, ))
    if username:
        flash("That username is already in use, please choose another one.",
              'danger')
        return False
    if not form.firstname.data or not form.lastname.data:
        flash("Please provide a first and last name", 'danger')
        return False
    if email:
        flash("That email is already in in use, plese choose another one.",
              'danger')
        return False
    if not re.search("@", form.email.data):
        flash("Please us a valid email address, with a '@' symbol.", 'danger')
        return False
    if not valid_password(form.password.data):
        flash(
            "Password is Invlaid please use a password between 6 and 15 character with at least one number, special character, one uppler case letter and on lower case letter with no spaces",
            'danger')
        return False
    if not form.password.data == form.pswd_confirm.data:
        flash("Password and Confirm password do not match", 'danger')
        return False

    if valid:
        set_session_values(form)
    return valid
Beispiel #3
0
def validate_lib_logout_user():
    mydate = datetime.now()
    formateddate = mydate.strftime("%d-%m-%Y\n%H:%M:%S")
    query_db("UPDATE users SET last_online=? WHERE username=?", (formateddate, session['username']), True)
    session.pop('username', None)
    session.pop('logged_in', None)

    return redirect(url_for('splash'))
Beispiel #4
0
def set_new_password(form):
    hashed_password = bcrypt.generate_password_hash(
        form.password.data).decode('utf-8')

    query_db("UPDATE users SET password=? WHERE email=?", (
        hashed_password,
        form.email.data,
    ), True)
    flash("Password has been updated", 'success')
Beispiel #5
0
def user_lib_create_user(form):

    hashed_password = bcrypt.generate_password_hash(
        form.password.data).decode('utf-8')

    query_db(
        "INSERT INTO users (username, email, password, verified, firstname, lastname) VALUES (?,?,?,?,?,?)",
        (form.username.data, form.email.data, hashed_password, False,
         form.firstname.data, form.lastname.data), True)
def interest_suggestions(user_interests):

    suggestions = []

    interest_profiles = query_db("SELECT * FROM interests WHERE NOT username=?", (session['username'],))

    for user_interest in user_interests:
        for interest in interest_profiles:
            if parse_interest(user_interest, interest):
                user = query_db("SELECT * FROM users WHERE username=?", (interest['username'],))
                for v in user:
                    suggestions.append(v)

    return suggestions
def fame_suggestions(user):

    fame = user['fame']

    suggestions = query_db("SELECT * FROM users WHERE fame>=? AND NOT username=? AND NOT username=?", (fame, session['username'], 'Admin'))

    return suggestions
Beispiel #8
0
def user_lib_block_user(username):

    already_blocked = query_db(
        "SELECT * FROM blocked_accounts WHERE user_blocking=? AND blocked_user=?",
        (session['username'], username))

    if not already_blocked:
        flash('Block request has been sent to admin for review', 'success')
        common_lib_log_history_moment(
            'block request', session['username'], username,
            'You have submitted a request to block ' + username)
        query_db(
            "INSERT INTO blocked_accounts (user_blocking, blocked_user) VALUES (?,?)",
            (session['username'], username), True)
    else:
        flash(
            'You have already submitted a blocking request, please wait for admin to review your request',
            'danger')
Beispiel #9
0
def user_lib_fake_user(username):

    already_reported_fake = query_db(
        "SELECT * FROM fake_accounts WHERE user_reporting=? AND fake_user=?",
        (session['username'], username))

    if not already_reported_fake:

        flash('User Account has been reported as fake', 'success')
        common_lib_log_history_moment(
            'fake report', session['username'], username,
            'You have reported ' + username + ' as a fake account')
        query_db(
            "INSERT INTO fake_accounts (user_reporting, fake_user) VALUES (?,?)",
            (session['username'], username), True)

    else:
        flash('You have already reported this user as fake', 'danger')
Beispiel #10
0
def check_if_users_match(username):
    user_1 = query_db("SELECT * FROM likes WHERE user_liking=? and user_liked=?", (session['username'], username))
    user_2 = query_db("SELECT * FROM likes WHERE user_liking=? and user_liked=?", (username, session['username']))
    match_check = query_db("SELECT * FROM matches WHERE (user_1=? AND user_2=?) OR (user_1=? AND user_2=?)", (session['username'], username, username, session['username']))

    if user_1 and user_2 and not match_check:
        flash("You and " + username + " have matched! You can now chat.", 'success')

        common_lib_log_history_moment('match', session['username'], username, 'You matched with ' + username + '<3')
        if not common_lib_check_if_blocked(username):
            common_lib_log_history_moment('match', username, session['username'], session['username'] + ' matched with you! <3')

        query_db("INSERT INTO matches (user_1, user_2) VALUES (?,?)", (session['username'], username), True)
        query_db("UPDATE users SET matches=matches+1 WHERE username=?", (session['username'],), True)
        query_db("UPDATE users SET matches=matches+1 WHERE username=?", (username,), True)
Beispiel #11
0
def common_lib_filter_blocked_accounts(sexuals):

    blocked_accounts = query_db("SELECT * FROM blocked_accounts WHERE user_blocking=?", (session['username'],))
    blocked_names_list = []

    for sexual in sexuals:
        for blocked_account in blocked_accounts:
            if sexual['username'] == blocked_account['blocked_user']:
                blocked_names_list.append(blocked_account['blocked_user'])

    return blocked_names_list
Beispiel #12
0
def wink(username):
    already_liked = query_db(
        "SELECT * FROM likes WHERE user_liking=? AND user_liked=?",
        (session['username'], username), False, True)
    if already_liked:
        flash(
            "Hey! You have already winked at this person , wait for then to wink back at you.",
            'danger')
        return redirect(url_for('profile_view', username=username))
    else:
        return user_lib_create_wink(username)
Beispiel #13
0
def validate_lib_handle_picture_upload(request):
    if request.files:
        if 'image' in request.files:
            image = request.files['image']
            if image.filename != '':
                try:
                    image.filename = re.sub(r" ?\([^)]+\)", "", image.filename)
                    photos.save(image)
                    flash('File uploaded', 'success')
                    query_db(
                        "INSERT INTO images (username, file_name) VALUES (?,?)",
                        (session['username'], image.filename), True)
                    query_db(
                        "UPDATE users SET pics = pics + 1 WHERE username=?",
                        (session['username'], ), True)
                except UploadNotAllowed:
                    flash('Invalid file upload format', 'danger')
                    return False
            else:
                flash('Uploaded file has an invalid file name', 'danger')
        return False
Beispiel #14
0
def get_profile_data(username):

    profile_data = {}
    user_profile = query_db(
        "SELECT * FROM users WHERE username=? AND user_type='regular'",
        (username, ), False, True)
    interests = query_db("SELECT * FROM interests WHERE username=?",
                         (username, ), False, True)
    matched = query_db(
        "SELECT * from matches WHERE (user_1=? AND user_2=?) OR (user_1=? AND user_2=?)",
        (username, session['username'], session['username'], username), False,
        True)
    pictures = query_db("SELECT * FROM images WHERE username=?", (username, ))
    winked = query_db(
        "SELECT * FROM likes WHERE (user_liking=? AND user_liked=?)",
        (session['username'], username))

    session_user = query_db("SELECT * FROM users WHERE username=?",
                            (session['username'], ), False, True)
    interest_list = []
    if 'id' in interests: interests.pop('id')
    if interests:
        for key, value in interests.items():
            if value == 1:
                interest_list.append(key)
    profile_data = {
        'session_user': session_user,
        'user_profile': user_profile,
        'interest_list': interest_list,
        'pictures': pictures,
        'matched': matched,
        'winked': winked
    }

    return profile_data
Beispiel #15
0
def check_valid_email(email):

    if not re.search("@", email):
        flash("Please use a valid email address, with a '@' symbol.", 'danger')
        return False
    elif not query_db("SELECT * FROM users WHERE email=?",
                      (email, ), False, True):
        flash(
            "A user with that email address does not exist, please try again.",
            'danger')
        return False
    else:
        return True
def sexual_suggestions(user):

    sex = user['sex_orientation']

    gender_filter = 'All'

    if sex == 'Homosexual':
        sex_filter = 'Homosexual'
        if user['gender'] == 'Male':
            gender_filter = 'Male'
        elif user['gender'] == 'Female':
            gender_filter = 'Female'

        if gender_filter == 'All':
            suggestions = query_db("SELECT * FROM users WHERE sex_orientation=? AND NOT username=?",
                                   (sex_filter, session['username']))
        else:
            suggestions = query_db("SELECT * FROM users WHERE gender=? AND sex_orientation=? AND NOT username=?",
                                   (gender_filter, sex_filter, session['username']))

    elif sex == 'Heterosexual':
        sex_filter = 'Heterosexual'
        if user['gender'] == 'Male':
            gender_filter = 'Female'
        elif user['gender'] == 'Female':
            gender_filter = 'Male'

        if gender_filter == 'All':
            suggestions = query_db("SELECT * FROM users WHERE sex_orientation=? AND NOT username=?",
                                   (sex_filter, session['username']))
        else:
            suggestions = query_db("SELECT * FROM users WHERE gender=? AND sex_orientation=? AND NOT username=?",
                                   (gender_filter, sex_filter, session['username']))

    else:

        suggestions = query_db("SELECT * FROM users WHERE NOT username=? AND NOT username=?", (session['username'], 'Admin'))

    return suggestions
def browsing_lib_get_suggested_user_profiles(user):

    interests = query_db("SELECT * FROM interests WHERE username=?", (user['username'],))

    interest_profiles = interest_suggestions(interests)

    sex_profiles = sexual_suggestions(user)

    fame_profiles = fame_suggestions(user)

    all_profiles = all_suggestions(sex_profiles, fame_profiles, interest_profiles)

    return all_profiles, sex_profiles, fame_profiles, interest_profiles
Beispiel #18
0
def user_lib_create_wink(username):
    query_db("INSERT INTO likes (user_liking, user_liked) VALUES (?,?)",
             (session['username'], username), True)

    flash("You have winked at " + username, 'success')

    common_lib_log_history_moment('wink', session['username'], username, 'You winked at ' + username)

    if not common_lib_check_if_blocked(username):
        common_lib_log_history_moment('wink', username, session['username'], session['username'] + ' winked at you!')

    query_db("UPDATE users SET likes=likes+1 WHERE username=?", (username,), True)
    check_if_users_match(username)
    query_db("UPDATE users SET fame = ((likes + matches + 1) * 100) WHERE username=?", (username,), True)
    query_db("UPDATE users SET fame = ((likes + matches + 1) * 100) WHERE username=?", (session['username'],), True)
    return redirect(url_for('profile_view', username=username))
Beispiel #19
0
def validate_lib_email_verification(token):

    username = decode_token(token)
    check = query_db("SELECT * FROM users WHERE username=?", (username, ),
                     False, True)
    if check:
        update_verified(username)
        flash("Email verified! Please login to continue.", 'success')
        return redirect(url_for('login'))
    else:
        flash(
            "There seems to be an error with your token, would you like s to resend the token?",
            'danger')
    return render_template("verification.html")
Beispiel #20
0
def admin_lib_validate_login(form):
    user = query_db("SELECT * FROM users WHERE email=? AND user_type='admin'",
                    (form.email.data, ), False, True)
    if user:
        check_password = bcrypt.check_password_hash(user['password'],
                                                    form.password.data)
        if check_password:
            set_session_values(user)
            flash(
                f"Welcome {user['username']}, you are logged into the Admin Portal!",
                'success')
            return redirect(url_for('admin'))
        else:
            flash("Password Incorrect", 'danger')
            return redirect(url_for('admin_login'))
    else:
        flash("Invalid Admin Login Details", 'danger')
        return redirect(url_for('admin_login'))
Beispiel #21
0
def user_lib_get_pictures(username):
    pictures = query_db("SELECT * FROM images WHERE username=?", (username,))
    return pictures
Beispiel #22
0
def validate_lib_update_profile_picture(filename):

    query_db("UPDATE users SET profile_pic=? WHERE username=?",
             (filename, session['username']), True)
    flash("Profile Picture Updated, You can now like other users profiles!",
          'success')
Beispiel #23
0
def common_lib_check_if_blocked(username):

    check_blocked = query_db("SELECT * FROM blocked_accounts WHERE user_blocking=? AND blocked_user=?",
                             (username, session['username']))

    return True if check_blocked else False
Beispiel #24
0
def admin_lib_get_block_requests():

    block_requests = query_db("SELECT * FROM blocked_accounts")

    return block_requests
Beispiel #25
0
def user_lib_validate_profile_update_form(form, user, post_form_interests, pictures):
    interest_list = ['travelling', 'exercise', 'movies', 'dancing', 'cooking', 'outdoors', 'pets', 'photography', 'sports']
    update_interests = []

    for interest in interest_list:
        if interest in post_form_interests:
            update_interests.append(1)
        else:
            update_interests.append(0)
    new_username = False
    new_email = False
    form.likes.data = user['likes']
    form.matches.data = user['matches']
    form.fame.data = user['fame']

    if not form.username.data == user['username']:
        new_username = True
        username = query_db("SELECT * FROM users WHERE username = ?", (form.username.data,), False, True)
        if username:
            flash("That username is already in use, please choose another one.", 'danger')
            return render_template("profile_update.html",  form=form, user=user)

    if not form.email.data == user['email']:
        new_email = True
        if re.search("@", form.email.data):
            email = query_db("SELECT * FROM users WHERE email = ?", (form.email.data,), False, True)
            if email:
                flash("That email is already in in use, plese choose another one.", 'danger')
                return render_template("profile_update.html",  form=form, user=user)
        else:
            flash("Please us a valid email address, with a '@' symbol.", 'danger')
            return render_template("profile_update.html", form=form, user=user)

    if new_username and new_email:
        query_db("UPDATE users SET username=?, email=?, gender=?, sex_orientation=? WHERE username=?",
                 (form.username.data, form.email.data, form.gender.data, form.sex_orientation.data, user['username']), True)
        query_db("UPDATE interests SET username=? WHERE username=?",
                 (form.username.data, session['username']), True)
        query_db(
            "UPDATE interests SET travelling=?, exercise=?, movies=?, dancing=?, cooking=?, outdoors=?, pets=?, photography=?, sports=? WHERE username=?",
            (update_interests[0], update_interests[1], update_interests[2], update_interests[3], update_interests[4],
             update_interests[5], update_interests[6], update_interests[7], update_interests[8], form.username.data), True)
        flash("Username and email updated, please click the link in the verification email we sent you to re-verify your account.", 'success')
        pop_session_values(form)
        send_verification_email(form)
        return redirect(url_for('login'))

    elif new_username:
        query_db("UPDATE users SET username=?, gender=?, sex_orientation=? WHERE username=?",
                 (form.username.data, form.gender.data, form.sex_orientation.data, session['username']), True)
        query_db("UPDATE interests SET username=? WHERE username=?",
                 (form.username.data, session['username']), True)
        query_db(
            "UPDATE interests SET travelling=?, exercise=?, movies=?, dancing=?, cooking=?, outdoors=?, pets=?, photography=?, sports=? WHERE username=?",
            (update_interests[0], update_interests[1], update_interests[2], update_interests[3], update_interests[4],
             update_interests[5], update_interests[6], update_interests[7], update_interests[8], form.username.data), True)
        flash("Username updated!", 'success')
        set_session_values(form)
        return redirect(url_for('profile_update'))

    elif new_email:
        query_db("UPDATE users SET email=?, gender=?, sex_orientation=? WHERE username=?",
                 (form.email.data, form.gender.data, form.sex_orientation.data, session['username']), True)
        flash("Email updated, please click the link in the verification email we sent you to re-verify your account.", 'success')
        pop_session_values()
        send_verification_email(form)
        return redirect(url_for('login'))

    query_db("UPDATE users SET gender=?, sex_orientation=?, bio=?, firstname=?, lastname=?, age=?, complete=? WHERE username=?",
             (form.gender.data, form.sex_orientation.data, form.bio.data, form.firstname.data, form.lastname.data, form.age.data, 'True', session['username']), True)

    query_db(
        "UPDATE interests SET travelling=?, exercise=?, movies=?, dancing=?, cooking=?, outdoors=?, pets=?, photography=?, sports=? WHERE username=?",
        (update_interests[0], update_interests[1], update_interests[2], update_interests[3], update_interests[4],
         update_interests[5], update_interests[6], update_interests[7], update_interests[8], session['username']), True)

    return redirect(url_for('profile_update', form=form, user=user, pictures=pictures))
Beispiel #26
0
def user_lib_unwink(username):
    query_db("DELETE FROM likes WHERE (user_liking=? AND user_liked=?)", (session['username'], username), True)
    query_db("UPDATE users SET likes=likes-1 WHERE username=?", (username,), True)
    flash("You have un-winked " + username, 'success')

    common_lib_log_history_moment('unwink', session['username'], username, 'You unwinked ' + username)
    if not common_lib_check_if_blocked(username):
        common_lib_log_history_moment('unwink', username, session['username'], session['username'] + ' unwinked you! :(')

    match_check = query_db("SELECT * FROM matches WHERE (user_1=? AND user_2=?) OR (user_1=? AND user_2=?)",
              (session['username'], username, username, session['username']))

    if match_check:
        user_1 = query_db("SELECT * FROM matches WHERE user_1=? AND user_2=?", (session['username'], username))
        user_2 = query_db("SELECT * FROM matches WHERE user_1=? AND user_2=?", (username, session['username']))
        if user_1:
            query_db("DELETE FROM matches WHERE user_1=? AND user_2=?", (session['username'], username), True)

        if user_2:
            query_db("DELETE FROM matches WHERE user_1=? AND user_2=?", (username, session['username']), True)

        testmatch = query_db("SELECT * FROM matches")
        print(testmatch)
        query_db("UPDATE users SET matches=matches-1 WHERE username=?", (session['username'],), True)
        query_db("UPDATE users SET matches=matches-1 WHERE username=?", (username,), True)

        common_lib_log_history_moment('unmatch', session['username'], username, 'You unmatched with ' + username)
        if not common_lib_check_if_blocked(username):
            common_lib_log_history_moment('unmatch', username, session['username'], session['username'] + ' unmatched with you! :(')

        flash("You have unmatched from " + username, 'success')

    query_db("UPDATE users SET fame = ((likes + matches + 1) * 100) WHERE username=?", (username,), True)
    query_db("UPDATE users SET fame = ((likes + matches + 1) * 100) WHERE username=?", (session['username'],), True)
    return redirect(url_for('profile_view', username=username))
Beispiel #27
0
def validate_lib_check_match(username):
    match_check = query_db(
        "SELECT * FROM matches WHERE (user_1=? AND user_2=?) OR (user_1=? AND user_2=?)",
        (session['username'], username, username, session['username']))
    return True if match_check else False
Beispiel #28
0
def update_verified(username):
    query_db("UPDATE users SET verified=? WHERE username=?", (True, username),
             True)
Beispiel #29
0
def user_lib_create_interests(username):

    query_db("INSERT INTO interests (username) VALUES (?)", (username, ), True)
Beispiel #30
0
def admin_lib_get_fake_requests():

    fake_requests = query_db("SELECT * FROM fake_accounts")

    return fake_requests