def setUpClass(cls):
     try:
         cls.client = webdriver.Firefox()
     except:
         pass
     if cls.client:
         # create app
         cls.app = create_app('testing')
         cls.app_context = cls.app.app_context()
         cls.app_context.push()
         # create log
         import logging
         logger = logging.getLogger('werkzeug')
         logger.setLevel(logging.ERROR)
         # create database
         db.create_all()
         Role.init_roles()
         User.generate_fake(count=10)
         Post.generate_fake(count=10)
         # add admin
         admin_role = Role.query.filter_by(permissions=0xff).first()
         admin = User(email='*****@*****.**', username='******',
                      password='******', role=admin_role, confirmed=True)
         db.session.add(admin)
         db.session.commit()
         # run server in child thread
         Thread(target=cls.app.run).start()
Example #2
0
File: views.py Project: danrr/SELP
def get_more():
    """Handles requests for more post and submissions when a user presses "Show more" """
    start = int(request.form.get("start"))
    rendered_posts = []
    template = get_template_attribute('partials/_post.html', "post_template")
    posts = []
    page = request.form.get("page")
    if page == "home":
        status = request.form.get("status")
        if status == "open":
            posts = Post.get_open_posts(start)
        if status == "closed":
            posts = Post.get_closed_posts(start)
        if status == "archived":
            posts = Post.get_archived_posts(start)
    if page == "search":
        query, difficulty, tag = parse_search_query(request.form.get("query"))
        posts = Post.get_searched_posts(query, difficulty=difficulty, tag=tag, start=start)
    if posts:
        for post in posts:
            post_html = template(page=page, post=post)
            rendered_posts += [post_html]
        return jsonify({
            "success": True,
            "posts": rendered_posts
        })
    else:
        return jsonify({
            "success": False
        })
Example #3
0
    def setUpClass(cls):
        try:
            cls.client = webdriver.Firefox()
        except:
            pass

        if cls.client:
            cls.app = create_app('testing')
            cls.app_context = cls.app_context()
            cls.app_context.push()

            import logging
            logger = logging.getLogger('werkzeug')
            logger.setLevel("ERROR")

            db.create_all()
            Role.insert_roles()
            User.generate_fake(10)
            Post.generate_fake(10)

            admin_role = Role.query.filter_by(permissions=0xff).first()
            admin = User(email='*****@*****.**',
                         username='******', password='******',
                         role=admin_role, confirmed=True)
            db.session.add(admin)
            db.session.commit()

            threading.Thread(target=cls.app.run).start()
            time.sleep(1)
Example #4
0
def recreate_data():
    """Generate fake data for development and testing"""
    print 'dropping existing tables...'
    db.drop_all()
    print 'creating tables...'
    db.create_all()
    print 'inserting roles...'
    Role.insert_roles()
    print 'creating admin user...'
    u1 = User(username='******', email='*****@*****.**', password='******',
              name='Ralph Wen', location='Hangzhou, China',
              about_me='This is the creator of everything', confirmed=True)
    db.session.add(u1)
    print 'creating moderate user...'
    u2 = User(username='******', email='*****@*****.**', password='******',
              name='Yadong Wen', location='Hangzhou, China',
              about_me='Yeah', confirmed=True)
    db.session.add(u2)
    db.session.commit()
    print 'generating 50 normal users...'
    User.generate_fake(50)
    print 'generating 500 posts...'
    Post.generate_fake(500)
    print 'generating follows...'
    User.generate_following()
    print 'generating comments...'
    Comment.generate_comments()
    print '...done'
Example #5
0
	def setUpClass(cls): # 在这个类中的全部测试运行前执行
		# 启动 Chrome
		try:
			cls.client = webdriver.Chrome() # 在类方法中,通过 cls 参数调用类的方法、属性
		except:
			pass

		# 如果无法启动浏览器,则跳过这些测试
		if cls.client:
			# 创建程序
			cls.app = create_app('testing')
			cls.app_context = cls.app.app_context()
			cls.app_context.push()

			# 日志??
			import logging
			logger = logging.getLogger('werkzeug') # 获取logger对象
			logger.setLevel('ERROR') # 设置获取 ERROR 级别的日志

			# 创建数据库,使用一些虚拟数据填充
			db.create_all()
			Role.insert_roles()
			User.generate_fake(10)
			Post.generate_fake(10)

			# 添加管理员用户
			admin_role = Role.query.filter_by(permissions=0xff).first()
			admin = User(email='*****@*****.**', username='******', password='******', role=admin_role, confirmed=True)
			db.session.add(admin)
			db.session.commit()

			# 在线程中启动 Flask 服务器
			threading.Thread(target=cls.app.run).start() # 启用程序
Example #6
0
    def setUpClass(cls):
        # start Firefox
        try:
            cls.client = webdriver.Firefox()
        except:
            pass

        # skip these tests if the browser could not be started
        if cls.client:
            # create the application
            cls.app = create_app('testing')
            cls.app_context = cls.app.app_context()
            cls.app_context.push()

            # suppress logging to keep unittest output clean
            import logging
            logger = logging.getLogger('werkzeug')
            logger.setLevel("ERROR")

            # create the database and populate with some fake data
            db.create_all()
            Post.generate_fake()

            # start the Flask server in a thread
            threading.Thread(target=cls.app.run).start()

            # give the server a second to ensure it is up
            time.sleep(1) 
Example #7
0
 def test_post_model_remove_ingredients(self):
     post = Post('Title', 'Body', 1, difficulty=1)
     ingredient = Ingredient("ingredient", post.id)
     post.ingredients.append(ingredient)
     self.assertEqual(post.ingredients.all(), [ingredient])
     post.remove_ingredients()
     self.assertEqual(post.ingredients.all(), [])
