Beispiel #1
0
def login_page():

    if request.method == "POST":

        if current_user.get_id() is not None:
            flash('You are already logged in MovieShake as ' +
                  current_user.username)
            return redirect(url_for('page.home_page'))
        else:

            username = request.form['uname']
            passwordNotEncrypted = request.form['pass']

            if app.userlist.verify(username, passwordNotEncrypted) is not 0:
                flash('Please check your user name and password')
                return redirect(url_for('page.login_page'))
            else:
                with dbapi2._connect(app.config['dsn']) as connection:
                    cursor = connection.cursor()
                    query = "SELECT EMAIL FROM USERS WHERE (USERNAME = %s)"
                    cursor.execute(query, (username, ))
                    email = cursor.fetchone()

                userToLogin = User(username, email, passwordNotEncrypted)

                if login_user(userToLogin):
                    flash("Welcome, " + current_user.username)
                else:
                    flash("A problem occured, please try again.")

                return redirect(url_for('page.home_page'))

    else:
        return render_template('login.html')
Beispiel #2
0
def add_actor():
    #checks if user is logged in
    if current_user.get_id() is not None:
        with dbapi2._connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()

            if request.method == 'POST':
                NAME = request.form['NAME']
                SURNAME = request.form['SURNAME']
                GENDER = request.form['GENDER']
                BIRTHDATE = request.form['BIRTHDATE']
                COUNTRY = request.form['COUNTRY']

                with dbapi2.connect(app.config['dsn']) as connection:
                    cursor = connection.cursor()

                    query = """INSERT INTO ACTORS (NAME, SURNAME, GENDER, BIRTHDATE, COUNTRY) VALUES (%s, %s, %s, %s, %s)"""
                    cursor.execute(query,
                                   (NAME, SURNAME, GENDER, BIRTHDATE, COUNTRY))
                    connection.commit()

            return redirect('actors')
    else:
        flash("Please log in to MovieShake")
        return redirect(url_for('page.login_page'))
Beispiel #3
0
def update_series():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            ID = request.form['ID']
            TITLE = request.form['TITLE']
            STARTYEAR = request.form['STARTYEAR']
            ENDYEAR = request.form['ENDYEAR']
            SCORE = request.form['SCORE']
            VOTES = request.form['VOTES']
            PICTURE = request.form['PICTURE']
            DESCRIPTION = request.form['DESCRIPTION']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                state = """UPDATE SERIES SET(TITLE, STARTYEAR, ENDYEAR, SCORE, VOTES,PICTURE, DESCRIPTION) = (%s,%s,%s,%s,%s,%s,%s) WHERE ID=%s """

                cursor.execute(state, (TITLE, STARTYEAR, ENDYEAR, SCORE, VOTES,
                                       PICTURE, DESCRIPTION, ID))
                connection.commit()

        return redirect('series')
    else:
        flash("PlEASE LOG IN")
        return redirect(url_for('page.login_page'))
Beispiel #4
0
def edit_profile():
    if request.method == "GET":
        if current_user.get_id() is not None:
            return render_template('edit.html')
        else:
            flash("You're not logged in.")
            return redirect(url_for('page.login_page'))
    else:
        if current_user.get_id() is not None:
            new_username = request.form['username']
            new_email = request.form['email']
            new_password = request.form['password']

            with dbapi2._connect(current_app.config['dsn']) as connection:
                cursor = connection.cursor()
                query = "SELECT ID FROM USERS WHERE (USERNAME = %s)"
                cursor.execute(query, (new_username, ))
                user1 = cursor.fetchone()
                query = "SELECT ID FROM USERS WHERE (EMAIL =%s)"
                cursor.execute(query, (new_email, ))
                user2 = cursor.fetchone()
                if user1 is not None or user2 is not None:
                    if user1 is not None:
                        flash('Please choose a unique Username')
                    if user2 is not None:
                        flash('Please choose a unique E-mail.')
                    return redirect(url_for('page.edit_profile'))

            new_password_encrypted = pwd_context.encrypt(new_password)

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                query = """UPDATE USERS
                                SET USERNAME = %s, EMAIL = %s, PASSWORD = %s
                                WHERE USERNAME = %s;"""

                cursor.execute(query,
                               (new_username, new_email,
                                new_password_encrypted, current_user.username))
                connection.commit()
            return redirect(url_for('page.home_page'))
        else:
            flash("You're not logged in.")
            return redirect(url_for('page.login_page'))
