Пример #1
0
 def test_get_unread_messages_query(self):
     message_1 = Message(text='hi arthur',
                         sender=self.bob,
                         recipient=self.arthur,
                         chat=self.chat_bob_arthur,
                         was_read=True)
     message_2 = Message(text='hi bob',
                         sender=self.arthur,
                         recipient=self.bob,
                         chat=self.chat_bob_arthur)
     message_3 = Message(text='what\'s up',
                         sender=self.arthur,
                         recipient=self.bob,
                         chat=self.chat_bob_arthur)
     message_4 = Message(text='see you',
                         sender=self.arthur,
                         recipient=self.bob,
                         chat=self.chat_bob_arthur,
                         was_read=True)
     database.session.add_all([message_1, message_2, message_3, message_4])
     database.session.commit()
     messages = self.bob.get_unread_messages_query(self.chat_bob_arthur)
     self.assertIn(message_2, messages.all())
     self.assertIn(message_3, messages.all())
     self.assertEqual(len(messages.all()), 2)
Пример #2
0
def message_reply_api():
    content = request.form['content']
    author = request.form['author']
    email = request.form['email']
    message_id = request.form['message_id']
    password = request.form['password']
    code = int(request.form['code'])

    pattern = '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
    email_ok = re.match(pattern,email,flags=0)
    if content != '' and author != '' and email != '':
        if email_ok != None:
            admin_flag = False
            user = User.query.first()
            if user.verify_password(password):
                admin_flag = True
                author = user.nickname
            if code == 0:
                message = Message(content=content, author=author,
                              email=email, date=datetime.now(), admin_flag=admin_flag, replied_id=message_id)
            else:
                origin_author = request.form['origin_author']
                content = '回复@' + origin_author + '#  ' + content
                message = Message(content=content, author=author,
                                  email=email, date=datetime.now(), admin_flag=admin_flag, replied_id=message_id)
            db.session.add(message)
            db.session.commit()
            result = {'status': 0}
        else:
            result = {'status': 1}
    else:
        result = {'status': 2}
    return jsonify(result)
Пример #3
0
def reply(chat_id):
    chat = Chat.query.filter_by(id=chat_id).first_or_404()
    request_text = request.form['msg']
    request_msg = Message(chat_id=chat_id,
                          text=request_text,
                          author=Message.AUTHOR_USER,
                          order=chat.messages_count + 1)
    if app.config['NEURAL_LOGIC']:
        from app import sess, model, enc_vocab, rev_dec_vocab
        response_text = execute.decode_line(sess, model, enc_vocab,
                                            rev_dec_vocab, request_text)
    else:
        response_text = request.form['msg']

    response_msg = Message(chat_id=chat_id,
                           text=response_text,
                           author=Message.AUTHOR_BOT,
                           order=chat.messages_count + 2)
    for word in basic_tokenizer(request_text.encode()):
        db.session.add(UserWord(word=word))
    for word in basic_tokenizer(response_text.encode()):
        db.session.add(BotWord(word=word))

    chat.messages_count = chat.messages_count + 2

    db.session.add(request_msg)
    db.session.add(response_msg)
    db.session.commit()
    return jsonify(response_msg.as_dict())
Пример #4
0
    def test_chat_two_users_1(self):
        message1 = Message(text='hi there1',
                           sender=self.arthur,
                           recipient=self.bob,
                           was_read=True,
                           chat=self.chat_bob_arthur)
        message2 = Message(text='hi there2',
                           sender=self.arthur,
                           recipient=self.bob,
                           was_read=True,
                           chat=self.chat_bob_arthur)
        message3 = Message(text='hi there3',
                           sender=self.arthur,
                           recipient=self.bob,
                           chat=self.chat_bob_arthur)
        message4 = Message(text='hi there4',
                           sender=self.arthur,
                           recipient=self.bob,
                           chat=self.chat_bob_arthur)
        database.session.add_all([message1, message2, message3, message4])
        database.session.commit()

        user_chats = (database.session.query(Chat).join(
            UserChatTable, (UserChatTable.c.user_id == self.bob.id)
            & (UserChatTable.c.chat_id == Chat.id)).subquery())

        found_chat = (database.session.query(Chat).join(
            UserChatTable, (UserChatTable.c.user_id == self.arthur.id)
            & (UserChatTable.c.chat_id == Chat.id)).join(user_chats).first())
        self.assertEqual(self.chat_bob_arthur, found_chat)