Example #8
0
def rebuild():
    if config == 'development':
        with app.app_context():
            db.drop_all()
            db.create_all()
            Role.insert_roles()
            admin_me = User(email=app.config['FLASKR_ADMIN'],
                            username=app.config['MY_USERNAME'],
                            password=app.config['MY_PASSWORD'],
                            confirmed=True,
                            name=forgery_py.name.full_name(),
                            location=forgery_py.address.city(),
                            about_me=forgery_py.lorem_ipsum.sentences(10),
                            member_since=forgery_py.date.date(True,
                                                              min_delta=10))
            db.session.add(admin_me)
            ordinary_me = User(email=forgery_py.internet.email_address(),
                               username='******',
                               password='******',
                               confirmed=True,
                               name=forgery_py.name.full_name(),
                               location=forgery_py.address.city(),
                               about_me=forgery_py.lorem_ipsum.sentences(10),
                               member_since=forgery_py.date.date(True,
                                                                 min_delta=10))
            db.session.add(ordinary_me)
            db.session.commit()
            User.generate_fake(30)
            Post.generate_fake(500)
            Follow.generate_fake(500)
            Comment.generate_fake(500)
    else:
        print('Permission denied.')
Example #9
0
	def setUpClass(cls):
		#launch Firefox
		try:
			cls.client = webdriver.Chrome()
		except:
			pass

		if cls.client:
			cls.app = create_app('testing')
			cls.app_context = cls.app.app_context()
			cls.app_context.push()

			import logging
			logger = logging.getLogger('werkzeug')
			logger.setLevel('ERROR')

			# create database, and fill it up with some faked data
			db.create_all()
			Role.insert_roles()
			User.generate_fake(10)
			Post.generate_fake(10)

			# add administrater
			admin_role = Role.query.filter_by(permissions=0xff).first()
			admin = User(email='*****@*****.**',
						 username='******', password='******',
						 role=admin_role, confirmed=True)
			db.session.add(admin)
			db.session.commit()

			# launch Flask server in a thread
			threading.Thread(target=cls.app.run).start()

			# give the server a second to ensure it is up
			time.sleep(1)
Example #10
0
	def put(self, id):
		"""
		Input: id
		Method: PUT
		Return: 更新文章信息
		"""
		args = self.reqparse.parse_args()
		post = Post.objects(id=id)
		if len(post) == 0:
			abort(404)
		post = post[0]
		title = args.get('title')
		body = args.get('body')
		mark = args.get('mark')
		post.body = body
		if title != post.title:
			if len(Post.objects(title=title)) > 0:
				# title same
				abort(400)
			post.title = title
		if mark != post.mark:
			if len(Post.objects(mark=mark)) > 0:
				# mark same
				abort(400)
			post.mark = mark
		post.save()
		# For a PUT request: HTTP 200 or HTTP 204 should imply "resource updated successfully".
		print(post.get_dict())
		return post.get_dict(), 200
 def setUpClass(cls):
     try:
         cls.client = webdriver.Firefox()
     except:
         pass
     if cls.client:
         # 创建程序
         cls.app = create_app('test')
         cls.app_context = cls.app.app_context()
         cls.app_context.push()
         # 禁止日志,保持输出简洁
         import logging
         logger = logging.getLogger('werkzeug')
         logger.setLevel("ERROR")
         # 创建数据库,并使用一些虚拟数据填充
         db.create_all()
         Role.insert_role()
         User.generate_fake(10)
         Post.generate_fake(10)
         # 添加管理员
         admin_role = Role.query.filter_by(permissions=0xff).first()
         admin = User(email='*****@*****.**',
                      username='******', password='******',
                      role=admin_role, confirmed=True)
         db.session.add(admin)
         db.session.commit()
         # 在一个线程中启动 Flask 服务器
         threading.Thread(target=cls.app.run).start()
Example #12
0
 def setUpClass(cls):
     # start Firefox 
     try:
         cls.client = webdriver.Firefox()
     except:
         pass 
         
     # skip these tests if the browser could not be started 
     if cls.client:
         # create the application 
         cls.app = create_app('testing')
         cls.app_context = cls.app.app_context 
         cls.app_context.push()
         
         # suppress logging to keep unittest output clean 
         import logging 
         logger = logging.getLogger('werkzeug')
         logger.setLevel('ERROR')
         
         # create the database and populate with some fake data 
         db.create_all()
         Role.insert_roles()
         User.generate_fake(10)
         Post.generate_fake(10)
         
         # add an administrator user 
         admin_role = Role.query.filter_by(permissions=0xff).first()
         admin = User(email='*****@*****.**',
                      username='******', password='******',
                      role=admin_role, confirmed=True)
         db.session.add(admin)
         db.session.commit()
         
         # start the Flask server in a thread 
         threading.Thread(target=cls.app.run).start()
Example #13
0
def post_edit(post_id):
    if request.method == 'GET':
        try:
            post = Post.get(Post.post_id == post_id)  # todo: get not deleted
        except Post.DoesNotExist:
            abort(404)

        form = PostForm(obj=post)
        all_categories = Category.select()
        template = env.get_template('post/edit.html')
        return template.render(
            item=post,
            form=form,
            categories=all_categories,
        )
    elif request.method == 'POST':
        post = Post.get(Post.post_id == post_id)
        post.category = post_get('category-id')
        post.post_text = post_get('text')
        post.slug = post_get('slug')
        post.title = post_get('title')
        post.draft = bool(int(post_get('draft')))  # zero int is False
        post.language = post_get('language')
        post.show_on_index = bool(post_get('show-on-index'))
        post.date_updated = datetime.now()
        new_tags = post_get('tags')
        old_tags = Tag.select().join(Tag_to_Post)\
            .where(Tag_to_Post.post_id == post_id)
        remove_tags(old_tags, new_tags, post_id)
        add_new_tags(new_tags, post_id)
        post.save()
        app.flash('Article updated')
        redirect('/post/' + str(post_id))
