Exemple #1
0
def all_messages(user_id):
    try:
        user_nickname = User.find_by_id(session['_id']).nick_name

        if request.method == 'POST':
            form_ = request.form['Search_message']

            messages = Message.search_find_all(form_, user_id)

            labels = label_maker(messages, user_id)

            return render_template('messages/messages.html',
                                   messages=messages,
                                   user_nickname=user_nickname,
                                   form=form_,
                                   labels=labels)
        messages = Message.search_find_all('', user_id)
        labels = label_maker(messages, user_id)

        return render_template('messages/messages.html',
                               messages=messages,
                               user_nickname=user_nickname,
                               labels=labels)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(
            error_msg=''.join(error_msg),
            error_location='my_recived_messages-during message finding')
        Error_obj.save_to_mongo()
        return render_template(
            'error_page.html',
            error_msgr='Crashed during reading your messages')
def send_message():

    try:
        all_users = User.get_all()
        recivers = []

        if request.method == 'POST':
            title = request.form['title']
            content = request.form['content']

            if request.form['reciver_email'] in [None, [], ""]:
                return render_template(
                    'messages/send_message.html',
                    e=
                    'Your receiver field is empty. Please fill in at least ONE receiver.',
                    all_users=all_users,
                    title=title,
                    content=content)

            try:
                # reciver_id = User.find_by_email(request.form['reciver_email'])._id
                recivers_string = request.form['reciver_email'].split()

                for email in recivers_string:
                    recivers.append(User.find_by_email(email)._id)

            except Exception:
                return render_template(
                    'messages/send_message.html',
                    e=
                    "Please Check That you have coped EXACTLY the target user's email! And separated the emails with spaces!!",
                    all_users=all_users,
                    title=title,
                    content=content)

            sender_id = User.find_by_email(session['email'])._id

            message = Message(title=title,
                              content=content,
                              reciver_id=recivers,
                              sender_id=sender_id)
            message.save_to_mongo()

            return redirect(url_for('.my_sended_messages', user_id=sender_id))

        return render_template('messages/send_message.html',
                               all_users=all_users)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='send_message message sending')
        Error_obj.save_to_mongo()
        return render_template(
            'error_page.html',
            error_msgr='Crashed during sending your message...')
Exemple #3
0
def secession_chatbox(secession_chatbox_id):
    user_chatboxs = ChatBox.get_user_chatboxs(session['_id'])
    if secession_chatbox_id is not None:
        chatbox_obj = ChatBox.find_by_id(secession_chatbox_id)
        chatbox_obj.user_ids.remove(session['_id'])
        chatbox_obj.save_to_mongo()
        current_user_name = User.find_by_id(session['_id']).nick_name

        # flash('Successfully secessioned chatbox ' + chatbox_obj.name)
        flash(
            '{ "message":"Successfully secessioned chatbox " + chatbox_obj.name, "type":"success" , "captaion":"Chatbox Secession", "icon_id": "fas fa-sign-out-alt"}'
        )
        message_bar = Message(title="User %s has secessioned." %
                              (current_user_name),
                              content=None,
                              reciver_id=None,
                              sender_id=None,
                              sender_name="System")
        message_bar.save_to_mongo()
        return redirect(url_for('chatboxs.chatboxs'))

    if request.method == 'POST':
        if secession_chatbox_id is not None:
            chatbox_obj = ChatBox.find_by_id(secession_chatbox_id)
            chatbox_obj.user_ids.remove(session['_id'])
            chatbox_obj.save_to_mongo()

            # flash('Successfully secessioned chatbox '+ chatbox_obj.name)
            flash(
                '{ "message":"Successfully secessioned chatbox " + chatbox_obj.name, "type":"success" , "captaion":"Chatbox Secession", "icon_id": "fas fa-sign-out-alt"}'
            )
            return redirect(url_for('chatboxs.chatboxs'))
        secession_chatboxes = request.form.getlist('secession_chatboxes')
        chatbox_objs = []
        for _id in secession_chatboxes:
            if ChatBox.find_by_id(_id) is not None:
                chatbox_objs.append(ChatBox.find_by_id(_id))
        for chatbox in chatbox_objs:
            chatbox.user_ids.remove(session['_id'])
            chatbox.save_to_mongo()
        return redirect(url_for('chatboxs.chatboxs'))
    # socketio.emit('secession')
    return render_template('chatboxs/secession_chatbox.html',
                           user_chatboxs=user_chatboxs)