Пример #5
0
    def test_get_number_of_all_messages(self, user_1, user_2,
                                        channel_to_test) -> None:
        app.config['WTF_CSRF_ENABLED'] = False
        with app.app_context():
            db.drop_all()
            db.create_all()
            db.session.add(user_1)
            db.session.add(user_2)
            db.session.add(channel_to_test)
            with app.test_client() as c:
                rv = login(c, user_1.email, 'testPassword')
                assert 'Log out' in str(rv.data)
                assert u.get_number_of_all_messages() == 0
                db.session.add(
                    Message(content='_',
                            time=datetime.utcnow(),
                            author_id=1,
                            target_channel=1))
                assert u.get_number_of_all_messages() == 1

                for _ in range(10):
                    db.session.add(
                        Message(content='_',
                                time=datetime.utcnow(),
                                author_id=2,
                                target_channel=1))

                assert u.get_number_of_all_messages() == 1

            with app.test_client() as c:
                rv = login(c, user_2.email, 'testPassword')
                assert 'Log out' not in str(rv.data)
                rv = login(c, user_2.email, 'testPassword2')
                assert 'Log out' in str(rv.data)
                assert u.get_number_of_all_messages() == 10
Пример #6
0
def application_response(app_id,response):
    application = Application.query.filter_by().first_or_404()
    application.status = response
    if response == 'Accepted':
        Message(direct_message='You application has been approved, use the enrollment key "thabo" to enroll in the course',tutors=application.tutors,lecturers=current_user.lecture)
    else:
        Message(direct_message='Unfortunatly your application did not meet the requirements, try applying for a different course, good luck!',tutors=application.tutors,lecturers=current_user.lecture)
    db.session.commit()
    return redirect(url_for('application.application_details',app_id=app_id))
Пример #7
0
def add_message(request):
    """
    把留言保存到数据库
    :param request:
    :return:返回响应Response
    """
    # 思考:如何知道request是GET还是POST?
    #       - request是不是对象?  是
    #       - request有什么属性和方法?  dir(request)
    # print(dir(request))
    # print(request.method)

    #  browser    --获得(GET)留言表单--->     server
    #  browser    <---把留言表返回给浏览器--- server
    #  browser    ----把填好的表单提交(POST)给server---> server
    #  ..... server 开始保存数据到数据库
    #  browser    < ------成功或失败的信息返回给浏览器---server

    # 如果是GET请求,把留言表单发给用户,让用户填写留言信息
    if request.method == 'GET':
        return render(request, template_name='msg2.html')

    # 如果是POST请求,从请求request中获取提交的内容
    if request.method == 'POST':
        # print(request.POST)
        c = {'msg': '提交成功!'}

        # 思考:如果获得提交的数据?
        message = request.POST
        print(message['name'])
        name = message.get('name', None)  # gavin  ''  None  False
        if not name:  # 如果name没有值
            c['name_error'] = "用户名不能为空!"
        email = message.get('email')
        address = message.get('address')
        content = message.get('message')
        print(name, email, address)

        # 思考:如何保存?
        #  - 首先用Message类创建一个对象
        # 方法一:
        msg = Message(name=name, email=email, address=address, content=content)
        # 方法二:
        msg = Message()
        msg.name = name
        msg.email = email
        msg.address = address
        msg.content = content

        #  - 然后,调用对象的保存方法来保存数据
        print(dir(msg))
        msg.save()  # insert  into  ***

        return render(request, template_name='msg2.html', context=c)
 def dohandler(self, eventModel):
     if eventModel.entityType == EntityType.DYNAMIC:
         message = Message(eventModel.actorId, eventModel.entityOwnerId,
                           '名为 ' + eventModel.dict['name'] + ' 的人评论了你的动态',
                           MessageType.NOTICE, eventModel.dict['detail'])
     else:
         message = Message(eventModel.actorId, eventModel.entityOwnerId,
                           '名为 ' + eventModel.dict['name'] + ' 的人回复了你的评论',
                           MessageType.NOTICE, eventModel.dict['detail'])
     db.session.add(message)
     db.session.commit()