Example #14
0
 def test_get_post_by_tag_name(self):
     file_object1 = werkzeug.datastructures.FileStorage(filename="fileupload1.JPG")
     file_object2 = werkzeug.datastructures.FileStorage(filename="fileupload2.JPG")
     p = Post.create(author_id=1, description="test", file_name=None, tag_list="food,fashion", choice_data=[("text_choice1", file_object1), ("text_choice2", file_object2)])
     self.assertIn(p, Post.get_posts_by_tag("food"))
     self.assertIn(p, Post.get_posts_by_tag("fashion"))
     self.assertNotIn(p, Post.get_posts_by_tag("apple"))
Example #15
0
    def test_06_rename_category(self):
        """测试分类改名"""
        cate1 = Category(name='cate1')
        db.session.add(cate1)
        db.session.commit()

        cate2 = Category(name='cate2')
        cate2.parent = cate1
        db.session.add(cate2)
        db.session.commit()

        cate3 = Category(name='cate3')
        cate3.parent = cate2
        db.session.add(cate3)
        db.session.commit()

        p = Post()
        Post.publish(post=p,
                     title='post',
                     content='post',
                     category=cate2)

        cate1.name = 'cate11'
        cate2.name = 'cate222'

        self.assertTrue(cate2 in cate1.children.all() and
                        cate2.link == 'cate11/cate222' and
                        cate3 in cate2.children.all() and
                        cate3.link == 'cate11/cate222/cate3' and
                        cate3.level == 2 and
                        cate3.parent == cate2 and
                        cate2.posts_count == 1 and
                        cate1.posts_count == 1 and
                        cate3.posts_count == 0)
Example #16
0
File: posts.py Project: damnever/2L
    def post(self, topic_id):
        title = self.get_argument('title', None)
        keywords = self.get_argument('keywords', None)
        content = self.get_argument('content', '')
        keep_silent = int(self.get_argument('keep_silent', 0))
        is_draft = int(self.get_argument('is_draft', 0))

        if not all([title, keywords]):
            raise exceptions.EmptyFields()
        else:
            can_post = yield gen.maybe_future(Topic.can_post(topic_id))
            if not can_post:
                raise exceptions.TopicIsNotAccepted
            exists = yield gen.maybe_future(Post.get_by_title(title))
            if exists:
                raise exceptions.PostTitleAlreadyExists()
            else:
                username = self.current_user
                yield gen.maybe_future(
                    Post.create(username, topic_id,
                                title, keywords, content,
                                keep_silent=keep_silent, is_draft=is_draft))

                # Update gold.
                update_gold.apply_async(('new_post', username))
Example #17
0
    def setUpClass(cls):
        chromedriver_dir = os.path.abspath('./driver/chromedriver.exe')
        cls.client = webdriver.Chrome(executable_path=chromedriver_dir)

        if cls.client:
            cls.app = create_app('testing')
            cls.app_context = cls.app.app_context()
            cls.app_context.push()

            import logging
            logger = logging.getLogger('werkzeug')
            logger.setLevel("ERROR")

            db.create_all()
            Role.insert_roles()
            User.generate_fake(10)
            Post.generate_fake(10)

            admin_role = Role.query.filter_by(permissions=0xff).first()
            admin = User(email='*****@*****.**',
                         username='******',
                         password='******',
                         role=admin_role,
                         confirmed=True)
            db.session.add(admin)
            db.session.commit()

            threading.Thread(target=cls.app.run).start()
Example #18
0
def add_post():
    user = User.objects(name='admin').first()
    post = Post(title="Hello",
                content="Hello world",
                author=user,
                tags=['python', 'flask'])
    post.save()
Example #19
0
    def delete(self, id):
        post = Post.get_by_id(id)

        if post is None:
            return render_view(url_for('PostsView:index'),
                               status=False,
                               redirect=True,
                               message=_('POST_NOT_FOUND'))

        if not post.can_edit():
            abort(401)

        try:
            title = post.title
            Post.delete(post.id)
            Feed.clear_feed_cache()
            ret = request.values.get('return')

            flash(_('POST_DELETE_SUCESS', title=title))

            if ret:
                return render_view(ret, redirect=True)
        except Exception as e:
            flash(_('ERROR_POST_DELETE_FAILED', error=e), 'error')

        return render_view(url_for('PostsView:index'),
                           redirect=True)
Example #20
0
 def test_post_model_is_visible(self):
     date = datetime.utcnow() - timedelta(1)
     post = Post('Title', 'Body', 1, publish_time=date, difficulty=2)
     self.assertTrue(post.is_visible())
     date = datetime.utcnow() + timedelta(1)
     post = Post('Title', 'Body', 1, publish_time=date, difficulty=2)
     self.assertFalse(post.is_visible())
Example #21
0
def createPost(author=None, title=None, description=None, link=None, \
               date_created = None, score = 0, num_comments = 0, votes = None,\
                access = None, tags = None):
    """
         创建一个新的Post
        id = db.Column(db.Integer, primary_key=True)
        author_id = db.Column(db.Integer, 
                              db.ForeignKey(User.id, ondelete='CASCADE'), 
                              nullable=False)
        title = db.Column(db.Unicode(200))
        description = db.Column(db.String)
        link = db.Column(db.String(250))
        date_created = db.Column(db.DateTime, default=datetime.utcnow)
        score = db.Column(db.Integer, default=1)
        num_comments = db.Column(db.Integer, default=0)
        votes = db.Column(DenormalizedText)
        access = db.Column(db.Integer, default=PUBLIC)
        
        _tags = db.Column("tags", db.String)
        
        author = db.relation(User, innerjoin=True, lazy="joined")
    """
    post = Post(author_id=author.id,
                title=title,
                description=description,
                link=link,
                date_created = date_created,
                score = score,
                num_comments = num_comments,
                votes = votes,
                access = access,
                tags =tags)
    post.save()
    return post