Beispiel #5
0
def logout():
    if current_user.get_id() is not None:
        if logout_user():
            flash("Successfully logged out.")
        else:
            flash("Please try logging out again.")
    else:
        flash("You're not logged in.")

    return redirect(url_for('page.login_page'))
Beispiel #6
0
def filtered_groups(option, input):
    posts = MyProfile(current_user.username)
    groups = Groups()
    try:
        groups.filtered_groups(option, input, current_user.get_id())
    except:
        flash('Try again.')
    if request.method == 'POST':
        group = request.form['group_id']
        return redirect(url_for('group_info', group=group))
    return render_template("my_groups.html",
                           title="Found Groups",
                           posts=posts,
                           groups=groups.arr)
Beispiel #7
0
def login():
    form = LoginForm()
    if request.method == 'POST':
        if current_user.get_id() is not None:
            flash('You are already logged in !')
            return render_template("home.html", title="Login", form=form)

        mail = form.email.data
        password = form.password.data
        new_user = User.get_with_email(mail)
        if new_user and bcrypt.check_password_hash(new_user.password,
                                                   password):
            login_user(new_user)
            flash(f'Logged in successfuly!', 'success ')
            posts = MyProfile(current_user.username)
            return redirect(url_for('home_page'))
        else:
            flash('Email or password incorrect')
            return render_template("login.html", title="Login", form=form)
    else:
        if current_user.get_id() is not None:
            logout_user()
        return render_template('login.html', title="Login", form=form)
Beispiel #8
0
def delete_actor():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            ID = request.form['ID']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                query = """DELETE FROM ACTORS WHERE ID = '""" + ID + """' """
                cursor.execute(query)
                connection.commit()

        return redirect('actors')
    else:
        flash("Please log in to MovieShake")
        return redirect(url_for('page.login_page'))
Beispiel #9
0
def delete_news():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            ID = request.form['ID']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                state = """DELETE FROM NEWS WHERE ID=%s """

                cursor.execute(state, (ID))
                connection.commit()

        return redirect('news')
    else:
        flash("PlEASE LOG IN")
        return redirect(url_for('page.login_page'))
Beispiel #10
0
def search_users():

    if current_user.get_id() is None:
        flash("Please log in to MovieShake.")
        return redirect(url_for('page.login_page'))
    else:
        username_to_search = request.form['search_uname']
        with dbapi2._connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()
            query = "SELECT ID FROM USERS WHERE (USERNAME = %s)"
            cursor.execute(query, (username_to_search, ))
            userid = cursor.fetchone()
        if userid is not None:
            return redirect(url_for('page.user_profiles', user_id=userid[0]))
        else:
            flash("We could not find " + username_to_search +
                  ". He/She might be missing :)")
            return redirect(url_for('page.home_page'))
