コード例 #1
0
ファイル: models.py プロジェクト: jeffknupp/sandman_new
 def _created_response(resource):
     """Return an HTTP 201 "Created" response."""
     content_type = _get_acceptable_response_type()
     if content_type == JSON:
         response = jsonify(resource)
         response.status_code = 201
     else:
         assert content_type == HTML
         return render_template('resource.html', resource=resource)
コード例 #2
0
 def _created_response(resource):
     """Return an HTTP 201 "Created" response."""
     content_type = _get_acceptable_response_type()
     if content_type == JSON:
         response = jsonify(resource)
         response.status_code = 201
     else:
         assert content_type == HTML
         return render_template('resource.html', resource=resource)
コード例 #3
0
 def _single_resource(self, resource):
     content_type = _get_acceptable_response_type()
     if content_type == JSON:
         response = jsonify(resource)
         response.status_code = 200
     else:
         assert content_type == HTML
         return render_template('resource.html',
                                resource=resource,
                                tablename=self.__model__.__name__,
                                primary_key=self.primarky_key())
コード例 #4
0
ファイル: models.py プロジェクト: jeffknupp/sandman_new
 def _single_resource(self, resource):
     content_type = _get_acceptable_response_type()
     if content_type == JSON:
         response = jsonify(resource)
         response.status_code = 200
     else:
         assert content_type == HTML
         return render_template(
             'resource.html',
             resource=resource,
             tablename=self.__model__.__name__,
             primary_key=self.primarky_key())
コード例 #5
0
ファイル: __init__.py プロジェクト: jeffknupp/sandman_new
def handle_exception(error):
    """Return a response with the appropriate status code, message, and content
    type when an ``InvalidAPIUsage`` exception is raised."""
    try:
        if _get_acceptable_response_type() == JSON:
            response = jsonify(error.to_dict())
            response.status_code = error.code
            return response
        else:
            return error.abort()
    except InvalidAPIUsage as _:
        # In addition to the original exception, we don't support the content
        # type in the request's 'Accept' header, which is a more important
        # error, so return that instead of what was originally raised.
        response = jsonify(error.to_dict())
        response.status_code = 415
        return response
コード例 #6
0
def handle_exception(error):
    """Return a response with the appropriate status code, message, and content
    type when an ``InvalidAPIUsage`` exception is raised."""
    try:
        if _get_acceptable_response_type() == JSON:
            response = jsonify(error.to_dict())
            response.status_code = error.code
            return response
        else:
            return error.abort()
    except InvalidAPIUsage as _:
        # In addition to the original exception, we don't support the content
        # type in the request's 'Accept' header, which is a more important
        # error, so return that instead of what was originally raised.
        response = jsonify(error.to_dict())
        response.status_code = 415
        return response
コード例 #7
0
ファイル: models.py プロジェクト: jeffknupp/sandman_new
    def _all_resources(self):
        """Return all resources of this type as a JSON list."""
        query_arguments = request.args
        filters = []
        order = []
        resources = None
        if query_arguments:
            for key, value in query_arguments.items():
                if key == 'page':
                    continue
                if value.startswith('%'):
                    filters.append(getattr(self.__model__, key).like(
                        str(value), escape='/'))
                elif key == 'sort':
                    order.append(getattr(self.__model__, value))
                elif key:
                    filters.append(getattr(self.__model__, key) == value)
        if filters:
            print filters
            resources = _get_session().query(  # pylint: disable=star-args
                self.__model__).filter(*filters)
        else:
            resources = _get_session().query(self.__model__)
        if order:
            resources = resources.order_by(  # pylint: disable=star-args
                *order)
        if 'page' in query_arguments:
            resources = resources.limit(20).offset(
                20 * int(request.args['page']))
        resources = resources.all()

        content_type = _get_acceptable_response_type()
        if content_type == JSON:
            response = jsonify(collection_as_dict(resources, self))
            response.status_code = 200
            return response
        else:
            resources = collection_as_dict(resources, self)
            assert content_type == HTML
            return render_template(
                'collection.html',
                resources=resources)
コード例 #8
0
    def _all_resources(self):
        """Return all resources of this type as a JSON list."""
        query_arguments = request.args
        filters = []
        order = []
        resources = None
        if query_arguments:
            for key, value in query_arguments.items():
                if key == 'page':
                    continue
                if value.startswith('%'):
                    filters.append(
                        getattr(self.__model__, key).like(str(value),
                                                          escape='/'))
                elif key == 'sort':
                    order.append(getattr(self.__model__, value))
                elif key:
                    filters.append(getattr(self.__model__, key) == value)
        if filters:
            print filters
            resources = _get_session().query(  # pylint: disable=star-args
                self.__model__).filter(*filters)
        else:
            resources = _get_session().query(self.__model__)
        if order:
            resources = resources.order_by(  # pylint: disable=star-args
                *order)
        if 'page' in query_arguments:
            resources = resources.limit(20).offset(20 *
                                                   int(request.args['page']))
        resources = resources.all()

        content_type = _get_acceptable_response_type()
        if content_type == JSON:
            response = jsonify(collection_as_dict(resources, self))
            response.status_code = 200
            return response
        else:
            resources = collection_as_dict(resources, self)
            assert content_type == HTML
            return render_template('collection.html', resources=resources)