예제 #1
0
 def post(self):
     post_args = self.post_parser.parse_args()
     channel_name = post_args.get('channel')
     channel = Channel.query.filter_by(name=channel_name).first()
     now = datetime.utcnow()
     tags = post_args.get('tags') or []
     if not channel:
         return jsonify(
             message='Please choose a channel for publishing.'), 404
     try:
         post = Post()
         post.name = post_args.get('name')
         post.channel = channel.name
         post.content = post_args.get('content')
         post.publish_time = now
         post.save()
         for tag in tags:
             t = Tag.query.filter_by(name=tag).first() or Tag()
             t.post_id = post.id
             t.name = tag
             t.save()
     except IntegrityError:
         db.session.rollback()
         return jsonify(message='Post {} already exists.'.format(
             post_args.get('name'))), 409
     return jsonify(marshal(post, self.post_fields)), 201