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')
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'))
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'))
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'))
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'))
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)
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)
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'))
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'))
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'))
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'))
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'))
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)
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'))
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'))
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'))
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))
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'))
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'))