Пример #9
0
def forum_messages(course_code):
    current_user.last_message_read_time = datetime.now()  # pragma: no cover
    db.session.commit()  # pragma: no cover
    form = MessageForm()  # pragma: no cover
    forum = Forum.query.filter_by(
        course=course_code).first_or_404()  # pragma: no cover
    course = Course.query.filter_by(
        course_code=course_code).first_or_404()  # pragma: no cover
    ordered_messages = forum.messages_received.order_by(
        Message.upvote_count.desc())  # pragma: no cover
    if request.method == 'GET':  # pragma: no cover
        page = request.args.get('page', 1, type=int)
        messages = forum.messages_received.paginate(
            page, current_app.config['POSTS_PER_PAGE'], False)
        next_url = url_for('messages.forum_messages',course_code=course_code ,page=messages.next_num) \
            if messages.has_next else None
        prev_url = url_for('messages.forum_messages',course_code=course_code, page=messages.prev_num) \
            if messages.has_prev else None

    if form.validate_on_submit():  # pragma: no cover
        myfile = request.files['message_attachment']
        if form.message.data == '':
            if myfile.filename == '':
                return redirect(
                    url_for('messages.forum_messages',
                            course_code=course_code))
        if myfile.filename == '':
            msg = Message(author=current_user,
                          body=form.message.data,
                          forum=forum,
                          upvote_count=0)
        else:  # pragma: no cover
            filename = secure_filename(myfile.filename)
            myfile.save(os.path.join(UPLOAD_FOLDER, filename))
            msg = Message(author=current_user,
                          body=form.message.data,
                          forum=forum,
                          attachment_name=filename,
                          upvote_count=0)

        db.session.add(msg)
        db.session.commit()

        return redirect(
            url_for('messages.forum_messages', course_code=course_code))
    return render_template(
        'messages/forum_messages.html',
        title='forum messages',
        messages=messages.items,
        next_url=next_url,
        prev_url=prev_url,
        form=form,
        course_code=course_code,
        ordered_messages=ordered_messages)  # pragma: no cover
Пример #10
0
def message_helper(self):
    u1 = User.query.filter_by(username="******").first()
    u2 = User(username="******", email="*****@*****.**")
    db.session.add(u2)
    for i in range(6):
        msg2 = Message(author=u1, recipient=u2, body="sent test")
        msg = Message(author=u2, recipient=u1, body="test")
        db.session.add_all([msg, msg2])
    db.session.commit()
    db.session.flush()
    return u1, u2, msg.id
Пример #11
0
    def setUp(self):
        super(ChatTestCase, self).setUp()

        admin = User(email='*****@*****.**',
                     nickname='Admin Tester',
                     github='https://github.com/wangtianxing1010')
        admin.set_password('123456')
        message1 = Message(body='Test Message 1')
        message2 = Message(body='Test Message 2')
        message3 = Message(body='Test Message 3')
        admin.messages = [message1, message2, message3]
        db.session.add(admin)
        db.session.commit()
Пример #12
0
def application_response(app_id,response):
    application = Application.query.filter_by(applicaton_id=app_id).first_or_404()# pragma: no cover
    application.status = response# pragma: no cover
    if response == 'Accepted':# pragma: no cover
        message = Message(body=f"Congratulations {application.tutors.user.firstname}. Your application for {application.courses.course_code} has been accepted. The lecturer will contact you regarding enrollment details.",
                            author=current_user , recipient=application.tutors.user)
    else:# pragma: no cover
        message = Message(body=f'Unfortunatly your application for {application.courses.course_code} did not meet the admission requirements. Try applying for a different course. Good luck!',
                            author=current_user , recipient=application.tutors.user)
    db.session.add(application)# pragma: no cover
    db.session.add(message)# pragma: no cover
    db.session.commit()# pragma: no cover

    return redirect(url_for('application.application_details',app_id=app_id))# pragma: no cover
