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')
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})
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)
async def wrapped(self, request): user_id = await authorized_userid(request) if not user_id: raise web.HTTPNotAuthorized() return (await f(self, request))