예제 #1
0
def db_insert_test_data(app):
    with app.app_context():
        init_db()
        db = get_db()
        test_user = User(
            username='******',
            password_hash=
            'pbkdf2:sha256:50000$TCI4GzcX$0de171a4f4dac32e3364c7ddc7c14f3e2fa61f2d17574483f7ffbb431b4acb2f',
            first_name='TestUserFirstName',
            last_name='TestUserLastName',
        )
        other_user = User(
            username='******',
            password_hash=
            'pbkdf2:sha256:50000$kJPKsz6N$d2d4784f1b030a9761f5ccaeeaca413f27f2ecb76d6168407af962ddce849f79',
            first_name='OtherUserFirstName',
            last_name='OtherUserLastName',
        )
        test_post = Post(
            author_id=1,
            created=datetime.fromisoformat('2020-01-01 00:00:00'),
            title='test title',
            body='test\nbody',
        )
        other_post = Post(
            author_id=2,
            created=datetime.fromisoformat('2020-02-01 00:00:00'),
            title='other title',
            body='other\nbody',
        )
        db.session.add_all((test_user, other_user, test_post, other_post))
        db.session.commit()
예제 #2
0
def insert_post(title, body, filename, user_id, tags=[]):
    post = Post(title=title, body=body, image_path=filename, author_id=user_id)
    db.session.add(post)

    if len(tags) > 0:
        db_tags = get_persistent_tags(tags)
        post.tags = db_tags

    db.session.commit()
    return post.id
예제 #3
0
def post():
    form = PostForm(request.form)
    if request.method == 'POST' and form.validate():
        title = form.title.data
        content = form.content.data
        due_date = form.due_date.data
        posts = Post(title, content, due_date)
        posts.add_post()
        return redirect(url_for('app.todohome'))
    return render_template('post.html', form=form)
예제 #4
0
def post(page_id):
    form = PostForm(request.form)
    page_id = page_id
    if request.method == 'POST' and form.validate():
        content = form.content.data
        username = form.username.data
        page_id = form.page_id.data
        time = datetime.datetime.now()
        post = Post(content, username, time, page_id)
        post.add_post()
        flash('新しく投稿しました!')
        return redirect(url_for('app.user_page'))
    return render_template('post.html', form=form, page_id=page_id)
예제 #5
0
def create():
    """Create a new post for the current user."""
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            # for u, a in session.query(User, Address).
            # filter(User.id==Address.user_id).\
            #filter(Address.email_address=='*****@*****.**').\ all():
            u1 = g.user.id
            u = db_session.query(User).filter(User.id == u1).first()
            # p = Post( title, body, g.user['id'] )
            # Post(user_id=None , user = None ,created =None, body=None )
            # Post(title =title , body=body)
            # user = u ,
            p = Post(title=title, body=body)
            u.posts = [p]

            #db_session.add(p)
            db_session.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
예제 #6
0
def get_post(id):
    try:
        instance = Post.get(Post.id == id)
    except Post.DoesNotExist:
        return jsonify({'data': 'NotFound'}, status=404)

    return instance
예제 #7
0
파일: blog.py 프로젝트: penn525/flaskr-blog
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            # mysql
            post = Post(title, body, g.user.id)
            db_session.add(post)
            db_session.commit()

            # sqlite3
            # db = get_db()
            # db.execute(
            #     'INSERT INTO post (title, body, author_id)'
            #     ' VALUES (?, ?, ?)',
            #     (title, body, g.user['id'])
            # )
            # db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
예제 #8
0
def get_all_posts():
    """
    Get all posts available in database.

    :return: Flask `Response` object with added JSON representation of all `Post`
    objects available and `Content-Type: application/json` HTTP header.
    """
    return jsonify(Post.to_collection_dict())
예제 #9
0
def create():
    data = request.json

    if not data.get('title'):
        return jsonify({'error': 'Title is required.'})

    data['user_id'] = g.user.id
    instance = Post.create(**data)
    return jsonify(model_to_dict(instance, exclude=[Post.user.password]))
예제 #10
0
파일: blog.py 프로젝트: renier8/flask-app
def create():
    if request.method == 'POST':
        body = request.form['body']

        post = Post(body=body, author=g.user)
        db_session.add(post)
        db_session.commit()
        return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