Exemple #4
0
    def limit_find_messages(self):
        try:
            messages = []

            if len(self.messages) < 20:
                for message in self.messages:
                    message_obj = Message.find_by_id_chat(message)
                    if message_obj is not None:
                        messages.append(message_obj)
                return messages
            else:
                for message in self.messages[20:]:
                    message_obj = Message.find_by_id_chat(message)
                    if message_obj is not None:
                        messages.append(message_obj)
                return messages

        except TypeError:
            return None
Exemple #5
0
def message(message_id, is_sended=False):

    try:

        message = Message.find_by_id(message_id)

        if message is None:
            pass

        if message.readed_by_reciver is False and is_sended is False and session[
                '_id'] in message.reciver_id and message.readed_date is None:
            message.readed_by_reciver = True
            message.readed_date = datetime.datetime.now()
            message.save_to_mongo()
            message.update_to_elastic()

        sender_nickname = User.find_by_id(message.sender_id).nick_name
        if type(message.reciver_id) is list:
            reciver_nickname = []
            for reciver in message.reciver_id:
                reciver_nickname.append(User.find_by_id(reciver).nick_name)

        else:
            reciver_nickname = User.find_by_id(message.reciver_id).nick_name

        if message.is_a_noteOBJ:
            try:
                note = Note.find_by_id(message.content)
            except:
                note = None
        else:
            note = None
        resp = make_response(
            render_template('messages/message.html',
                            message=message,
                            sender_nickname=sender_nickname,
                            reciver_nickname=reciver_nickname,
                            is_a_note=message.is_a_noteOBJ,
                            note=note,
                            join_group_redirect_info=','.join(
                                [message_id, message.is_invtation])))

        return resp

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='message message reading')
        Error_obj.save_to_mongo()

        return render_template('base_htmls/error_page.html',
                               error_msgr='Crashed during reading message...')
Exemple #6
0
def save_message(methods=['GET', 'POST']):
    chatbox_ = ChatBox.find_by_id(session['chatbox_id'])
    title = None
    content = request.form['content']
    if content is '':
        return redirect(
            url_for('chatboxs.chatbox', chatbox_id=session['chatbox_id']))

    sender = User.find_by_email(session['email'])
    sender_name = sender.nick_name
    sender_id = sender._id

    message = Message(title=title,
                      content=content,
                      reciver_id=session['chatbox_id'],
                      sender_id=sender_id,
                      is_a_noteOBJ=False,
                      sender_name=sender_name)
    message.save_to_mongo()
    message.save_to_elastic()

    chatbox_.messages.extend([message._id])
    chatbox_.save_to_mongo()

    return redirect(
        url_for('chatboxs.chatbox', chatbox_id=session['chatbox_id']))
Exemple #7
0
def register_user():

    try:
        if request.method == 'POST':

            email = request.form['email']
            password = request.form['password']
            nick_name = request.form['nickname']

            try:
                if User.register_user(email, password, nick_name):
                    user_id = User.find_by_email(email)._id
                    session['email'] = email
                    session['_id'] = user_id
                    message = Message(
                        title="Welcome to Note-it™!",
                        content="""Welcome to Note-it! You can make a note,
                                            and share it with other users! Or you can
                                            just keep the note to your selves.
                                            You can send messages to other users too! Check out this website!!""",
                        reciver_id=list(user_id),
                        sender_id=User.find_by_email('*****@*****.**')._id)
                    message.save_to_mongo()
                    return redirect(url_for("home"))

            except UserErrors.UserError as e:
                return e.message

        return render_template("users/register.html")

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(
            error_msg=''.join(error_msg),
            error_location='register_user while registering user')
        Error_obj.save_to_mongo()
        return render_template('error_page.html',
                               error_msgr='Crashed during registering you...')
