Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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))
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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!'
Пример #8
0
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')
Пример #9
0
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)
Пример #10
0
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)