Example #22
0
    def setUpClass(cls):
        #启动Firefox
        try:
            cls.client=webdriver.FireFox()
        except:
            pass
        #如果无法启动浏览器,则跳过这些测试
        if cls.client:
            #创建程序
            cls.app=create_app('testing')
            cls.app_context=cls.app.app_context()
            cls.app_context.push()
 
            #禁止日志,保持输出整洁
            import logging
            logger=logging.getlogger('werkzeug')
            logger.setLevel("ERROR")

            #创建数据库,并使用一些虚拟数据填充
            db.create_all()
            Role.insert_roles()
            User.generate_fake(10)
            Post.generate_fake(10)
            #添加管理员
            admin_role=Role.query.filter_by(permission=0xff).first()
            admin=User(email='*****@*****.**',username='******', password='******',role=admin_role)
            db.session.add(admin)
            db.session.commit()
            
            #在一个线程中启动FLask服务器
            threading.Thread(target=cls.app.run).start()
Example #23
0
    def test_02_save_new_post(self):
        """新建一篇文章, 不发布而保存为草稿"""

        t = Tag.query.filter_by(_name='tag').first()
        a = Tag.query.filter_by(_name='gat').first()
        c = Category.query.filter_by(_name='cate').first()
        p = Post()
        Post.save(post=p,
                  title='po st',
                  content='post_abstract<!--more-->post_content',
                  public=False,
                  commendable=False,
                  tags='tag, gat',
                  category=c)

        p = Post.query.filter_by(_title='po st').first()

        self.assertTrue(p.type == 'draft' and
                        p.date and
                        not p.publish_date and
                        p.category == c and
                        p.tags == ['tag', 'gat'] and
                        p.draft is None and
                        t.posts_count == 0 and
                        a.posts_count == 0 and
                        c.posts_count == 0)
Example #24
0
def writing():
    if request.method == 'POST':
        title = request.form['title']
        summary = request.form['summary']
        body = request.form['content']
        # tag = request.form['tag']
        if 'theme-img' in request.files:
            image = request.files['theme-img']
            image_name = image.filename
            new_image_name = unique_filename(image_name)
            image_path = os.path.join(app.config['UPLOAD_FOLDER'], new_image_name)
            image.save(image_path)
            theme_img = url_for('uploaded_file', filename=new_image_name)
            thumbnail_img_name = create_thumbnail_and_save(image_path, image_name, app.config['MAX_POST_IMG_WIDTH'])
            thumbnail_img = url_for('uploaded_file', filename=thumbnail_img_name)

        else:
            theme_img = app.config['DEFAULT_POST_IMG']
            thumbnail_img = app.config['DEFAULT_POST_THUMB_IMG']

        # tag = Tag(name=tag, creator_id=current_user.id)
        post = Post(title=title, theme_img=theme_img, thumbnail_img=thumbnail_img,
                    summary=summary, body=body, user_id=current_user.id)
        # post.tags.append(tag)
        post.save()

        return redirect(url_for('blog.article', post_id=post.id))

    return render_template('profile/writing.html')
Example #25
0
 def setUp( self ):
     self.app    =   create_app('test')
     self.app_context    =   self.app.app_context()
     self.app_context.push()
     db.create_all()
     Role.insert_roles()
     User.generate_fake(count=5)
     Post.generate_fake( count=5)
Example #26
0
 def test_03_post_link(self):
     """测试文章link替代文章标题空格为下划线"""
     p = Post()
     Post.publish(post=p,
                  title='po st',
                  content='post'
                  )
     self.assertTrue(p.link == 'po_st')
Example #27
0
    def test_post_model_are_submissions_open(self):
        date = datetime.today() - timedelta(1)
        post = Post('Title', 'Body', 1, publish_time=date, difficulty=3)
        self.assertTrue(post.are_submissions_open())

        date = datetime.today() - timedelta(8)
        post = Post('Title', 'Body', 1, publish_time=date, difficulty=3)
        self.assertFalse(post.are_submissions_open())
Example #28
0
def add_post():
    user = User.objects(name="****").first()
    post = Post(title="Hello",
                content="Hello new world",
                status=1,
                author=user,
                tags=['python','flask'])
    post.save()
Example #29
0
def curl_post():
    try:
        content = request.json.get("content")
        title = request.json.get("title")
        post = Post(user=g.user, title=title, content=content, pub_date=datetime.now())
        post.save()
        return jsonify({"data": "Hello, %s!" % g.user.username})
    except:
        return jsonify({"data": "Something Went Wrong."})
Example #30
0
    def test_04_post_abstract(self):
        """测试文章摘要"""

        p = Post()
        Post.publish(post=p,
                     title='po st',
                     content='post_abstract<!--more-->post_content'
                     )
        self.assertTrue(p.abstract == 'post_abstract')