Exemple #8
0
def my_recived_messages(user_id):
    try:
        messages_by_db = Message.find_by_reciver_id(user_id)
        user_nickname = User.find_by_id(session['_id']).nick_name

        if request.method == 'POST':
            form_ = request.form['Search_message']

            messages = Message.search_on_elastic(form_, user_id)

            try:
                for message in messages:
                    if type(message) is 'NoneType':
                        messages.remove(message)
            except TypeError:
                pass

            if messages is None:
                messages = []

            return render_template('messages/my_recived_messages.html',
                                   messages=messages,
                                   user_nickname=user_nickname,
                                   form=form_)
        return render_template('messages/my_recived_messages.html',
                               messages=messages_by_db,
                               user_nickname=user_nickname)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(
            error_msg=''.join(error_msg),
            error_location='my_recived_messages-during message finding')
        Error_obj.save_to_mongo()
        return render_template(
            'base_htmls/error_page.html',
            error_msgr='Crashed during reading your messages')
def all_messages():
    try:
        all_messagess = Message.find_all()

        return render_template('messages/all_messages.html',
                               all_messagess=all_messagess)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='message reading')
        Error_obj.save_to_mongo()
        return render_template(
            'error_page.html',
            error_msgr='Crashed during reading your messages...')
Exemple #10
0
def send_message(user_to_send=None):

    try:
        all_users = User.get_all()

        if request.method == 'POST':
            title = request.form['title']
            content = request.form['content']

            if request.form.getlist("user") in [None, [], ""]:
                return render_template(
                    'messages/send_message.html',
                    e=
                    "You hadn't selected an reciver. Please select at least ONE reciver.",
                    all_users=all_users,
                    title=title,
                    content=content)

            else:

                recivers = request.form.getlist("user")
            sender = User.find_by_email(session['email'])
            sender_name = sender.nick_name
            sender_id = sender._id

            message = Message(title=title,
                              content=content,
                              reciver_id=recivers,
                              sender_id=sender_id,
                              is_a_noteOBJ=False,
                              sender_name=sender_name,
                              is_chat_message=False)
            message.save_to_mongo()
            message.save_to_elastic()

            return redirect(url_for('.my_sended_messages', user_id=sender_id))

        if user_to_send is not None:
            return render_template('messages/send_message.html',
                                   all_users=all_users,
                                   user_to_send=user_to_send)
        else:
            return render_template('messages/send_message.html',
                                   all_users=all_users)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='send_message message sending')
        Error_obj.save_to_mongo()
        return render_template(
            'base_htmls/error_page.html',
            error_msgr='Crashed during sending your message...')
def delete_message(message_id):
    try:
        message = Message.find_by_id(message_id)

        message.delete()
        return redirect(url_for('.my_recived_messages',
                                user_id=session['_id']))

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='delete_message message deleting')
        Error_obj.save_to_mongo()
        return render_template(
            'error_page.html',
            error_msgr='Crashed during deleteing your message...')
def my_recived_messages(user_id):
    try:
        messages = Message.find_by_reciver_id(user_id)
        user_nickname = User.find_by_id(session['_id']).nick_name

        return render_template('messages/my_recived_messages.html',
                               messages=messages,
                               user_nickname=user_nickname)
    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(
            error_msg=''.join(error_msg),
            error_location='my_recived_messages-during message finding')
        Error_obj.save_to_mongo()
        return render_template(
            'error_page.html',
            error_msgr='Crashed during reading your messages')