Beispiel #11
0
def profile_page():

    if current_user.get_id() is not None:
        movies = []
        lists = []
        userid = current_user.get_user_id()

        with dbapi2._connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()
            query = """SELECT TITLE, YEAR, m.SCORE, VOTES, IMDB_URL, m.MOVIEID FROM MOVIES m
                                 INNER JOIN WATCHEDLIST w ON (m.MOVIEID = w.MOVIEID)
                                 WHERE (w.USERNAME = %s) """

            cursor.execute(query, (current_user.username, ))

            for movie in cursor:
                movies.append(movie)

            query = """SELECT DISTINCT LIST_NAME FROM MOVIELIST WHERE (USER_ID = %s)"""

            cursor.execute(query, (userid, ))

            for list in cursor:
                lists.append(list[0])

            followingusers = []
            followingusers = current_user.get_following_users_by_userid()

            posts = []
            posts = current_user.get_posts()

            connection.commit()
            usernames = []
            usernames.append(current_user.username)
        return render_template('profile.html',
                               lists=lists,
                               movies=movies,
                               posts=posts,
                               followingusers=followingusers,
                               username=usernames)
    else:
        flash("Please log in to MovieShake")
        return redirect(url_for('page.login_page'))
Beispiel #12
0
def add_comments():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            USER_NAME = request.form['USER_NAME']
            SERIE_ID = request.form['SERIE_ID']
            DESCRIPTION = request.form['DESCRIPTION']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                state = """INSERT INTO COMMENTS (USER_NAME,SERIE_ID,DESCRIPTION) VALUES(%s,%s,%s)"""

                cursor.execute(state, (USER_NAME, SERIE_ID, DESCRIPTION))
                connection.commit()

        return redirect('series')
    else:
        flash("PlEASE LOG IN")
        return redirect(url_for('page.login_page'))
Beispiel #13
0
def home_page_1():
    if current_user.get_id() is None:
        return render_template('home2.html')
    else:
        current_userid = current_user.get_user_id()[0]
        lists = []

        with dbapi2._connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()
            query = """SELECT DISTINCT m.LIST_NAME, m.USER_ID, u.USERNAME FROM MOVIELIST m
                        INNER JOIN FOLLOWERS f ON (m.USER_ID = f.FOLLOWED_USER_ID)
                        INNER JOIN USERS u ON(u.ID = m.USER_ID)
                        WHERE (f.FOLLOWING_USER_ID = %s)"""

            cursor.execute(query, (current_userid, ))

            for list in cursor:
                lists.append(list[0:3])

            query = """SELECT u.USERNAME FROM USERS u
                        INNER JOIN FOLLOWERS f ON (u.ID = f.FOLLOWED_USER_ID)
                        WHERE(FOLLOWING_USER_ID = %s)"""

            cursor.execute(query, (current_userid, ))

            followings = []
            for following in cursor:
                followings.append(following[0])

            watcheds = []
            for followed in followings:
                query = """SELECT w.USERNAME, m.TITLE, m.IMDB_URL, w.SCORE FROM WATCHEDLIST w
                        INNER JOIN USERS u ON (u.USERNAME = w.USERNAME)
                        INNER JOIN MOVIES m ON (m.MOVIEID = w.MOVIEID)
                        WHERE (w.USERNAME = %s)
                        ORDER BY w.MOVIEID DESC"""

                cursor.execute(query, (followed, ))
                for watched in cursor:
                    watcheds.append(watched[0:4])

        return render_template('home.html', lists=lists, watcheds=watcheds)
Beispiel #14
0
def update_comments():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            ID = request.form['ID']
            USER_NAME = request.form['USER_NAME']
            SERIE_ID = request.form['SERIE_ID']
            DESCRIPTION = request.form['DESCRIPTION']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                state = """UPDATE SERIES SET(USER_NAME, SERIE_ID, DESCRIPTION) = (%s,%s,%s) WHERE ID=%s """

                cursor.execute(state, (USER_NAME, SERIE_ID, DESCRIPTION, ID))
                connection.commit()

        return redirect('/series')
    else:
        flash("PlEASE LOG IN")
        return redirect(url_for('page.login_page'))
