def chat(id): db_sess = db_session.create_session() form = ChatForm() chat = db_sess.query(Chat).filter(Chat.id == id).first() if not chat: return render_template("chat_not_found.html", title='Чат не найден') user = db_sess.query(User).filter(User.id == current_user.id).first() if not db_sess.query(User_Chat).filter((User_Chat.user_id == user.id) & (User_Chat.chat_id == chat.id)).first(): return render_template("kuda_polez.html", title='Чат') if form.validate_on_submit(): message = Message() message.text = form.message.data message.user = user message.chat = chat # chat.messages.append(message) # current_user.messages.append(message) db_sess.add(message) db_sess.commit() form.message.data = '' return render_template("chat.html", title='Чат', form=form, chat_title=chat.title, chat=chat)
def mess(id): db_sess = db_session.create_session() form = MessageForm() if session.get('user_id', -1) == -1: return redirect('/login') elif not db_sess.query(User).filter(User.id == id).first(): return '''user not registred </br><a href="/">mainpage<a>''' elif id == session.get('user_id'): msg = db_sess.query(Message).filter(Message.reciever == id).all() title='Входящие' else: title='Исходящие для ' + db_sess.query(User).filter(User.id == id).first().name msg = db_sess.query(Message).filter(Message.reciever == id).filter(Message.author == session.get('user_id')).all() if form.validate_on_submit(): message = Message( content=form.text.data, author=session.get('user_id'), reciever = id) db_sess.add(message) db_sess.commit() return redirect('/msg/' + str(id)) if session.get('user_id', -1) != -1: username = db_sess.query(User).filter(User.id == session.get('user_id')).first().name else: username = '******' print(session.get('user_id')) return render_template("messages.html",title=title,id=id, form=form, msg=msg, username=username).replace('<', '<').replace('>', '>')
def discussions(exchange_id): if current_user.is_authenticated: session = db_session.create_session() exchange_list = session.query(Exchange).filter(Exchange.to_user_id == current_user.id).all() from_message_list = session.query(Message).filter(Message.exchange_id == exchange_id).all() message_list = [] for message in from_message_list: message_list.append((1, message.message, message.time_sent)) paired_exchange_id = session.query(Exchange.paired_exchange_id).filter(Exchange.id == exchange_id).first() to_message_list = session.query(Message).filter(Message.exchange_id == paired_exchange_id[0]).all() for message in to_message_list: message_list.append((0, message.message, message.time_sent)) message_list = sorted(message_list, key=lambda x: x[2]) new_exchange_list = [] for exchange in exchange_list: op_book_name = session.query(Exchange.book_name).filter(Exchange.paired_exchange_id == exchange.id).first()[0] op_name = session.query(User.username).filter(User.id == exchange.from_user_id).first()[0] new_exchange_list.append((exchange.book_name + ' X ' + op_book_name, op_name, exchange.id)) if request.method == 'POST': session = db_session.create_session() exchange = Message(exchange_id=exchange_id, message=request.form.get('write_msg')) session.add(exchange) session.commit() session.close() return redirect(url_for('discussions', exchange_id=exchange_id)) return render_template('discussions.html', exchange_list=new_exchange_list, message_list=message_list) else: return redirect('/signup')
def dialogue_window(dialogue): if current_user.is_authenticated: dialogue = int(dialogue) form = SendForm() db_session.global_init("data.db") db_sess = db_session.create_session() if form.validate_on_submit(): message = Message( sender_id=current_user.id, receiver_id=dialogue, content=form.window.data ) db_sess.add(message) db_sess.commit() messages = [] if db_sess.query(Message).filter((Message.sender_id == current_user.id) | (Message.receiver_id == current_user.id)).all(): for message in db_sess.query(Message).filter((Message.sender_id == current_user.id) | (Message.receiver_id == current_user.id)).all(): messages.append(message) return render_template('messages.html', title='Сообщения', form=form, messages=messages) else: return redirect('/login')
def add_post(): # обработчик страницы добавления поста session = db_session.create_session() form = MessageForm() if form.validate_on_submit(): time = datetime.datetime.now() if len(str(time.day)) == 1: day = '0' + str(time.day) else: day = time.day if len(str(time.month)) == 1: month = '0' + str(time.month) # извлечение даты else: month = time.month if len(str(time.hour + 3)) == 1: hour = '0' + str(time.hour + 3) else: hour = time.hour + 3 if len(str(time.minute)) == 1: minute = '0' + str(time.minute) else: minute = time.minute time = '.'.join([str(day), str(month), str(time.year)]) + ' ' + \ ':'.join([str(hour), str(minute)]) message = Message() # извлечение всего остального message.name = form.name.data message.content = form.content.data message.user_id = current_user.id message.time = time session.add(message) session.commit() return redirect("/forum") else: return render_template('add_message.html', title='Добавление новости', form=form, value_sumbit="Опубликовать")
def post(self): """Добавить новое сообщение""" args = parser.parse_args() session = db_session.create_session() # noinspection PyArgumentList message = Message( text=args['text'], user_id=args['user_id'], dialogue_id=args['dialogue_id'], ) session.add(message) session.commit() return jsonify({'success': 'OK'})
def complete_getting_messages(self, response): if response["status"] == "OK": if response["messages"]: self.on_messages_list_label.hide() try: cached_messages = set( self.message_cache[self.current_chat.chat_id]) except: cached_messages = set() all_messages = [] for m in response["messages"]: msg = Message(data=m["data"], type=m["type"].value, viewed=m["viewed"], chat_id=self.current_chat.chat_id, sent_by=m["sent_by"], unix_time=m["unix_time"], key=m["key"], signature=m["signature"]) all_messages.append(msg) all_messages_set = set(all_messages) messages_to_show = all_messages_set - cached_messages if messages_to_show: messages_to_show = list(messages_to_show) if platform.system() == "Darwin": for msg in messages_to_show: if msg.sent_by != credentials["username"]: os.system(f'''osascript -e \'display notification "{msg.data}" with title "{msg.sent_by}" sound name "Chord"\'''') messages_to_show.sort(key=lambda x: x.unix_time) self.add_messages(messages_to_show) self.cache_messages(messages_to_show) if self.current_chat.chat_id in self.message_cache: self.message_cache[ self.current_chat.chat_id] += messages_to_show else: self.message_cache[ self.current_chat.chat_id] = messages_to_show self.messages_list.scrollToBottom() self.update_statuses_thread.args = [all_messages] self.update_statuses_thread.start() else: print(response["error"])
def complete_file_upload(self, response): if response["status"] == "OK": del response["status"] data = json.dumps(response).encode("utf-8") row = len(self.messages_list) message = Message(data=data, type=MessageTypes.Document, viewed=False, chat_id=self.current_chat.chat_id, sent_by=credentials["username"], row=row) self.send_message_thread.args = [ MessageTypes.Document, data, self.current_chat.chat_id, self.current_chat.username, row, message ] self.send_message_thread.start() self.cache_messages([message]) self.add_messages([message]) else: QtWidgets.QMessageBox().critical(self, " ", response["error"])
def start_sending_message(self): try: text = self.message_text_edit.toPlainText() self.message_text_edit.setPlainText("") self.message_text_edit.repaint() self.messages_list.scrollToBottom() row = len(self.messages_list) message = Message(data=text, type=MessageTypes.Text, viewed=False, chat_id=self.current_chat.chat_id, sent_by=credentials["username"], row=row) self.send_message_thread.args = [ MessageTypes.Text, bytes(text, "utf-8"), message.chat_id, self.current_chat.username, row, message ] self.send_message_thread.start() self.cache_messages([message]) self.add_messages([message], True) except Exception as e: logging.error(e)
def handleMessage(data): db_sess = db_session.create_session() try: if data['role'] == 'ban': # Сообщения бана или разбана пользователя user = db_sess.query(User).filter(User.id == data['id']).first() if user.banned: user.banned = 0 else: user.banned = 1 elif data['role'] == 'del_mes': # Сообщения удаления сообщений по id if db_sess.query(Message).filter( Message.id == int(data['id'])).first(): db_sess.query(Message).filter( Message.id == int(data['id'])).delete() else: del_mes_inf = 'Сообщения с данным ID не найдено' db_sess.commit() except KeyError: # Сообщения в чате if str(current_user).split( '>')[0] == '<User' and not current_user.banned: print(f"Message: {data}" ) # Отображение полученного сообщения в консоли send(data, broadcast=True) message = Message() message.text = data['msg'] try: # Предотвращение ошибок в случае анонимного пользователя message.is_from_admin = current_user.get_role() message.user_name = current_user.get_name() except AttributeError: message.is_from_admin = False message.user_name = 'Anonymous' db_sess.add(message) db_sess.commit()