def message(message_id, is_sended=False):

    try:

        message = Message.find_by_id(message_id)

        if message is None:
            return 'There was an server error. Please try again a another time!'

        if message.readed_by_reciver is False and is_sended is False and session[
                '_id'] in message.reciver_id and message.readed_date is None:
            message.readed_by_reciver = True
            message.readed_date = datetime.datetime.now()
            message.save_to_mongo()

        sender_nickname = User.find_by_id(message.sender_id).nick_name
        if type(message.reciver_id) is list:
            reciver_nickname = []
            for reciver in message.reciver_id:
                reciver_nickname.append(User.find_by_id(reciver).nick_name)

        else:
            reciver_nickname = User.find_by_id(message.reciver_id).nick_name

        return render_template('messages/message.html',
                               message=message,
                               sender_nickname=sender_nickname,
                               reciver_nickname=reciver_nickname)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='message message reading')
        Error_obj.save_to_mongo()

        return render_template('error_page.html',
                               error_msgr='Crashed during reading message...')
Exemple #14
0
def delete_message(message_id):
    try:
        message = Message.find_by_id(message_id)
        message.delete_on_elastic()
        message.delete()

        # flash('Your message has successfully deleted.')
        flash(
            '{ "message":"Your message has successfully deleted.", "type":"success" , "captaion":"Delete Success", "icon_id": "far fa-check-circle"}'
        )

        return redirect(url_for('.my_recived_messages',
                                user_id=session['_id']))

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='delete_message message deleting')
        Error_obj.save_to_mongo()
        return render_template(
            'base_htmls/error_page.html',
            error_msgr='Crashed during deleteing your message...')
Exemple #15
0
def send(json, methods=['POST', 'GET']):
    chatbox_ = ChatBox.find_by_id(session['chatbox_id'])
    title = None
    content = json['content']
    if content is '':
        return
    else:
        sender = User.find_by_email(session['email'])
        sender_name = sender.nick_name
        sender_id = sender._id

        message = Message(title=title,
                          content=content,
                          reciver_id=session['chatbox_id'],
                          sender_id=sender_id,
                          is_a_noteOBJ=False,
                          sender_name=sender_name,
                          is_chat_message=True)
        message.save_to_mongo()
        try:
            message.save_to_elastic()
        except:
            pass

        chatbox_.messages.extend([message._id])
        chatbox_.save_to_mongo()

        # make response data for emit
        response_data = {
            "created_date": message.sended_date.strftime('%m/%d/%Y'),
            "content": message.content,
            "sender_name": message.sender_name,
            "sender_id": message.sender_id,
            "chatbox_members": chatbox_.user_ids
        }

        socketio.emit('chat response',
                      response_data,
                      broadcast=True,
                      room=json['room'])
Exemple #16
0
def invite_friend():
    user_ = User.find_by_id(session['_id'])
    group_ = Group.find_by_id(user_.group_id)
    group_name = group_.name

    all_friends_ = get_friends_whitout_added()

    if request.method == 'POST':
        users = request.form.getlist('users')
        if users == []:
            return render_template('groups/invite_friend.html',
                                   friends=all_friends_,
                                   group_name=group_name,
                                   error_msg='You havn\'t submitted anything!',
                                   group_id=group_._id)
        else:

            for member in users:
                message = Message(title='Do you want to join my group?',
                                  content='''
                    Join me on group {}!
                    If you want to join, please click the link below.
                '''.format(group_.name),
                                  is_invtation=group_._id,
                                  reciver_id=member,
                                  sender_id=user_._id)
                message.save_to_elastic()
                message.save_to_mongo()

            # flash('Successfully sended invitations to friends!')
            flash(
                '{ "message":"Successfully sended invitations to friends!", "type":"success" , "captaion":"Invitation Sended", "icon_id": "far fa-check-circle"}'
            )

        return redirect(url_for('groups.group', group_id=group_._id))

    return render_template('groups/invite_friend.html',
                           friends=all_friends_,
                           group_name=group_name,
                           group_id=group_._id)