Beispiel #15
0
def add_news():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            TITLE = request.form['TITLE']
            PICTURE = request.form['PICTURE']
            DESCRIPTION = request.form['DESCRIPTION']
            USER_NAME = request.form['USER_NAME']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                state = """INSERT INTO NEWS (TITLE,PICTURE,DESCRIPTION,USER_NAME) VALUES(%s,%s,%s,%s)"""

                cursor.execute(state, (TITLE, PICTURE, DESCRIPTION, USER_NAME))
                connection.commit()

        return redirect('series')
    else:
        flash("PlEASE LOG IN")
        return redirect(url_for('page.login_page'))
Beispiel #16
0
def update_actor():
    #checks if user is logged in
    if current_user.get_id() is not None:
        if request.method == 'POST':
            ID = request.form['ID']
            new_NAME = request.form['N_NAME']
            new_SURNAME = request.form['N_SURNAME']
            new_GENDER = request.form['N_GENDER']
            new_BIRTHDATE = request.form['N_BIRTHDATE']
            new_COUNTRY = request.form['N_COUNTRY']

            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                query = """UPDATE ACTORS SET( NAME, SURNAME, GENDER, BIRTHDATE, COUNTRY) = ( %s, %s, %s, %s, %s) WHERE ID = %s"""

                cursor.execute(query, (new_NAME, new_SURNAME, new_GENDER,
                                       new_BIRTHDATE, new_COUNTRY, ID))
                connection.commit()

        return redirect('actors')
    else:
        flash("Please log in to MovieShake")
        return redirect(url_for('page.login_page'))
Beispiel #17
0
    def getAll():

        #myclient = pymongo.MongoClient('mongodb+srv://%s:%[email protected]/ToDo?retryWrites=true&w=majority' % (MONGO_LOGIN, MONGO_PASS))
        #mydb = myclient["ToDo"]
        #mycollection = mydb["All Items"]
        myclient = pymongo.MongoClient(
            'mongodb://%s:%[email protected]:10255/DefaultDatabase?ssl=true&retrywrites=false&replicaSet=globaldb&maxIdleTimeMS=120000&appName=@module11-cosmos-serverless@'
            % (MONGO_LOGIN, MONGO_PASS))
        mydb = myclient["ToDo"]
        mycollection = mydb["All Items"]

        todo_resp = mycollection.find(
        )  # find method returns a cursor instance for iteration

        todo_list = [TodoItem.from_mongo_card(card)
                     for card in todo_resp]  ## returns list of dict

        # user authorization
        user_authorizaion = User(current_user.get_id())
        reader = user_authorizaion.get_role() == Role.Reader

        return render_template('all_items.html',
                               todos=ViewModel(todo_list, reader))
Beispiel #18
0
def user_profiles(user_id):
    if current_user.get_id() is not None:
        if current_user.get_user_id()[0] == int(user_id):
            return redirect(url_for('page.profile_page'))
        else:
            with dbapi2._connect(app.config['dsn']) as connection:

                cursor = connection.cursor()

                query = "SELECT USERNAME FROM USERS WHERE (ID = %s)"

                cursor.execute(query, (user_id, ))

                usr = cursor.fetchone()

                user = User(usr[0], "", "")

                if user is not None:
                    movies = []
                    lists = []
                    userid = user_id
                    with dbapi2._connect(
                            current_app.config['dsn']) as connection:
                        cursor = connection.cursor()
                        query = """SELECT TITLE, YEAR, m.SCORE, VOTES, IMDB_URL FROM MOVIES m
                                     INNER JOIN WATCHEDLIST w ON (m.MOVIEID = w.MOVIEID)
                                     WHERE (w.USERNAME = %s) """

                        cursor.execute(query, (user.username, ))

                    for movie in cursor:
                        movies.append(movie)

                    query = """SELECT DISTINCT LIST_NAME FROM MOVIELIST WHERE (USER_ID = %s)"""

                    cursor.execute(query, (userid, ))

                    for list in cursor:
                        lists.append(list[0])

                    followingusers = []
                    followingusers = user.get_following_users_by_userid()

                    followedusers = []
                    followedusers = user.get_followed_users_by_userid()

                    posts = []
                    posts = user.get_posts()
                    connection.commit()

                    currentuserid = current_user.get_user_id()
                    return render_template('userprofiles.html',
                                           userid=user_id,
                                           username=user.username,
                                           lists=lists,
                                           movies=movies,
                                           posts=posts,
                                           followingusers=followingusers,
                                           currentuserid=currentuserid,
                                           followedusers=followedusers)
                else:
                    flash("There is no such user.")
                    return redirect(url_for('page.home_page'))

    else:
        flash("Please log in to MovieShake")
        return redirect(url_for('page.login_page'))