Example #31
0
class UserTestCase(TestCase):
    def create_app(self):
        """Creates an app object for testing purposes."""
        self.app = create_app('TESTING')
        self.app_context = self.app.app_context()
        self.app_context.push()
        return self.app

    def setUp(self):
        """Sets up a test database."""
        self.app.config['TESTING'] = True
        self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///unittest.db'
        self.app = self.app.test_client()
        db.create_all()

    def tearDown(self):
        """Removes all objects from the database and the app_context."""
        db.session.remove()
        db.drop_all()
        self.app_context.pop()

    def test_register_user(self):
        """Tests whether users can be inserted into the database."""
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.set_password("password")
        db.session.add(self.user)
        db.session.commit()

    def test_can_fetch_user(self):
        """Tests whether users can be fetched from the database."""
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.set_password("password")
        db.session.add(self.user)
        db.session.commit()

        self.query = User.query.filter_by(username="******").first()
        self.query = User.query.filter_by(email="*****@*****.**").first()
        self.query = User.query.filter_by(id=1).first()

    def test_password_is_equal(self):
        """Tests whether check_password() works."""
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.set_password("password")
        self.assertTrue(self.user.check_password('password'))

    def test_username(self):
        """Makes sure the username in the database is the same as inputted."""
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.assertEqual("John", self.user.username)

    def test_voting(self):
        """Tests whether a user can up or downvote."""
        self.post = Post(title="Title", text="Text")
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.upvoted_on.append(self.post)

        self.post = Post(title="Rick", text="Jaime")
        self.user.downvoted_on.append(self.post)
        for i in self.user.upvoted_on:
            self.assertEqual(i.title, "Title")

        for i in self.user.downvoted_on:
            self.assertEqual(i.title, "Rick")

    def test_giving_importance(self):
        """Tests whether a user can give importance."""
        self.post = Post(title="Title", text="Text")
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.given_importance_to.append(self.post)

        for i in self.user.given_importance_to:
            self.assertEqual(i.title, "Title")

    def test_sum_post_scores(self):
        """Tests to see whether the program can iterate through a users
           post's score."""
        self.user = User(username="******", email="*****@*****.**", id=1)
        self.user.importance_debt = 0
        db.session.add(self.user)
        db.session.commit()
        self.post = Post(title="Title", text="Text", user_id=self.user.id)
        self.post.upvotes = 1
        self.post.downvotes = 0
        self.post.score = self.post.get_score()
        db.session.add(self.post)
        db.session.commit()

        self.assertEqual(self.user.sum_post_scores(), 1)
Example #32
0
import json

from app import DAO
from app.models import User, Post

# user = User(username='******', email='*****@*****.**')
# user.set_password('admin@123')
# user2 = User(username='******', email='*****@*****.**')
# user2.set_password('marco@123')

user = DAO.buscar_por_criterio_bool(User, User.username == 'admin')
# print(user)
user2 = DAO.buscar_por_criterio(User, username='******')
post2 = Post(body='Minha bola! hahaha')
# user2.posts.append(post)
# DAO.transacao(user2)
# print(user2)
# user3 = DAO.buscar_por_criterio_404(User, username='******')
# print(user3)
# user4 = DAO.buscar_todos(User, User.username, User.email)
# for u in user4:
#     print(20*'-')
#     print(u)
#     [print(p) for p in u.posts]

# DAO.deletar(user2)
# user5 = DAO.buscar_todos_por_join(User, Post, User.username)
# print(user5)

# posts = DAO.buscar_todos(Post)
# [DAO.deletar(p) if 'Hi' in p.body else print('Registro não existe') for p in posts]
Example #33
0
def post(post_id):
    post = Post().query.get(post_id)
    return render_template('posts/post.html', post=post)
Example #34
0
def delete(post_id):
    post = Post().query.get(post_id)
    db.session.delete(post)
    db.session.commit()
    flash('"{}" was successfully deleted!'.format(post.title), 'success')
    return redirect(url_for('main.index'))
Example #35
0
def index():
    posts = Post.get_all()
    return render_template("public/index.html", posts=posts)
Example #36
0
def show_error():
    res = 1 / 0
    posts = Post.get_all()
    return render_template("public/index.html", posts=posts)
Example #37
0
def preview_post():
    return render_template('/main/post.html',
                           categories=Category().fetch_categories(),
                           new=Post().last_submission())
Example #38
0
 def test_empty_post(self):
     self.assertRaises(
         Post(title='test empty input',
              body='',
              user_name='Melvin the Mute',
              timestamp=datetime.utcnow()))
Example #39
0
    def test_comments(self):
        # add two users
        r = Role.query.filter_by(name="User").first()
        self.assertIsNotNone(r)
        u1 = User(
            email="*****@*****.**",
            username="******",
            password="******",
            confirmed=True,
            role=r,
        )
        u2 = User(
            email="*****@*****.**",
            username="******",
            password="******",
            confirmed=True,
            role=r,
        )
        db.session.add_all([u1, u2])
        db.session.commit()

        # add a post
        post = Post(body="body of the post", author=u1)
        db.session.add(post)
        db.session.commit()

        # write a comment
        response = self.client.post(
            "/api/v1/posts/{}/comments/".format(post.id),
            headers=self.get_api_headers("*****@*****.**", "dog"),
            data=json.dumps({"body": "Good [post](http://example.com)!"}),
        )
        self.assertEqual(response.status_code, 201)
        json_response = json.loads(response.get_data(as_text=True))
        url = response.headers.get("Location")
        self.assertIsNotNone(url)
        self.assertEqual(json_response["body"],
                         "Good [post](http://example.com)!")
        self.assertEqual(re.sub("<.*?>", "", json_response["body_html"]),
                         "Good post!")

        # get the new comment
        response = self.client.get(url,
                                   headers=self.get_api_headers(
                                       "*****@*****.**", "cat"))
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertEqual("http://localhost" + json_response["url"], url)
        self.assertEqual(json_response["body"],
                         "Good [post](http://example.com)!")

        # add another comment
        comment = Comment(body="Thank you!", author=u1, post=post)
        db.session.add(comment)
        db.session.commit()

        # get the two comments from the post
        response = self.client.get(
            "/api/v1/posts/{}/comments/".format(post.id),
            headers=self.get_api_headers("*****@*****.**", "dog"),
        )
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertIsNotNone(json_response.get("comments"))
        self.assertEqual(json_response.get("count", 0), 2)

        # get all the comments
        response = self.client.get(
            "/api/v1/posts/{}/comments/".format(post.id),
            headers=self.get_api_headers("*****@*****.**", "dog"),
        )
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertIsNotNone(json_response.get("comments"))
        self.assertEqual(json_response.get("count", 0), 2)
