コード例 #1
0
ファイル: stories.py プロジェクト: ktverdov/story-reader
    def get(self):
        n_recommended_stories = random.randint(4, 7)
        stories = Story.objects()
        pipeline = [ {"$sample": {"size": n_recommended_stories}}, 
                        {"$project": {"story_id": 1, "author": 1, "title": 1}}, 
                        {"$project": {"_id": 0}} ]
        recommended_stories = list(stories.aggregate(pipeline))
        recommended_stories = dumps(recommended_stories)

        return Response(recommended_stories, mimetype="application/json", status=200)
コード例 #2
0
ファイル: stories.py プロジェクト: ktverdov/story-reader
    def get(self, args):
        text_to_search = args["text"]

        if text_to_search != "":
            stories = Story.objects(Q(author__icontains=text_to_search) | \
                                    Q(title__icontains=text_to_search))
            pipeline = [{"$project": {"story_id": 1, "author": 1, "title": 1, "reading_time_min": 1,
                                        "short_content": {"$substrCP": ["$content", 0, 100] } }}, 
                        {"$project": {"_id": 0}}]

            stories = list(stories.aggregate(pipeline))
            stories = dumps(stories)

            return Response(stories, mimetype="application/json", status=200)



        time_limit = args["limit"]
        time_limits = [5, 15, 30, 60]

        if time_limit is not None and \
            time_limit in time_limits:
            
            prev_time_limit = 0
            for t in time_limits:
                if time_limit == t:
                    break
                else:
                    prev_time_limit = t

            stories = Story.objects(reading_time_min__lte=time_limit, 
                                    reading_time_min__gte=prev_time_limit)

            pipeline = [{"$project": {"story_id": 1, "author": 1, "title": 1, "reading_time_min": 1,
                                        "short_content": {"$substrCP": ["$content", 0, 100] } }}, 
                        {"$project": {"_id": 0}}, 
                        {"$sort": { "reading_time_min": -1}}]
            stories = list(stories.aggregate(pipeline))
            stories = dumps(stories)

            return Response(stories, mimetype="application/json", status=200)
        
        return "", 404
コード例 #3
0
ファイル: stories.py プロジェクト: ktverdov/story-reader
    def put(self):
        user_id = get_jwt_identity()
        body = request.get_json()

        if not Story.objects(story_id=body["story_id"]):
            return {"msg": "No story with such id found"}, 404

        user = User.objects.get(id=user_id)
        user.update(push__history=body["story_id"])
        user.save()
        return '', 200
コード例 #4
0
ファイル: stories.py プロジェクト: ktverdov/story-reader
    def get(self):
        user_id = get_jwt_identity()
        user = User.objects.get(id=user_id)

        history_stories = Story.objects(story_id__in=user.history)

        pipeline = [{"$project": {"story_id": 1, "author": 1, "title": 1, "reading_time_min": 1,
                                    "short_content": {"$substrCP": ["$content", 0, 100] } }}, 
                    {"$project": {"_id": 0}}]
        history_stories = list(history_stories.aggregate(pipeline))
        history_stories = dumps(history_stories)

        return Response(history_stories, mimetype="application/json", status=200)
コード例 #5
0
ファイル: stories.py プロジェクト: ktverdov/story-reader
 def get(self, id):
     if not Story.objects(story_id=id):
         return {"msg": "No story with such id found"}, 404
     
     story = Story.objects.get(story_id=id).to_json()
     return Response(story, mimetype="application/json", status=200)