Пример #1
0
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('&lt;', '<').replace('&gt;', '>')
Пример #3
0
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')
Пример #4
0
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')
Пример #5
0
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="Опубликовать")
Пример #6
0
    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'})
Пример #7
0
    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"])
Пример #8
0
 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"])
Пример #9
0
 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)
Пример #10
0
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()