예제 #1
0
    def put(self, post_id):
        """Update an existing blog post."""
        try:
            post = ctrl.update_blog_post_with_id(post_id, request.json)
        except ctrl.BlogControlError as err:
            return JSendResponse.new_fail(err.message).jsonify(), 400

        return JSendResponse.new_success(post).jsonify(post_format='stripped')
예제 #2
0
    def post(self):
        """Create a new blog post."""
        try:
            post = ctrl.create_new_blog_post(request.get_json())
        except ctrl.BlogControlError as err:
            return JSendResponse.new_fail(err.message).jsonify(), 400

        return JSendResponse.new_success(post).jsonify(post_format='stripped')
예제 #3
0
    def post(self):
        """Verify login data and respond with a new timed auth token."""
        # TODO: current user object or at least user-id
        # should be stored in session to decrease db access
        # Response should probably also include timeout (for cookie info)
        username = request.authorization.username
        try:
            user = Ctrl.get_user_with_name(username)
        except Ctrl.AdminControlException as err:
            return JSendResponse.new_error(err.message).jsonify()

        token = user.generate_auth_token()
        return JSendResponse.new_success(token.decode('ascii')).jsonify()
예제 #4
0
    def get(self, post_id=None):
        """Get an existing blog post or a list of existing blog posts."""
        try:
            if post_id is not None:
                post_or_posts = ctrl.get_blog_post_with_id(post_id)
            else:
                post_or_posts = ctrl.get_all_blog_posts()
        except ctrl.BlogControlError as err:
            return JSendResponse.new_fail(err.message).jsonify(), 400

        try:
            return JSendResponse.new_success(post_or_posts).jsonify(post_format=request.args.get('format', 'stripped'))
        except SerializationError as err:
            return JSendResponse.new_fail(err.message).jsonify(), 400
예제 #5
0
    def get(self, user_id=None):
        """Get an existing user."""
        if user_id is not None:
            user_or_users = Ctrl.get_user_with_id(user_id)
        else:
            user_or_users = Ctrl.get_all_users()

        return JSendResponse.new_success(user_or_users).jsonify()
예제 #6
0
 def get(self):
     """Just check if logged in."""
     return JSendResponse.new_success('authorized').jsonify()
예제 #7
0
 def delete(self, user_id):
     """Delete an existing user."""
     return JSendResponse.new_fail('not implemented').jsonify(), 400
예제 #8
0
 def post(self):
     """Create a new user."""
     user = Ctrl.create_new_user(request.get_json())
     return JSendResponse.new_success(user).jsonify()
예제 #9
0
def handle_500(err):
    if hasattr(err, 'data') and err.data.get('rest', False):
        return JSendResponse.new_error(str(err)).jsonify(), 500
    else:
        return render_template('500.html', title='Internal Server Error'), 500
예제 #10
0
def handle_404(err):
    if hasattr(err, 'data') and err.data.get('rest', False):
        return JSendResponse.new_fail(str(err)).jsonify(), 404
    else:
        return render_template('404.html', title='Not Found'), 404
예제 #11
0
def handle_error(err):
    return JSendResponse.new_fail('%d: %s' % (err.code, err.description)).jsonify(), err.code
예제 #12
0
def unauthorized():
    return JSendResponse.new_fail('unauthorized').jsonify(), 401
예제 #13
0
 def delete(self, post_id):
     """Delete an existing blog post."""
     ctrl.delete_blog_post_with_id(post_id)
     return JSendResponse.new_success().jsonify()