Beispiel #19
0
def movies_page():

    if request.method == "POST":
        movie = Movie(request.form['title'].title(), "", "", "", "")
        score = request.form['score']
        comments = request.form['comment']

        if int(score) < 1 or int(score) > 10:
            flash("Your rating to the movie should be between 1 and 10.")
            return redirect(url_for('page.movies_page'))

        #checks if user is logged in
        if current_user.get_id() is not None:

            if (movie.search_movie_in_db() != -1):
                movieId = movie.search_movie_in_db()
                userMoviePair = WatchedList(current_user.username, movieId,
                                            score)
                post = Post(current_user.get_user_id(), movieId, comments)

                oldscore = userMoviePair.existsInWatchedList()

                if (oldscore != -1):
                    oldscore = oldscore[0]
                    if int(oldscore) == int(score):
                        flash("You have already added " + movie.title + ".")
                        return redirect(url_for('page.home_page'))
                    else:
                        userMoviePair.updateScoreOfWatchedMovie()

                        oldScoreMoviesTable = int(
                            movie.getscore_in_movie_db(movieId)[0])
                        totalVotes = int(
                            movie.getvotes_in_movie_db(movieId)[0])

                        newscore = ((oldScoreMoviesTable * totalVotes) -
                                    int(oldscore) + int(score)) / (totalVotes)

                        movie.update_votes_and_score(movieId, newscore,
                                                     totalVotes)

                        flash("You score to " + movie.title +
                              " is updated as " + score + ".")
                        return redirect(url_for('page.home_page'))

                else:
                    userMoviePair.add_movie_user_pair()

                    #score and vote need to be updated on movies table
                    oldscore = int(movie.getscore_in_movie_db(movieId)[0])
                    totalVotes = int(movie.getvotes_in_movie_db(movieId)[0])

                    newscore = ((oldscore * totalVotes) +
                                int(score)) / (totalVotes + 1)
                    totalVotes = totalVotes + 1

                    movie.update_votes_and_score(movieId, newscore, totalVotes)

                    post.add_post_to_db()

                    flash(
                        movie.title +
                        " is added to your watched list and your post has been saved."
                    )
                    return redirect(url_for('page.home_page'))

            else:
                movieToAdd = movie.verify_movie_from_api()
                if (movieToAdd == -1):
                    flash("There is no such movie")
                    return redirect(url_for('page.home_page'))
                else:
                    movieToAdd = movie.verify_movie_from_api()
                    movieToAdd.score = score

                    movieToAdd.add_movie_to_db()

                    flash(
                        movieToAdd.title + " (" + movieToAdd.year +
                        ") is added to your watched list and your post has been saved."
                    )

                    movieId = movieToAdd.search_movie_in_db()
                    userMoviePair = WatchedList(current_user.username, movieId,
                                                score)
                    userMoviePair.add_movie_user_pair()

                    post = Post(current_user.get_user_id(), movieId, comments)
                    post.add_post_to_db()

                    return redirect(url_for('page.home_page'))

        else:
            flash("Please log in to MovieShake")
            return redirect(url_for('page.login_page'))
    else:
        if current_user.get_id() is not None:
            return render_template('movies.html')
        else:
            flash("Please log in to MovieShake")
            return redirect(url_for('page.login_page'))