示例#1
0
    async def add_message(self, request):
        """Registers a new message for the user."""
        session = await get_session(request)
        user_id = session.get('user_id')
        if not user_id:
            raise web.HTTPNotAuthorized()
        form = await request.post()

        if form.get('text'):
            user = await self.mongo.user.find_one(
                {'_id': ObjectId(session['user_id'])}, {
                    'email': 1,
                    'username': 1
                })

            await self.mongo.message.insert({
                'author_id':
                ObjectId(user_id),
                'email':
                user['email'],
                'username':
                user['username'],
                'text':
                form['text'],
                'pub_date':
                datetime.datetime.utcnow()
            })
        return redirect(request, 'timeline')
示例#2
0
    async def unfollow_user(self, request):
        """Removes the current user as follower of the given user."""
        username = request.match_info['username']
        session = await get_session(request)
        user_id = session.get('user_id')
        if not user_id:
            raise web.HTTPNotAuthorized()

        whom_id = await db.get_user_id(self.mongo.user, username)
        if whom_id is None:
            raise web.HTTPFound()

        await self.mongo.follower.update(
            {'who_id': ObjectId(session['user_id'])},
            {'$pull': {'whom_id': whom_id}})
        return redirect(request, 'user_timeline', parts={"username": username})
示例#3
0
    async def follow_user(self, request):
        """Adds the current user as follower of the given user."""
        username = request.match_info['username']
        session = await get_session(request)
        user_id = session.get('user_id')

        if not user_id:
            raise web.HTTPNotAuthorized()

        whom_id = await db.get_user_id(self.mongo.user, username)

        if whom_id is None:
            raise web.HTTPFound()

        await self.mongo.follower.update_many(
            {'who_id': ObjectId(user_id)},
            {'$push': {'whom_id': whom_id}}, upsert=True)

        return redirect(request, 'user_timeline', username=username)
示例#4
0
 async def wrapped(self, request):
     user_id = await authorized_userid(request)
     if not user_id:
         raise web.HTTPNotAuthorized()
     return (await f(self, request))