def view_messages(username, viewPage=1): form = PrivateMessageForm() formModalMessage = PrivateMessageForm() fromUser = User.objects.get(username=session.get('username')) fetchNotifications(fromUser) toUser = User.objects.get(username=username) privateMessagesList = PrivateMessage.objects.filter( Q(fromUser=fromUser, toUser=toUser) | Q(fromUser=toUser, toUser=fromUser)).order_by('createDate') if '/page' not in request.path: tempList = privateMessagesList.paginate(page=1, per_page=5) viewPage = tempList.pages viewPage = int(viewPage) if viewPage == 0: viewPage = 1 print(viewPage) privateMessagesList = privateMessagesList.paginate(page=viewPage, per_page=5) print(privateMessagesList.page) notification = Notification.objects.filter( fromUser=toUser.username, toUser=fromUser.username).first() if notification != None: nlist = session.get('notifications') nlist.remove(notification) session['notifications'] = nlist notification.delete() return render_template('feed/private_message.html', form=form, user=fromUser, toUser=toUser, privateMessages=privateMessagesList, formModalMessage=formModalMessage)
def like_message(message_id): message = None formModalMessage = PrivateMessageForm() message = Message.objects.filter(id=message_id).first() if not message: abort(404) if message and message.parent: abort(404) fromUser = User.objects.get(username=session.get('username')) fetchNotifications(fromUser) existing_like = Message.objects.filter(parent=message_id, fromUser=fromUser).count() if not existing_like: like = Message(fromUser=fromUser, toUser=message.fromUser, messageType=LIKE, parent=message_id).save() return redirect(url_for('feed_app.message', message_id=message.id))
def message(message_id, feed_id=None): form = FeedPostForm() message = None formModalMessage = PrivateMessageForm() message = Message.objects.filter(id=message_id).first() if not message: abort(404) if message and message.parent: abort(404) if form.validate_on_submit() and session.get('username'): fromUser = User.objects.get(username=session.get('username')) fetchNotifications(fromUser) post = form.post.data comment = Message(fromUser=fromUser, text=post, messageType=COMMENT, parent=message_id).save() return redirect(url_for('feed_app.message', message_id=message.id)) return render_template('feed/message.html', message=message, form=form, formModalMessage=formModalMessage)
def send_message(): form = PrivateMessageForm() ref = request.referrer if request.method == 'POST': if form.validate_on_submit(): fromUser = User.objects.get(username=session.get('username')) fetchNotifications(fromUser) toUser = User.objects.get(username=request.values.get('toUser')) message = form.message.data message = PrivateMessage( fromUser=fromUser, toUser=toUser, text=message, createDate=str(now.strftime("%Y-%m-%d %H:%M"))).save() form.message.data = "" notification = Notification(fromUser=fromUser.username, toUser=toUser.username, notificationType="message") notification.save() return redirect(ref)
def login(): form = LoginForm() error = None formModalMessage = PrivateMessageForm() if request.method == 'GET' and request.args.get('next'): session['next'] = request.args.get('next', None) if form.validate_on_submit(): user = User.objects.filter(username=form.username.data, ).first() if user: if user.password == hashpw(form.password.data.encode('UTF_8'), user.password.encode('UTF_8')).decode(): session['username'] = form.username.data if 'next' in session: next = session.get('next') session.pop('next') return redirect(next) else: return redirect(url_for('home_app.home')) else: user = None if not user: error = "Incorrect credentials" return render_template('user/login.html', form=form, error=error, formModalMessage=formModalMessage)
def profile(username, page=1, viewPage=1): formModalMessage = PrivateMessageForm() logged_user = None rel = None friends_page = False user = User.objects.filter(username=username).first() profile_messages = [] if user: if session.get('username'): logged_user = User.objects.filter( username=session.get('username')).first() rel = Relationship.get_relationship(logged_user, user) fetchNotifications(logged_user) # get friends friends = Relationship.objects.filter(fromUser=user, rel_type=Relationship.FRIENDS, status=Relationship.APPROVED) friends_total = friends.count() if 'friends' in request.url: friends_page = True friends = friends.paginate(page=friends_page, per_page=8) else: friends = friends[:5] form = FeedPostForm() # get user messages if friends if logged_user and (rel == "SAME" or rel == "FRIENDS_APPROVED"): profile_messages = Message.objects.filter( Q(fromUser=user) | Q(toUser=user), messageType=POST, ).order_by('-create_date') viewPage = int(viewPage) print(viewPage) print(page) profile_messages = profile_messages.paginate(page=viewPage, per_page=5) return render_template('user/profile.html', user=user, logged_user=logged_user, rel=rel, friends=friends, friends_total=friends_total, friends_page=friends_page, form=form, profile_messages=profile_messages, formModalMessage=formModalMessage) else: abort(404)
def add_message(): ref = request.referrer form = FeedPostForm() formModalMessage = PrivateMessageForm() if form.validate_on_submit(): fromUser = User.objects.get(username=session.get('username')) fetchNotifications(fromUser) toUser = User.objects.get(username=request.values.get('toUser')) image = None if request.files.get('image'): filename = secure_filename(form.image.data.filename) file_path = "images/posts/" + str(uuid.uuid4()) + filename file_pathB = "static/" + file_path form.image.data.save(file_pathB) image = str(file_path) print(image) print("Image gotten") print("AfterImage") print(image) post = form.post.data if toUser == fromUser: toUser = None message = Message( fromUser=fromUser, toUser=toUser, text=post, messageType=POST, ).save() feed = Feed(user=fromUser, message=message).save() if image: message.image = image message.save() process_message(message) if ref: return redirect(ref) else: return redirect(url_for('home_app.home')) else: return 'Error!'
def home(page = 1): if session.get('username'): notificationsList = [] formModalMessage = PrivateMessageForm() form = FeedPostForm() user = User.objects.filter( username=session.get('username') ).first() # get user messages feed_messages = Feed.objects.filter(user = user).order_by('-createDate') page = int(page) feed_messages = feed_messages.paginate(page = page, per_page = 5) for x in feed_messages.items: print(x.message.image) notifications = Notification.objects.filter(toUser = user.username) if notifications != None: for x in notifications: notificationsList.append(x) session['notifications'] = notificationsList return render_template('home/feed_home.html', user=user, form=form, feed_messages=feed_messages, formModalMessage = formModalMessage ) else: return render_template('home/home.html')
def change_password(): require_current = True error = None form = PasswordResetForm() formModalMessage = PrivateMessageForm() user = User.objects.filter(username=session.get('username')).first() if not user: abort(404) if request.method == 'POST': if form.validate_on_submit(): if user.password == hashpw( form.current_password.data.encode('utf8'), user.password.encode('utf8')).decode(): salt = gensalt() hashed_password = hashpw(form.password.data.encode('utf8'), salt).decode() print(type(hashed_password)) user.password = hashed_password user.save() # if user is logged in, log him out if session.get('username'): session.pop('username') return redirect(url_for('user_app.password_reset_complete')) else: error = "Incorrect password" fetchNotifications(user) return render_template('user/password_reset.html', form=form, require_current=require_current, error=error, formModalMessage=formModalMessage)
def edit(): error = None message = None user = User.objects.filter(username=session.get('username')).first() formModalMessage = PrivateMessageForm() if user: form = EditForm(obj=user) fetchNotifications(user) if form.validate_on_submit(): # check if image image_ts = None if request.files.get('image'): filename = secure_filename(form.image.data.filename) file_path = "images/user/" + str(uuid.uuid4()) + filename file_pathB = "static/" + file_path form.image.data.save(file_pathB) image_ts = str(file_path) print(image_ts) # check if new username if user.username != form.username.data.lower(): if User.objects.filter( username=form.username.data.lower()).first(): error = 'Username already exists' else: session['username'] = form.username.data.lower() form.username.data = form.username.data.lower() # check if new email if user.email != form.email.data.lower(): if User.objects.filter(email=form.email.data.lower()).first(): error = 'Email already exists' else: code = str(uuid.uuid4()) user.change_configuration = { "new_email": form.email.data.lower(), "confirmation_code": code } user.email_confirmed = False form.email.data = user.email message = "You will need to confirm the new email to complete this change" # email the user body_html = render_template('mail/user/change_email.html', user=user, host=WEBSITE_ADDRESS) body_text = render_template('mail/user/change_email.txt', user=user, host=WEBSITE_ADDRESS) email(user.change_configuration['new_email'], "Confirm your new email", body_html, body_text) if not error: form.populate_obj(user) if image_ts: user.profile_image = image_ts print("image_ts") print(image_ts) user.save() if not message: message = "Profile updated" return render_template('user/edit.html', form=form, error=error, message=message, user=user, formModalMessage=formModalMessage) else: abort(404)