예제 #11
0
파일: tests.py 프로젝트: SSENMIN/blog
    def test_follow_posts(self):
        # create four users
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')
        u3 = User(username='******', email='*****@*****.**')
        u4 = User(username='******', email='*****@*****.**')
        db.session.add_all([u1, u2, u3, u4])

        # create four posts
        now = datetime.utcnow()
        p1 = Post(body="post from john",
                  author=u1,
                  timestamp=now + timedelta(seconds=1))
        p2 = Post(body="post from susan",
                  author=u2,
                  timestamp=now + timedelta(seconds=4))
        p3 = Post(body="post from mary",
                  author=u3,
                  timestamp=now + timedelta(seconds=3))
        p4 = Post(body="post from david",
                  author=u4,
                  timestamp=now + timedelta(seconds=2))
        db.session.add_all([p1, p2, p3, p4])
        db.session.commit()

        # setup the followers
        u1.follow(u2)  # john follows susan
        u1.follow(u4)  # john follows david
        u2.follow(u3)  # susan follows mary
        u3.follow(u4)  # mary follows david
        db.session.commit()

        # check the followed posts of each user
        f1 = u1.followed_posts().all()
        f2 = u2.followed_posts().all()
        f3 = u3.followed_posts().all()
        f4 = u4.followed_posts().all()
        self.assertEqual(f1, [p2, p4, p1])
        self.assertEqual(f2, [p2, p3])
        self.assertEqual(f3, [p3, p4])
        self.assertEqual(f4, [p4])
예제 #12
0
def load_posts():
    test_user = User.query.filter(User.username == "test").first()
    post1 = Post(
        title="test title",
        body="test body without image",
        image_path="test_image.jpg",
        author_id=test_user.id,
        created=datetime(2020, 1, 1, 15, 17, tzinfo=timezone.utc),
    )
    db.session.add(post1)

    for i in range(10):
        db.session.add(
            Post(
                title="post without image - " + str(i),
                body="test body without image",
                author_id=test_user.id,
                created=datetime(2019, 5, 18, (15 - i), 17, tzinfo=timezone.utc),
            )
        )
    db.session.commit()
예제 #13
0
def new_post():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(title=form.title.data, contest_url=form.url.data,
                    content=form.content.data,
                    author=current_user, contest_date=form.date.data)
        db.session.add(post)
        db.session.commit()
        flash('Your post has been created!', 'success')
        return redirect(url_for('home'))
    return render_template('create_post.html',
                           title='New Post', form=form, legend='New Post')
예제 #14
0
def test_create_db(app, runner):
    result = runner.invoke(args=['create-db'])
    assert 'database created' in result.output
    with app.app_context():
        user = User(name='testing')
        user.set_password('testing')
        post = Post(title='testing', body='testing')
        post.author = user
        db.session.add_all([user, post])
        db.session.commit()
        users = User.query.all()
        posts = Post.query.all()
        assert len(users) == 1
        assert len(posts) == 1
    result = runner.invoke(args=['create-db', '--force'])
    assert 'old database dropped' in result.output
    with app.app_context():
        users = User.query.all()
        posts = Post.query.all()
        assert len(users) == 0
        assert len(posts) == 0
예제 #15
0
def newpost():
    form = PostForm()
    if (form.validate_on_submit()):
        post = Post(title=form.title.data,
                    content=form.content.data,
                    author=current_user)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('home'))
    return render_template('create_post.html',
                           title='New Post',
                           form=form,
                           legend='Create Post')
예제 #16
0
def app():
    app = create_app(TestConfig)
    with app.app_context():
        db.drop_all()
        db.create_all()
        user1 = User(username='******', password=generate_password_hash('test'))
        user2 = User(username='******',
                     password=generate_password_hash('test2'))
        db.session.add_all([user1, user2])
        db.session.commit()
        post = Post(title='test title',
                    body='test',
                    created='2018-01-01 00:00:00',
                    author_id=1)
        db.session.add(post)
        db.session.commit()
        yield app
예제 #17
0
def create():
    """Create a blog post and redirect to main page."""
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None
        if not title:
            error = 'Title is required.'
        if error is not None:
            flash(error)
        else:
            db = get_db()
            post = Post(title=title, body=body, author_id=g.user.id_)
            db.session.add(post)
            db.session.commit()
            return redirect(url_for('blog.index'))
    return render_template('blog/create.html')
예제 #18
0
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None
        print(g.user)
        if not title:
            error = 'Title is required.'
        if error is not None:
            flash(error)
        else:
            post = Post(title=title, body=body, author_id=session["user_id"])
            db.session.add(post)
            db.session.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
예제 #19
0
def app():
    db_fd, db_path = tempfile.mkstemp()

    app = create_app({
        'TESTING': True,
        'DATABASE': db_path,
        'WTF_CSRF_ENABLED': False,
    })

    with app.test_client() as client:
        client.get('/')
        g.session.add_all(User(**user) for user in USERS)
        g.session.add_all(Post(**post) for post in POSTS)

    yield app

    os.close(db_fd)
    os.unlink(db_path)