def predict():

    data_file = 'reviews_final.csv'
    data = pd.read_csv(data_file)

    stopwords_eng = stopwords.words('english')
    stopwords_eng2 = stopwords_eng
    stopwords_eng2 = [x.capitalize() for x in stopwords_eng2]
    stopwords_final = stopwords_eng + stopwords_eng2

    class ApplyRegex(BaseEstimator, TransformerMixin):
        def __init__(self,
                     break_line=True,
                     carriage_return=True,
                     numbers=True,
                     number_replacing='',
                     special_char=True,
                     additional_spaces=True):
            self.break_line = break_line
            self.carriage_return = carriage_return
            self.numbers = numbers
            self.number_replacing = number_replacing
            self.special_char = special_char
            self.additional_spaces = additional_spaces

        def fit(self, X, y=None):
            return self

        def transform(self, X, y=None):
            X_transformed = []
            for c in X:
                if self.break_line:
                    c = re.sub('\n', ' ', c)
                if self.carriage_return:
                    c = re.sub('\r', ' ', c)
                if self.numbers:
                    c = re.sub(r'\d+(?:\.\d*(?:[eE]\d+))?',
                               self.number_replacing, c)
                if self.special_char:
                    c = re.sub(r'R\$', ' ', c)
                    c = re.sub(r'\W', ' ', c)
                if self.additional_spaces:
                    c = re.sub(r'\s+', ' ', c)
                X_transformed.append(c)
            return X_transformed

    class StopWordsRemoval(BaseEstimator, TransformerMixin):
        def fit(self, X, y=None):
            return self

        def stopword_removal(self):
            y = []
            review_no_stopword = []
            for idx, review in enumerate(self):
                try:
                    y = ''
                    for word in review.split():
                        if word not in stopwords_final:
                            y += word + ' '
                    review_no_stopword.append(y)
                except:
                    print(idx)
            return review_no_stopword

        def transform(self, X, y=None):
            X_transformed = StopWordsRemoval.stopword_removal(X)
            return X_transformed

    class TextLemmatization(BaseEstimator, TransformerMixin):
        def fit(self, X, y=None):
            return self

        def lemmatize_text(text):
            return ' '.join(
                lemmatizer.lemmatize(w, pos="v")
                for w in w_tokenizer.tokenize(text))

        def transform(self, X, y=None):
            X_transformed = list(
                map(lambda c: TextLemmatization.lemmatize_text(c), X))
            return X_transformed

    preprocess_pipeline = Pipeline([
        ('regex_cleaner', ApplyRegex()),
        ('stopwords_remover', StopWordsRemoval()),
        ('lemmatization', TextLemmatization()),
    ])

    X = data['reviews.text']
    y = data['reviews.rating'].values
    y = y.astype(int)

    X_preprocessed = preprocess_pipeline.fit_transform(X)
    reviews_vector = list(map(lambda c: nltk.word_tokenize(c), X_preprocessed))
    vectorizer = CountVectorizer(max_features=300)
    X_transformed = vectorizer.fit_transform(X_preprocessed).toarray()

    review_txt = request.form.get('review')
    review = request.form.values()
    preprocessed_review = preprocess_pipeline.fit_transform(review)
    final_review = vectorizer.transform(preprocessed_review).toarray()
    prediction = model.predict(final_review)

    # Sentiment Score Predictor
    # text_preprocessed = preprocess_pipeline.fit_transform([review_txt])
    # text_transformed = vectorizer.transform(text_preprocessed).toarray()
    # review_proba = model.predict_proba(text_transformed)
    # sentiment_score = round(review_proba[0,2]*100,2)
    # sentiment_score = sentiment_score.item()

    form = PostForm()
    if form.validate_on_submit():

        text_preprocessed = preprocess_pipeline.fit_transform([form.post.data])
        text_transformed = vectorizer.transform(text_preprocessed).toarray()
        review_proba = model.predict_proba(text_transformed)
        sentiment_score = round(review_proba[0, 2] * 100, 2)
        sentiment_score = sentiment_score.item()
        post = Post(body=form.post.data,
                    ecommerce_title=ecommerce_title,
                    author=current_user,
                    sentiment=sentiment_score)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('product', title=ecommerce_title))

    page = request.args.get('page', 1, type=int)
    reviews = product.reviews.order_by(Post.timestamp.desc()).paginate(
        page, app.config['POSTS_PER_PAGE'], False)
    next_url = url_for('product', title=ecommerce_title, page=reviews.next_num) \
        if reviews.has_next else None
    prev_url = url_for('product', title=ecommerce_title, page=reviews.prev_num) \
        if reviews.has_prev else None

    return render_template('product.html',
                           prediction_text='Sentiment Score : ',
                           prediction_score='{}%'.format(sentiment_score),
                           review_text='Your review: {}'.format(review_txt),
                           reviews=reviews.items)
Example #41
0
 def setUp(self):
     self.user_Farzana = User(
         username="******", password="******", email="*****@*****.**")
     self.new_post = Post(
         title="bloger", body="blogging website", user_id=self.user_Farzana.id)