Exemple #17
0
    def delete_user_messages(self):
        messages = Message.find_by_sender_id(self._id)

        for message in messages:
            message.delete_on_elastic()
            message.delete()
Exemple #18
0
def send_note_radio(note_id):
    try:
        note = Note.find_by_id(note_id)
        all_notes = Note.get_all()
        all_users = User.get_all()

        if request.method == 'POST':

            try:
                note = Note.find_by_id(request.form['note'])
            except:

                error_msg = traceback.format_exc().split('\n')

                Error_obj = Error_(
                    error_msg=''.join(error_msg),
                    error_location='send_note note finding/reading')
                Error_obj.save_to_mongo()

                return render_template(
                    'base_htmls/error_page.html',
                    error_msgr='Crashed during preparing page...')

            message_title = request.form['title']

            if request.form.getlist("user") in [None, [], ""]:
                return render_template(
                    'messages/send_note.html',
                    e=
                    "You hadn't selected an reciver. Please select at least ONE reciver.",
                    all_users=all_users,
                    title=message_title,
                )

            else:

                recivers = request.form.getlist("user")

            sender_id = User.find_by_email(session['email'])._id

            message = Message(title=message_title,
                              content=note._id,
                              reciver_id=recivers,
                              sender_id=sender_id,
                              is_a_noteOBJ=True)
            message.save_to_mongo()
            message.save_to_elastic()

            # flash('Your message has been successfully sended.')
            flash(
                '{ "message":"Your message has been successfully sended.", "type":"success" , "captaion":"Send Success", "icon_id": "far fa-check-circle"}'
            )

            return redirect(url_for('.my_sended_messages', user_id=sender_id))

        return render_template('messages/send_note.html',
                               all_notes=all_notes,
                               all_users=all_users,
                               note_=note)

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='message message sending')
        Error_obj.save_to_mongo()

        return render_template('base_htmls/error_page.html',
                               error_msgr='Crashed during sending message...')
Exemple #19
0
def create_group():
    try:
        if request.method == 'GET':

            all_firends_diclist = gen_all_friends_diclist()

            return render_template('groups/create_group.html',
                                   all_firends=all_firends_diclist)

        if request.method == 'POST':
            user = User.find_by_id(session['_id'])

            name = request.form['name']
            members = request.form.getlist('members')
            members.append(user._id)
            group_img = request.files['file']

            description = request.form['description']
            share = request.form['inputGroupSelect01']
            try:

                if group_img is not None:
                    file_name, file_extenstion = os.path.splitext(
                        group_img.filename)
                    if file_extenstion not in ALLOWED_GROUP_IMG_FORMATS:
                        all_firends_diclist = gen_all_friends_diclist()
                        return render_template(
                            'groups/create_group.html',
                            all_firends=all_firends_diclist,
                            error_msg=
                            'Too much images!! Please upload just one image.',
                            name=name,
                            members=members,
                            share=share,
                            description=description)

                    # saving file
                    # create name for file
                    sid = shortid.ShortId()
                    # create path for file
                    file_path, file_extenstion = os.path.splitext(
                        group_img.filename)
                    filename = secure_filename(
                        sid.generate()) + file_extenstion

                    # os.chdir("static/img/file/")
                    # save file and add file to filenames list
                    group_img.save(os.path.join(filename))
                else:
                    filename = None
            except:
                group_img = None
                filename = None

            # saving group
            group_id = uuid.uuid4().hex

            group_for_save = Group(_id=group_id,
                                   name=name,
                                   members=[user._id],
                                   group_img_name=filename,
                                   shared=share,
                                   shared_notes=[],
                                   description=description)
            group_for_save.save_to_mongo()
            try:
                group_for_save.save_to_elastic()
            except:
                pass

            # # saving to user
            user.group_id = group_id
            user.save_to_mongo()

            # sending messages to users

            for member in members:
                message = Message(title='Do you want to join my group?',
                                  content='''
                    Join me on group {}!
                    If you want to join, please click the link below.
                '''.format(group_for_save.name),
                                  is_invtation=group_id,
                                  reciver_id=member,
                                  sender_id=user._id,
                                  sender_name=user.nick_name)
                try:
                    message.save_to_elastic()
                except:
                    pass
                message.save_to_mongo()

            # redirecting
            # flash('Successfully created group! | Sended invitations to users')
            flash(
                '{ "message":"Successfully created group! | Sended invitations to users", "type":"info" , "captaion":"Success", "icon_id": "fas fa-info-circle"}'
            )

            return redirect(url_for('groups.groups'))

    except:
        error_msg = traceback.format_exc().split('\n')

        Error_obj = Error_(error_msg=''.join(error_msg),
                           error_location='create_group creating group')
        Error_obj.save_to_mongo()
        return render_template(
            'base_htmls/error_page.html',
            error_msgr='Crashed during creating your group...')
