コード例 #1
0
ファイル: feeds.py プロジェクト: LukeB42/Emissary
    def get(self, groupname, name):
        """
         Review the articles for a specific feed on this key.
        """
        key = auth()

        feed = Feed.query.filter(and_(Feed.name == name, Feed.key == key)).first()
        if not feed: abort(404)

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",     type=int,  default=1)
        parser.add_argument("per_page", type=int,  default=10)
        parser.add_argument("content",  type=bool, default=None)
        args = parser.parse_args()

        # Return a list of the JSONified Articles ordered by descending creation date and paginated.
        if args.content == True:
            query = Article.query.filter(and_(Article.key == key, Article.content != None, Article.feed == feed))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        elif args.content == False:
            query = Article.query.filter(and_(Article.key == key, Article.content == None, Article.feed == feed))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        query = Article.query.filter(and_(Article.key == key, Article.feed == feed))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #2
0
    def get(self, groupname, name):
        """
         Review the articles for a specific feed on this key.
        """
        key = auth()

        feed = Feed.query.filter(and_(Feed.name == name, Feed.key == key)).first()
        if not feed: abort(404)

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",type=int, help="", required=False, default=1)
        parser.add_argument("per_page",type=int, help="", required=False, default=10)
        parser.add_argument("content",type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        # Return a list of the JSONified Articles ordered by descending creation date and paginated.
        if args.content == True:
            query = Article.query.filter(and_(Article.key == key, Article.content != None, Article.feed == feed))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        elif args.content == False:
            query = Article.query.filter(and_(Article.key == key, Article.content == None, Article.feed == feed))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        query = Article.query.filter(and_(Article.key == key, Article.feed == feed))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #3
0
ファイル: feedgroups.py プロジェクト: valeness/Emissary
    def get(self, groupname):
        """
		 Retrieve articles by feedgroup.
		"""
        key = auth()

        # Summon the group or 404.
        fg = FeedGroup.query.filter(
            and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg: restful.abort(404)

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",
                            type=int,
                            help="",
                            required=False,
                            default=1)
        parser.add_argument("per_page",
                            type=int,
                            help="",
                            required=False,
                            default=10)
        parser.add_argument("content",
                            type=bool,
                            help="",
                            required=False,
                            default=None)
        args = parser.parse_args()

        if args.content == True:

            query = Article.query.filter(
              and_(Article.feed.has(group=fg), Article.content != None))\
              .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            response = make_response(request.url, query)


#			for doc in response['data']:
#				if not doc['content_available']:
#					response['data'].remove(doc)
#			return response

        if args.content == False:
            query = Article.query.filter(
              and_(Article.feed.has(group=fg), Article.content == None))\
              .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        query = Article.query.filter(
          Article.feed.has(group=fg))\
          .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #4
0
ファイル: articles.py プロジェクト: pombredanne/Emissary
    def get(self, terms):
        """
		 The /v1/articles/search/<terms> endpoint.
		"""
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page", type=int, help="", required=False, default=1)
        parser.add_argument("per_page", type=int, help="", required=False, default=10)
        parser.add_argument("content", type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        if args.content == True:
            query = (
                Article.query.filter(
                    and_(Article.key == key, Article.content != None, Article.title.like("%" + terms + "%"))
                )
                .order_by(desc(Article.created))
                .paginate(args.page, args.per_page)
            )

            response = make_response(request.url, query)

            # This method of manually pruning JSON documents because they
            # don't relate to items that have content can omit them from search
            # completely. They don't have content but they're showing up here in
            # content != None rather than content == None.. You could always just
            # comment out this next for loop
            for doc in response["data"]:
                if not doc["content_available"]:
                    response["data"].remove(doc)
            return response

        elif args.content == False:
            query = (
                Article.query.filter(
                    and_(Article.key == key, Article.content == None, Article.title.like("%" + terms + "%"))
                )
                .order_by(desc(Article.created))
                .paginate(args.page, args.per_page)
            )
            return make_response(request.url, query)

        query = (
            Article.query.filter(and_(Article.key == key, Article.title.like("%" + terms + "%")))
            .order_by(desc(Article.created))
            .paginate(args.page, args.per_page)
        )
        return make_response(request.url, query)
コード例 #5
0
ファイル: feedgroups.py プロジェクト: valeness/Emissary
    def get(self, groupname, terms):
        """
		 Return articles on feeds in this group with our search terms in the title.
		"""
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",
                            type=int,
                            help="",
                            required=False,
                            default=1)
        parser.add_argument("per_page",
                            type=int,
                            help="",
                            required=False,
                            default=10)
        #		parser.add_argument("content",type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        fg = FeedGroup.query.filter(
            and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg:
            restful.abort(404)

        query = Article.query.filter(
           and_(Article.feed.has(group=fg), Article.title.like("%" + terms + "%")))\
          .order_by(desc(Article.created)).paginate(args.page, args.per_page)
        return make_response(request.url, query)
コード例 #6
0
ファイル: feedgroups.py プロジェクト: valeness/Emissary
    def get(self):
        """
		 Paginate an array of feed groups
		 associated with the requesting key.
		"""
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",
                            type=int,
                            help="",
                            required=False,
                            default=1)
        parser.add_argument("per_page",
                            type=int,
                            help="",
                            required=False,
                            default=10)
        parser.add_argument("content",
                            type=bool,
                            help="",
                            required=False,
                            default=None)
        args = parser.parse_args()

        query = FeedGroup.query.filter(FeedGroup.key == key)\
          .order_by(desc(FeedGroup.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #7
0
    def get(self):
        """
         Review all articles associated with this key.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",type=int, help="", required=False, default=1)
        parser.add_argument("per_page",type=int, help="", required=False, default=10)
        parser.add_argument("content",type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        # Construct a query for  Articles ordered by descending creation date and paginated.
        if args.content == True:
            query = Article.query.filter(and_(Article.key == key, Article.content != None))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)
        elif args.content == False:
            query = Article.query.filter(and_(Article.key == key, Article.content == None))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)
        else:
            query = Article.query.filter(Article.key == key)\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        # Attach links to help consuming applications
        response = make_response(request.url, query)
        return response
コード例 #8
0
ファイル: feeds.py プロジェクト: LukeB42/Emissary
    def get(self, groupname, name, terms):
        """
        Search for articles within a feed.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",     type=int,  default=1)
        parser.add_argument("per_page", type=int,  default=10)
#        parser.add_argument("content", type=bool, default=None)
        args = parser.parse_args()

        fg = FeedGroup.query.filter(and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg:
            restful.abort(404)

        f = [f for f in fg.feeds if f.name == name]
        if not f: abort(404)

        f = f[0]

        query = Article.query.filter(
                and_(Article.feed == f, Article.title.like("%" + terms + "%")))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #9
0
    def get(self, groupname, name, terms):
        """
        Search for articles within a feed.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",type=int, help="", required=False, default=1)
        parser.add_argument("per_page",type=int, help="", required=False, default=10)
#        parser.add_argument("content",type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        fg = FeedGroup.query.filter(and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg:
            restful.abort(404)

        f = [f for f in fg.feeds if f.name == name]
        if not f: abort(404)

        f = f[0]

        query = Article.query.filter(
                and_(Article.feed == f, Article.title.like("%" + terms + "%")))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #10
0
    def get(self, terms):
        """
         The /v1/articles/search/<terms> endpoint.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",type=int, help="", required=False, default=1)
        parser.add_argument("per_page",type=int, help="", required=False, default=10)
        parser.add_argument("content",type=bool, help="", required=False, default=None)
        args = parser.parse_args()

        if args.content == True:
            query = Article.query.filter(
                        and_(
                            Article.key == key,
                            Article.content != None,
                            Article.title.like("%" + terms + "%")
                        ))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            response = make_response(request.url, query)

            # This method of manually pruning JSON documents because they
            # don't relate to items that have content can omit them from search
            # completely. They don't have content but they're showing up here in
            # content != None rather than content == None.. You could always just
            # comment out this next for loop
            for doc in response['data']:
                if not doc['content_available']:
                    response['data'].remove(doc)
            return response

        elif args.content == False:
            query = Article.query.filter(
                        and_(
                            Article.key == key,
                            Article.content == None,
                            Article.title.like("%" + terms + "%")
                        ))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)
            return make_response(request.url, query)

        query = Article.query.filter(
                    and_(Article.key == key, Article.title.like("%" + terms + "%")))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)
        return make_response(request.url, query)
コード例 #11
0
ファイル: feedgroups.py プロジェクト: LukeB42/Emissary
    def get(self, groupname):
        """
         Retrieve articles by feedgroup.
        """
        key = auth()

        # Summon the group or 404.
        fg = FeedGroup.query.filter(and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg: restful.abort(404)

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",     type=int,  default=1)
        parser.add_argument("per_page", type=int,  default=10)
        parser.add_argument("content",  type=bool, default=None)
        args = parser.parse_args()

        if args.content == True:

            query = Article.query.filter(
                    and_(Article.feed.has(group=fg), Article.content != None))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            response = make_response(request.url, query)

#            for doc in response['data']:
#                if not doc['content_available']:
#                    response['data'].remove(doc)
#            return response

        if args.content == False:
            query = Article.query.filter(
                    and_(Article.feed.has(group=fg), Article.content == None))\
                    .order_by(desc(Article.created)).paginate(args.page, args.per_page)

            return make_response(request.url, query)

        query = Article.query.filter(
                Article.feed.has(group=fg))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #12
0
ファイル: feedgroups.py プロジェクト: LukeB42/Emissary
    def get(self):
        """
         Paginate an array of feed groups
         associated with the requesting key.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",     type=int,  default=1)
        parser.add_argument("per_page", type=int,  default=10)
        parser.add_argument("content",  type=bool, default=None)
        args = parser.parse_args()

        query = FeedGroup.query.filter(FeedGroup.key == key)\
                .order_by(desc(FeedGroup.created)).paginate(args.page, args.per_page)

        return make_response(request.url, query)
コード例 #13
0
ファイル: feedgroups.py プロジェクト: LukeB42/Emissary
    def get(self, groupname, terms):
        """
         Return articles on feeds in this group with our search terms in the title.
        """
        key = auth()

        parser = restful.reqparse.RequestParser()
        parser.add_argument("page",     type=int,  default=1)
        parser.add_argument("per_page", type=int,  default=10)
#        parser.add_argument("content",  type=bool, default=None)
        args = parser.parse_args()

        fg = FeedGroup.query.filter(and_(FeedGroup.key == key, FeedGroup.name == groupname)).first()
        if not fg:
            restful.abort(404)

        query = Article.query.filter(
                    and_(Article.feed.has(group=fg), Article.title.like("%" + terms + "%")))\
                .order_by(desc(Article.created)).paginate(args.page, args.per_page)
        return make_response(request.url, query)