Example #42
0
    def test_comments(self):
        # add two users
        r = Role.query.filter_by(name='User').first()
        self.assertIsNotNone(r)
        u1 = User(email='*****@*****.**',
                  username='******',
                  password='******',
                  confirmed=True,
                  role=r)
        u2 = User(email='*****@*****.**',
                  username='******',
                  password='******',
                  confirmed=True,
                  role=r)
        db.session.add_all([u1, u2])
        db.session.commit()

        # add a post
        post = Post(body='body of the post', author=u1)
        db.session.add(post)
        db.session.commit()

        # write a comment
        response = self.client.post(
            '/api/v1/posts/{}/comments/'.format(post.id),
            headers=self.get_api_headers('*****@*****.**', 'dog'),
            data=json.dumps({'body': 'Good [post](http://example.com)!'}))
        self.assertEqual(response.status_code, 201)
        json_response = json.loads(response.get_data(as_text=True))
        url = response.headers.get('Location')
        self.assertIsNotNone(url)
        self.assertEqual(json_response['body'],
                         'Good [post](http://example.com)!')
        self.assertEqual(re.sub('<.*?>', '', json_response['body_html']),
                         'Good post!')

        # get the new comment
        response = self.client.get(url,
                                   headers=self.get_api_headers(
                                       '*****@*****.**', 'cat'))
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertEqual('http://localhost' + json_response['url'], url)
        self.assertEqual(json_response['body'],
                         'Good [post](http://example.com)!')

        # add another comment
        comment = Comment(body='Thank you!', author=u1, post=post)
        db.session.add(comment)
        db.session.commit()

        # get the two comments from the post
        response = self.client.get(
            '/api/v1/posts/{}/comments/'.format(post.id),
            headers=self.get_api_headers('*****@*****.**', 'dog'))
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertIsNotNone(json_response.get('comments'))
        self.assertEqual(json_response.get('count', 0), 2)

        # get all the comments
        response = self.client.get(
            '/api/v1/posts/{}/comments/'.format(post.id),
            headers=self.get_api_headers('*****@*****.**', 'dog'))
        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertIsNotNone(json_response.get('comments'))
        self.assertEqual(json_response.get('count', 0), 2)
Example #43
0
def publish_post(hash_id):
    post = Post.get_or_404(hash_id)
    post.action_publish()
    db.session.commit()
    return jsonify(True)