Пример #13
0
def conversation(other):
    user = User.query.filter_by(username=other).first_or_404()
    form = MessageForm()
    if form.validate_on_submit():
        language = guess_language(form.message.data)
        if language == 'UNKNOWN' or len(language) > 5:
            language = ''
        msg = Message(author=current_user, recipient=user, body=form.message.data, language=language)
        db.session.add(msg)
        user.add_notification('unread_message_count', user.new_messages())
        db.session.commit()
        flash('Your message has been sent.')
        return redirect(url_for('main.conversation', other=other))
    page = request.args.get('page', 1, type=int)
    conversation = current_user.all_messages_with_other(user).paginate(
        page, current_app.config['POSTS_PER_PAGE'], False)
    next_url = url_for('main.conversation', page=conversation.next_num, other=other) if conversation.has_next else None
    prev_url = url_for('main.conversation', page=conversation.prev_num, other=other) if conversation.has_prev else None
    if conversation.total % current_app.config['POSTS_PER_PAGE'] == 0:
        last_page = conversation.total // current_app.config['POSTS_PER_PAGE']
    else:
        last_page = conversation.total // current_app.config['POSTS_PER_PAGE'] + 1
    last_url = url_for('main.conversation', page=last_page, other=other)
    return render_template('messages_with_other.html', conversation=conversation.items,
                           next_url=next_url, prev_url=prev_url, user=user,
                           title=user.username + ' - Conversation', form=form, last_url=last_url)
Пример #14
0
def save_msg():
    form = request.form
    author = form.get("author")
    content = form.get("content")
    msg = Message(author=author, content=content, time=datetime.now())
    msg.save()
    return jsonify(status='success')
Пример #15
0
def create_message():
    """给其它用户发送私信"""
    data = request.get_json()
    if not data:
        return bad_request('You must post JSON data.')
    if 'body' not in data or not data.get('body'):
        return bad_request('Body is required.')
    if 'recipient_id' not in data or not data.get('recipient_id'):
        return bad_request('Recipient id is required.')

    user = User.query.get_or_404(int(data.get('recipient_id')))
    if g.current_user == user:
        return bad_request('You cannot send private message to yourself.')
    if user.is_blocking(g.current_user):
        return bad_request('You are in the blacklist of {}'.format(
            user.username))
    message = Message()
    message.from_dict(data)
    message.sender = g.current_user
    message.recipient = user
    db.session.add(message)
    # 给私信接收者发送新私信通知
    user.add_notification('unread_messages_count', user.new_recived_messages())
    db.session.commit()
    response = jsonify(message.to_dict())
    response.status_code = 201
    # HTTP协议要求201响应包含一个值为新资源URL的Location头部
    response.headers['Location'] = url_for('api.get_message', id=message.id)
    return response
Пример #16
0
def create_message():
    """发送一条私信"""
    json_data = request.json

    if not json_data:
        return bad_request('You must post JSON data')
    if 'body' not in json_data and not json_data.get('body'):
        return bad_request('body is required')
    if 'recipient_id' not in json_data and not json_data.get('recipient_id'):
        return bad_request('recipient_id is required')

    user = User.query.get_or_404(json_data['recipient_id'])
    if g.current_user == user:
        return bad_request('You cannot send private message to yourself.')
    if user.is_blocking(g.current_user):
        return bad_request('You are in the blacklist of {}'.format(user.name if user.name else user.username))

    message = Message()
    message.from_dict(json_data)
    message.sender = g.current_user
    message.recipient = user
    db.session.add(message)
    db.session.commit()

    user.add_notification('unread_messages_count',user.new_recived_messages())

    response = jsonify(message.to_dict())
    response.status_code = 201
    response.headers['Location'] = url_for('api.get_message', id=message.id)

    return response
