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...')
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)
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
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...')
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']))
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...')
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...')
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...')
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...')
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'])
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)
def delete_user_messages(self): messages = Message.find_by_sender_id(self._id) for message in messages: message.delete_on_elastic() message.delete()
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...')
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...')
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]))