예제 #20
0
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            data = Post(current_user.id, title, body)
            db.session.add(data)
            db.session.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
예제 #21
0
def create():
    if request.method == "POST":
        title = request.form["title"]
        body = request.form["body"]
        error = None

        if not title:
            error = "Title is required."

        if error is not None:
            flash(error)
        else:
            post = Post(title=title, body=body, author_id=g.user.id)
            db.session.add(post)
            db.session.commit()
            return redirect(url_for("blog.index"))

    return render_template("blog/create.html")
예제 #22
0
파일: blog.py 프로젝트: kevincli1/flaskr
def create():
    if request.method == 'POST':
        title = request.form.get('title')
        body = request.form.get('body')
        error = None

        if not title:
            error = 'Title is required.'

        if error is not None:
            flash(error)
        else:
            post = Post(title=title,
                        body=body,
                        author_id=current_user.get_id())
            db.session.add(post)
            db.session.commit()
            return redirect(url_for('blog.index', _external=True))

    return render_template('blog/create.html')
예제 #23
0
def post_create():
    if request.method == 'POST':
        title = request.form["title"]
        body = request.form["body"]
        categories = request.form.getlist("categories")
        category_data = []
        for category in categories:
            tmp = Category.query.filter(Category.name == category).first()
            category_data.append(tmp)
        print(category_data)
        post = Post(title=title,
                    body=body
        )
        for category in category_data:
            post.categories.append(category)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('post_list'))
    categories = Category.query.all()
    return render_template('post/edit.html', categories=categories)
예제 #24
0
def app():
    """Create and configure a new app instance for each test."""
    # create the app with common test config
    app = create_app({
        'TESTING': True,
        'SQLALCHEMY_DATABASE_URI': 'sqlite:///:memory:',
    })

    # create the database and load test data
    with app.app_context():
        db.create_all()
        user1 = User(username='******', password=generate_password_hash('test'))
        user2 = User(username='******',
                     password=generate_password_hash('other'))
        post = Post(title='test title',
                    body=('test\nbody'),
                    author_id=1,
                    created=datetime(2018, 1, 1))
        db.session.add_all([user1, user2, post])
        db.session.commit()

    yield app
예제 #25
0
파일: routes.py 프로젝트: SSENMIN/blog
def index():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(body=form.post.data, author=current_user)
        print(form.post.data, post.author)
        db.session.add(post)
        db.session.commit()
        flash('Your post is now live!')
        return redirect(url_for('index'))
    page = request.args.get('page', 1, type=int)
    posts = current_user.followed_posts().paginate(
        page, app.config['POSTS_PER_PAGE'], False)
    next_url = url_for('index',
                       page=posts.next_num) if posts.has_next else None
    prev_url = url_for('index',
                       page=posts.prev_num) if posts.has_prev else None
    return render_template('index.html',
                           title='Home',
                           form=form,
                           posts=posts.items,
                           next_url=next_url,
                           prev_url=prev_url)
예제 #26
0
 def create_post(self):
     post = Post(author_id=self.user.id, **post_data)
     db.session.add(post)
     db.session.commit()
     return post
예제 #27
0
def posts():
    qs = Post.select()
    result = []
    for item in qs:
        result.append(model_to_dict(item, exclude=[Post.user.password]))
    return jsonify(result)
예제 #28
0
def delete_user_post(id):
    user = User.query.filter_by(username=get_jwt_identity()).first_or_404()
    post = Post().query.filter_by(user=user, id=id).first_or_404()
    db.session.delete(post)
    db.session.commit()
    return '', 204  # No Content
예제 #29
0
def get_user_posts():
    user = User.query.filter_by(username=get_jwt_identity()).first_or_404()
    query = Post().query.filter_by(user=user).order_by(get_sort(request))
    return jsonify(render_paginator(request, PostSchema, query)), 200  # OK
