Exemplo n.º 1
0
def storynew():
	if 'username' in session:
		user = session['username']
		form = StoryForm()
		if form.validate_on_submit():
			uid = dbsession.query(User.id).filter_by(name=user).first()
			newstory = Story(form.title.data)
			newstory.text = markdown.markdown(form.body.data)
			newstory.uid = uid[0] 
			newstory.adult = form.adult.data
			tagslist = form.tags.data
			tagslist = tagslist.split(',')

			for tagitem in tagslist:
				tagitem = tagitem.strip()
				tagitem = tagitem.lower()

				tag = dbsession.query(Tag).filter_by(tagname=tagitem).first()
				if tag is None:
					tag = Tag(tagitem)
		
				newstory.tags.append(tag)
			
			dbsession.add(newstory)
			dbsession.commit()
			return redirect("~"+user)
		
		return render_template("storynew.html", form=form)
	else:
		return render_template("storynew.html") 
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0

if __name__ == '__main__':
	password = '******'

	from db import User, Story, addDefault, refresh_db, session as dbsession
	import random
	import loremipsum

	for adduser in range(1,1000):
		username = "******" % (adduser)
		user = User(username,'',password)
		user.species = 'Automatic'
		user.bio = 'Automatic bio'
		user.email = '*****@*****.**'
		user.minorflag = True
		user.accepttos =True
		dbsession.add(user)
		dbsession.commit()

	for addstories in range(1,20000):
		newstory = Story(loremipsum.generate_sentence()[2])
		newstory.text = loremipsum.generate_paragraph()[2]
		newstory.adult = True
		newstory.uid = random.randrange(1000)+1
		dbsession.add(newstory)
		dbsession.commit()