Пример #17
0
 def test_get_message(self):
     m = Message()
     m.content = 'test'
     m.add_or_update()
     m = Message.find_by_id(m.id)
     self.assertEqual(m.content, 'test')
     self.assertEqual(m.id, 1)
Пример #18
0
 def test_can_user_read_message(self):
     u1_name = 'john'
     u1_email = '*****@*****.**'
     u2_name = 'alex'
     u2_email = '*****@*****.**'
     u1 = User(username=u1_name, email=u1_email, password='******')
     u2 = User(username=u2_name, email=u2_email, password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     status = 'Accepted'
     time = datetime.datetime.utcnow()
     m1 = Message(id=random.randint(1000000, 9999999),
                  first_username=u1_name,
                  second_username=u2_name,
                  chat='Hello',
                  timestamp=time,
                  chat_by=u1_name)
     db.session.add(m1)
     db.session.commit()
     # john deletes a message with alex
     msg = Message.query.filter_by(first_username='******',
                                   second_username='******').first()
     msg.read_permission_first_user = False
     db.session.commit()
     self.assertFalse(Message.can_user_read_message(u1_name, msg.id))
Пример #19
0
def message_user(id_param):
    form = MessageForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    user = User.query.filter(User.id == current_user.id).first()
    user_to_message = User.query.filter(User.id == id_param).first()

    def message_info(self):
        return {
            "id": self.id,
            "read": self.read,
            "content": self.content,
            "recipient_id": self.recipient_id,
            "message_sender_id": self.message_sender_id,
            "created_at": self.created_at
        }

    if form.validate_on_submit():
        message_data = request.form.get('content')
        message = Message(
            read=False,
            content=message_data,
            recipient_id=user_to_message.id,
            message_sender_id=user.id,
        )
        db.session.add(message)
        db.session.commit()
        return message_info(message)
    return "Bad Data"
Пример #20
0
def follow():
    data = {}
    user_id = request.values.get('user_id', '', type=str)
    idol_id = request.values.get('idol_id', '', type=str)
    cancel = request.values.get('cancel', 0, type=int)
    user = User.query.get(user_id)
    idol = User.query.get(idol_id)
    if user and idol:
        fan = Fan.query.filter_by(user_id=user_id,
                                  idol_id=idol_id).limit(1).first()
        if not fan and not cancel and user_id != idol_id:
            follow_message_type = MessageType.query.filter_by(
                type='follow').first()
            # TODO: follow_message_type Factory
            fan = Fan(user_id=user_id, idol_id=idol_id)
            db.session.add(fan)
            message = Message(follow_message_type, idol, user)
            db.session.add(message)
            db.session.commit()
        elif fan and fan.is_deleted and not cancel:
            fan.is_deleted = False
        elif fan and cancel:
            fan.is_deleted = True
        data['status'] = SUCCESS
        data['message'] = SUCCESS_MSG
    else:
        data['status'] = PARAMETER_ERROR
        data['message'] = PARAMETER_ERROR_MSG
    return jsonify(data)
Пример #21
0
def send_messages(*args, **kwargs):
    try:
        sender = User.query.get(kwargs.get('user_id'))
        recipients = User.query.filter(User.id != kwargs.get('user_id'))
        for user in recipients:
            message = Message()
            message.body = kwargs.get('body')
            # 发送方是自己
            message.sender = sender
            # 接收方是所有其他用户
            message.recipient = user
            db.session.add(message)
            db.session.commit()
            text_body = '''
            你好,
            这是liyang的博客管理团队发出的群邮件
            '''
            html_body = '''
            <p>你好 {0},</p>
            <p>{1}</p>
            <p> ----来自于Admin的邮件</p>
            '''.format(user.username, message.body)
            send_email('[myBlog] 温馨提醒',
                       sender=app.config['MAIL_SENDER'],
                       recipients=[user.email],
                       text_body=text_body,
                       html_body=html_body,
                       sync=True)
        job = get_current_job()  # 当前后台任务
        task = Task.query.get(job.get_id())  # 通过任务ID查出对应的Task对象
        task.complete = True
        db.session.commit()

    except Exception:
        app.logger.error('群发失败:', exc_info=sys.exc_info())
Пример #22
0
def newmessage():
    if not current_user.is_authenticated:
        return redirect(url_for('index'))

    form = MessageForm()
    if form.validate_on_submit():
        s_name = current_user.display_name
        s_id = current_user.id
        receiver = User.query.filter_by(
            username=form.receiver_name.data).first()
        r_id = receiver.id
        content = form.content.data
        msg = Message(body=content,
                      sender_id=s_id,
                      sender_name=s_name,
                      receiver_id=r_id)
        db.session.add(msg)
        db.session.commit()
        flash('Message Sent!')
        return redirect(url_for('inbox'))
    #else:
    #flash('Error creating message. Please try again')

    return render_template('newmessage.html',
                           title='Create Message',
                           form=form)
Пример #23
0
def messages(username):
    if username == current_user.username:
        abort(404)
    profile = User.query.filter_by(username=username).first_or_404()
    if not current_user.is_connected_to(profile):
        return redirect(url_for("profile", username=username))

    messages = current_user.get_messages_with(profile).all()

    if request.method == 'POST':

        if request.form.get("errand") == "updates":
            if messages != current_user.get_messages_with(profile).all():
                new_messages = dict.fromkeys(x for x in dict.fromkeys(current_user.get_messages_with(profile).all()).keys() if x not in dict.fromkeys(messages).keys()).keys()
                messages = current_user.get_messages_with(profile).all()
                return json.dumps({'messages': [msg.content for msg in new_messages]})
            return json.dumps({'messages': []})

        content = request.form.get("content")
        if not content:
            return json.dumps({'status': 'Text-field required'})
        message = Message(content=content, sender=current_user, recipient=profile)
        db.session.add(message)
        db.session.commit()
        return json.dumps({'status': 'Successfully sent', 'message': content})

    return render_template('messages.html', profile=profile, messages=messages, enumerate=enumerate, messages_amount=len(messages))
Пример #24
0
 def dohandler(self, eventModel):
     message = Message(
         -1, eventModel.entityOwnerId, '您刚刚' + eventModel.dict['action'] +
         '了名称为 ' + eventModel.dict['orginlname'] + ' 的相册信息',
         MessageType.NOTICE, '')
     db.session.add(message)
     db.session.commit()
Пример #25
0
 def post(self):
     '''
     添加
     '''
     args = parse_form.parse_args()
     name = args.get('name')
     email = args.get('email')
     contact = args.get('contact')
     info = args.get('info')
     site = args.get('site')
     ip = request.remote_addr
     model_data = Message()
     model_data.name = name
     model_data.email = email
     model_data.contact = contact
     model_data.info = info
     model_data.ip = ip
     model_data.site = site
     if model_data.add():
         data = {'status': RET.OK, 'msg': 'Success', 'data': model_data}
         subject = '您有新的询盘,请注意查收!'
         html_body = '<p>姓名:%s</p>' \
                     '<p>邮箱:%s</p>' \
                     '<p>联系方式:%s</p>' \
                     '<p>留言内容:%s</p>' \
                     '<p>用户来源:%s</p>'% (name, email,contact,info,ip)
         _mail = SendMail(subject=subject, html_body=html_body)
         _mail.send_email()
         return marshal(data, sing_fields)
     abort(RET.BadRequest, msg='error')
Пример #26
0
def test_repr() -> None:
    channel = Channel(name='channelName', password='******')
    assert channel.__repr__() == "Channel(name='channelName')"

    user = User(username='******',
                password='******',
                email='*****@*****.**')
    assert user.__repr__() == "User(name='userName')"

    with app.app_context():
        db.drop_all()
        db.create_all()
        db.session.add(user)
        db.session.add(channel)

        channel_id = Channel.query.first().id
        user_id = User.query.first().id

    channel_allow_list = ChannelAllowList(user_id=user_id,
                                          channel_id=channel_id,
                                          user_role=UserRole.ADMIN.value)
    assert channel_allow_list.__repr__() == \
        f'ChannelAllowList(channel_id=1, user_id=1, user_role={UserRole.ADMIN.value})'

    time = datetime.utcnow()
    message = Message(content='content',
                      author_id=user_id,
                      target_channel=channel_id,
                      time=time)
    assert message.__repr__(
    ) == f"Message(author_id=1, target_channel=1, time={time})"
Пример #27
0
def user(username):
    user = User.query.filter_by(username=username).first_or_404()
    message_form = MessageForm()
    if message_form.validate_on_submit():
        message = Message(author=current_user,
                          recipient=user,
                          body=message_form.message.data)
        db.session.add(message)
        db.session.commit()
        user.add_notification('unread_message_count', user.new_messages())
        db.session.commit()
        flash('Your message has been sent!')
        return redirect(url_for('user', username=username))

    page = request.args.get('page', 1, type=int)
    schemes = user.schemes.order_by(Scheme.timestamp.desc()).paginate(
        page, app.config['SCHEMES_PER_PAGE'], False)
    next_url = url_for('index',
                       page=schemes.next_num) if schemes.has_next else None
    prev_url = url_for('index',
                       page=schemes.prev_num) if schemes.has_prev else None

    return render_template('user.html',
                           user=user,
                           schemes=schemes.items,
                           next_url=next_url,
                           prev_url=prev_url,
                           form=message_form)
Пример #28
0
def u(username):
    messages = None
    message_form = MessageForm()
    clear_message_form = ClearMessageForm()
    user = User.query.filter_by(username=username).first_or_404()
    current_user.message_sent = False
    current_user.message_removed = False

    if user != current_user:
        if message_form.validate_on_submit():
            message = Message(author=current_user,
                              recipient=user,
                              subject=message_form.message_subject.data,
                              body=message_form.message_textarea.data)
            db.session.add(message)
            db.session.commit()
            current_user.message_sent = True

    if user == current_user:
        if clear_message_form.validate_on_submit():
            message = Message.query.filter_by(
                id=clear_message_form.message_id.data).first()
            db.session.delete(message)
            db.session.commit()
            current_user.message_removed = True

        messages = current_user.messages_received.order_by(
            Message.timestamp.desc())

    return render_template("user.html",
                           user=user,
                           message_form=message_form,
                           clear_message_form=clear_message_form,
                           messages=messages)
Пример #29
0
 def dohandler(self, eventModel):
     userid = eventModel.entityId
     message = Message(eventModel.actorId, userid,
                       '名为 ' + eventModel.dict['name'] + ' 的用户关注了你',
                       MessageType.NOTICE, '')
     db.session.add(message)
     db.session.commit()
Пример #30
0
def user(username):
    form = MessageForm()
    user = User.query.filter_by(username=username).first_or_404()
    page = request.args.get('page', 1, type=int)
    posts = user.posts.order_by(Post.timestamp.desc()).paginate(
        page, current_app.config['POSTS_PER_PAGE'], False)
    next_url = url_for('main.user', username=username,
                       page=posts.next_num) if posts.has_next else None
    prev_url = url_for('main.user', username=username,
                       page=posts.prev_num) if posts.has_prev else None

    if form.validate_on_submit():
        msg = Message(author=current_user,
                      recipient=user,
                      body=form.message.data)
        user.add_notification('unread_message_count', user.new_messages())
        db.session.add(msg)
        db.session.commit()
        flash(_('Your message has been sent to {}.'.format(user.username)))
    return render_template('user.html',
                           user=user,
                           posts=posts.items,
                           next_url=next_url,
                           prev_url=prev_url,
                           form=form,
                           recipient=username)