Exemple #20
0
def join_group_(list_):
    list__ = list_.split(',')
    user_ = User.find_by_id(session['_id'])
    # saving group with user id

    group_ = Group.find_by_id(list__[1])

    # checking if user can join group
    if group_ is None:
        # flash('The group you want to join does not exist!')
        flash(
            '{ "message":"The group you want to join does not exist!", "type":"error" , "captaion":"Group Find Error", "icon_id": "fas fa-exclamation-triangle"}'
        )
        return redirect(url_for('groups.groups'))
    # checking if user had alerady joined group
    if session['_id'] in group_.members:
        # flash('You\'ve already joined this group!')
        flash(
            '{ "message":"You\'ve already joined this group!", "type":"info" , "captaion":"Group Join", "icon_id": "fas fa-question-circle"}'
        )
        return redirect(url_for('groups.group', group_id=group_._id))

    if user_.group_id is not None:
        # flash('You\'ve already joined a group. If you want to join this group, please secession the other group.')
        flash(
            '{ "message":"You\'ve already joined a group. If you want to join this group, please secession the other group.", "type":"warning" , "captaion":"Group Join Error", "icon_id": "fas fa-exclamation-triangle"}'
        )
        return redirect(url_for('groups.group', group_id=group_._id))

    else:

        if len(group_.members) >= 25:
            # flash('Sorry, this group\'s member amount has reached it\'s limit!')
            flash(
                '{ "message":"Sorry, this group\'s member amount has reached it\'s limit!", "type":"info" , "captaion":"Group Join", "icon_id": "fas fa-question-circle"}'
            )

            return redirect(url_for('groups.groups'))

        group_.members.extend([session['_id']])
        group_.save_to_elastic()
        group_.save_to_mongo()

        # saving to user database
        user_.group_id = group_._id
        user_.save_to_mongo()
        # flash('Joined group successfully')
        flash(
            '{ "message":"Joined group successfully", "type":"success" , "captaion":"Group Join", "icon_id": "fas fa-info-circle"}'
        )

    # if invatation, then remove the message and flash a message
    message = Message.find_by_id(list__[0])
    message.delete_on_elastic()
    message.delete()

    # adding to group alerts - to alert users that someone joined

    notifi = Notification(title='User {} has joined'.format(user_.nick_name),
                          content='',
                          target=group_._id,
                          type='to_group')
    notifi.save_to_mongo()

    # adding group _id to session
    session['group_id'] = group_._id

    # flashing
    # flash('Your invitation has expired.')
    flash(
        '{ "message":"Your invitation has expired.", "type":"info" , "captaion":"Invitation Expired", "icon_id": "fas fa-info-circle"}'
    )

    # redirecting

    return redirect(url_for('.group', group_id=list__[1]))