Example #44
0
    def test_comments(self):
        r = Role.query.filter_by(name='User').first()
        self.assertIsNotNone(r)
        u1 = User(email='*****@*****.**',
                  username='******',
                  password='******',
                  confirmed=True,
                  role=r)
        u2 = User(email='*****@*****.**',
                  username='******',
                  password='******',
                  confirmed=True,
                  role=r)
        db.session.add_all([u1, u2])
        db.session.commit()

        # add a post
        post = Post(body='body of the post', author=u1)
        db.session.add(post)
        db.session.commit()

        # write a comment
        response = self.client.post(
            url_for('api.new_post_comment', id=post.id),
            headers=self.get_api_headers('*****@*****.**', 'dog'),
            data=json.dumps({'body': 'Good [post[(http://example.com)!'}))
        print(response.status_code)
        self.assertTrue(response.status_code == 201)
        json_response = json.loads(response.data.decode('utf-8'))
        url = response.headers.get('Location')
        self.assertIsNotNone(url)
        self.assertTrue(
            json_response['body'] == 'Good [post](http://example.com)!')
        self.assertTrue(
            re.sub('<.*?', '', json_response['body_html']) == 'Good post!')

        # get the new comment
        response = self.client.get(url,
                                   headers=self.get_api_headers(
                                       '*****@*****.**', 'cat'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertTrue(json_response['url' == url])
        self.assertTrue(
            json_response['body'] == 'Good [post](http://example.com)!')

        # add another comment
        comment = Comment(body='Thank you!', author=u1, post=post)
        db.session.add(comment)
        db.session.commit()

        # get the two comments from the post
        response = self.client.get(url_for('api.get_post_comments',
                                           id=post.id),
                                   headers=self.get_api_headers(
                                       '*****@*****.**', 'dog'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertIsNotNone(json_response.get('comments'))
        self.assertTrue(json_response.get('count', 0) == 2)

        #get all the comments
        response = self.client.get(url_for('api.get_comments', id=post.id),
                                   headers=self.get_api_headers(
                                       '*****@*****.**', 'dog'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertIsNotNone(json_response.get('comments'))
        self.assertTrue(json_response.get('count', 0) == 2)
Example #45
0
def new_post(title: str, body: str) -> Post:
    post = Post(title, body)
    db.session.add(post)
    db.session.commit()
    return post
Example #46
0
def post(id):
    try:
        post = Post.objects(id=id).get()
        return render_template('post.html', title=post.title, post=post)
    except:
        abort(404)
Example #47
0
def posts():
    return render_template('/admin/posts.html',
                           message=get_flashed_messages(),
                           recent=Post().all_posts())
Example #48
0
#!flask/bin/python

from app.models import User, Post

from app import db

import datetime

u = User.query.get(1)

p = Post(body='If I were a man', timestamp=datetime.datetime.utcnow (), \
         author=u)

db.session.add(p)

p = Post(body='and you a dog', timestamp=datetime.datetime.utcnow (), \
         author=u)

db.session.add(p)

p = Post(body='I\'d throw a stiick foor yoou', \
         timestamp=datetime.datetime.utcnow (), author=u)

db.session.add(p)

db.session.commit()
Example #49
0
def show_post(slug):
    post = Post.get_by_slug(slug)
    if post is None:
        abort(404)
    return render_template("public/post_view.html", post=post)
Example #50
0
    def test_comments(self):

        #添加两名用户
        r = Role.query.filter_by(name='User').first()
        self.assertIsNotNone(r)
        u1 = User.query.filter_by(email='*****@*****.**').first()
        u2 = User.query.filter_by(email='*****@*****.**').first()
        db.session.add_all([u1, u2])
        db.session.commit()

        #添加一篇博客
        post = Post(body='body of the post', author=u1)
        db.session.add(post)
        db.session.commit()

        #添加评论
        response = self.client.post(
            url_for('api.get_posts_comments', id=post.id),
            headers=self.get_api_headers('*****@*****.**', 'dog'),
            data=json.dumps({'body': 'Good[post](http://example.com)!'}))
        self.assertTrue(response.status_code == 201)
        url = response.headers.get('Location')  #这里是从何处获取的Location
        self.assertIsNotNone(url)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertTrue(
            json_response['body'] == 'Good[post](http://example.com)!')
        self.assertTrue(
            re.sub('<.*?>', '', json_response['body_html']) ==
            'Good post!')  #这个正则表达式是什么意思??????

        #获取评论
        response = self.client.get(
            url,  #此处的url应该是前面获取的url,Location的那个
            headers=self.get_api_headers('*****@*****.**', password='******'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertTrue(json_response['url'] == url)
        self.assertTrue(
            json_response['body'] == 'Good[post](http://example.com)!')

        #添加其他评论
        comment = Comment(body='Thank you!', author=u1, post=post)
        db.session.add(comment)
        db.session.commit()

        #从博客中获取两条评论
        response = self.client.get(url_for('get_posts_comments', id=post.id),
                                   headers=self.get_api_headers(
                                       '*****@*****.**', password='******'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertIsNotNone(json_response.get('posts'))
        self.assertTrue(json_response.get(
            'count', 0) == 2)  #获取两条评论所以数字为2????????  数字2是什么意思,   数字0是什么意思??

        #获取所有评论
        response = self.client.get(url_for('get_comments'),
                                   headers=self.get_api_headers(
                                       '*****@*****.**', password='******'))
        self.assertTrue(response.status_code == 200)
        json_response = json.loads(response.data.decode('utf-8'))
        self.assertIsNotNone(json_response.get('posts'))
        self.assertTrue(json_response.get('count', 0) == 2)
Example #51
0
 def setUp(self):
     self.new_user = User(username='******', email='*****@*****.**', password='******')
     self.new_post = Post()
     self.new_comment = Comment()
Example #52
0
 def generate_post(func_author):
     return Post(title=lorem_ipsum.title(),
                 body=lorem_ipsum.paragraphs(),
                 created=date.date(),
                 author=func_author())
 def testPost(self):
     post = Post(title="My Title", description="Blurb", wiki="Post Body")
     self.assertEqual(post.title, "My Title")
     self.assertEqual(post.description, "Blurb")
     self.assertEqual(post.wiki, "Post Body")
Example #54
0
def draft_post(hash_id):
    post = Post.get_or_404(hash_id)
    post.action_draft()
    db.session.commit()
    return jsonify(True)
Example #55
0
 async def mutate(self, info: ResolveInfo, theme: str, description: str,
                  section_id: int) -> (lambda: CreatePost):
     app = info.context['request'].app
     async with app['db'].acquire() as conn:
         post = Post(theme, description, section_id)
         return CreatePost(ok=await post.save(conn))
Example #56
0
def post():
    post = Post(author=current_user, body=request.values.get('post'))
    db.session.add(post)
    db.session.commit()
    return redirect(url_for('index'))
Example #57
0
def delete_post(hash_id):
    post = Post.get_or_404(hash_id)
    Post.query.filter(Post.id == post.id).delete()
    db.session.commit()
    return jsonify(True)
Example #58
0
 def test_follow_posts(self):
     u1 = User(nickname='john', email='*****@*****.**', social_id='john')
     u2 = User(nickname='susan',
               email='*****@*****.**',
               social_id='susan')
     u3 = User(nickname='mary', email='*****@*****.**', social_id='mary')
     u4 = User(nickname='david',
               email='*****@*****.**',
               social_id='david')
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     utcnow = datetime.utcnow()
     p1 = Post(body="post from john",
               author=u1,
               timestamp=utcnow + timedelta(seconds=1))
     p2 = Post(body="post from susan",
               author=u2,
               timestamp=utcnow + timedelta(seconds=2))
     p3 = Post(body="post from mary",
               author=u3,
               timestamp=utcnow + timedelta(seconds=3))
     p4 = Post(body="post from david",
               author=u4,
               timestamp=utcnow + timedelta(seconds=4))
     db.session.add(p1)
     db.session.add(p2)
     db.session.add(p3)
     db.session.add(p4)
     try:
         db.session.commit()
     except:
         db.session.rollback()
         raise
     u1.follow(u1)  # john follows himself
     u1.follow(u2)  # john follows susan
     u1.follow(u4)  # john follows david
     u2.follow(u2)  # susan follows herself
     u2.follow(u3)  # susan follows mary
     u3.follow(u3)  # mary follows herself
     u3.follow(u4)  # mary follows david
     u4.follow(u4)  # david follows himself
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     try:
         db.session.commit()
     except:
         db.session.rollback()
         raise
     f1 = u1.followed_posts().all()
     f2 = u2.followed_posts().all()
     f3 = u3.followed_posts().all()
     f4 = u4.followed_posts().all()
     assert len(f1) == 3
     assert len(f2) == 2
     assert len(f3) == 2
     assert len(f4) == 1
     assert f1 == [p4, p2, p1]
     assert f2 == [p3, p2]
     assert f3 == [p4, p3]
     assert f4 == [p4]
Example #59
0
def get_post_comments():
    hash_id = request.args.get('post_id')
    post = Post.get_or_404(hash_id)
    query = Comment.query.filter(Comment.post_id == post.id).order_by(
        Comment.thread_timestamp.desc(), Comment.path.asc())
    return jsonify([i.to_dict() for i in query.all()])
Example #60
0
 def add_post(title, content=None):
     post = Post(content=content, title=title)
     db.session.add(post)
     db.session.commit()
     return post.to_dict()