예제 #30
0
def index(page=1):
    try:
        registerform = RegistrationForm()
        if registerform.validate_on_submit():
            checkUsername = registerform.username.data
            checkEmail = registerform.email.data
            hashed_password = bcrypt.generate_password_hash(
                registerform.password.data).decode('utf-8')
            user = User(username=registerform.username.data,
                        email=registerform.email.data,
                        password=hashed_password)
            usernameExists = db.session.query(
                db.session.query(User).filter_by(
                    username=checkUsername).exists()).scalar()
            emailExists = db.session.query(
                db.session.query(User).filter_by(
                    email=checkEmail).exists()).scalar()
            if usernameExists or emailExists:
                message = 'That username or email is already taken'
                flash(str(message), 'loginError')
                return redirect("/")
                return render_template('index.html', loginError=loginError)
            else:
                db.session.add(user)
                db.session.commit()
                message = 'Registration succesfull!'
                flash(str(message), 'loginError')
                return redirect("/")
                return render_template('index.html', loginError=loginError)

            return redirect("/")
            return render_template('index.html', loginError=loginError)

        loginform = LoginForm()
        if loginform.validate_on_submit():
            user = User.query.filter_by(email=loginform.email.data).first()
            if user and bcrypt.check_password_hash(user.password,
                                                   loginform.password.data):
                login_user(user, remember=loginform.remember.data)
                #next_page = request.args.get('next')
                #return redirect(next_page) if next_page else redirect(url_for('index'))
                return redirect(url_for('/'))
            else:
                message = 'Invalid login, please check your login values and try again'
                flash(str(message), 'loginError')
                return redirect("/")
                return render_template('index.html', loginError=loginError)

        if current_user.is_authenticated:
            userfolder = current_user.username
            converteduserfiles = []
            userfiles = []

            path = f'files/{userfolder}/'

            if (os.path.exists(f'files/{userfolder}/converted')):
                pathtoconverted = f'files/{userfolder}/converted'
            else:
                if not (os.path.exists(f'files/{userfolder}')):
                    os.mkdir(f'files/{userfolder}')
                os.mkdir(f'files/{userfolder}/converted')
                pathtoconverted = f'files/{userfolder}/converted'

            for filename in os.listdir(path):
                if os.path.isfile and filename != 'converted':
                    userfiles.append(filename)

            for filename in os.listdir(pathtoconverted):
                if os.path.isfile:
                    converteduserfiles.append(filename)
        else:
            filename = ''
            path = ''
            userfiles = '', ''
            converteduserfiles = ''
            pathtoconverted = ''
            session['filename'] = filename
            session['path'] = path
            session['userfiles[]'] = userfiles
            session['converteduserfiles[]'] = converteduserfiles
            session['pathtoconverted'] = pathtoconverted

        session['filename'] = filename
        session['path'] = path
        session['userfiles[]'] = userfiles
        session['converteduserfiles[]'] = converteduserfiles
        session['pathtoconverted'] = pathtoconverted

        postform = PostForm()
        if postform.validate_on_submit():
            post = Post(title=postform.title.data,
                        content=postform.content.data,
                        author=current_user)
            db.session.add(post)
            db.session.commit()
            flash('Your post has been created!', 'success')
            return redirect(url_for('index'))

        RESULTS_PER_PAGE = 5
        #posts = Post.query.all()
        #models.Post.query.paginate(page, per_page, error_out=False)
        #posts = Post.query.order_by(Post.id.title()).paginate(page,per_page,error_out=False)
        posts = models.Post.query.paginate(page, RESULTS_PER_PAGE, False)
        num = int(ceil(float(posts.total) / RESULTS_PER_PAGE)) + 1

        environment = jinja2.Environment(os)
        environment.filters['os'] = os

        #{% for post in posts|sort(attribute='date_posted', reverse=true) %}

        return render_template(
            'index.html',
            title='Account',
            loginform=loginform,
            registerform=registerform,
            postform=postform,
            posts=posts,
            number_of_pages=num,
            userfiles=session['userfiles[]'],
            path=session['path'],
            filename=session['filename'],
            pathtoconverted=session['pathtoconverted'],
            converteduserfiles=session['converteduserfiles[]'],
            os=os)

    #All exception catchers, most of these will never happen but they're there just to be sure.
    except KeyError as a:
        flash(str(a), 'error')
        return redirect("/")
        return render_template('index.html', error=error)
        session.pop('_flashes', None)

    except NameError as b:
        flash(str(b), 'error')
        return redirect("/")
        return render_template('index.html', error=error)
        session.pop('_flashes', None)

    except ValueError as c:
        flash(str(c), 'error')
        return redirect("/")
        return render_template('index.html', error=error)
        session.pop('_flashes', None)

    except TypeError as f:
        flash(str(f), 'error')
        return redirect("/")
        return render_template('index.html', error=error)
        session.pop('_flashes', None)

    except:
        #message = 'You broke my webapp somehow, if this is a recurring error then please contact the developer'
        #flash(str(message), 'error')
        return redirect("/")
        #return render_template('index.html', error=error)
        return render_template('index.html')
        session.pop('_flashes', None)