Esempio n. 1
0
def test_get_close_db(app):
    with app.app_context():
        db = get_db()
        assert db is get_db()

    with pytest.raises(sqlite3.ProgrammingError) as e:
        db.execute('SELECT 1')

    assert 'closed' in str(e.value)
Esempio n. 2
0
def update(post_id):
    post = get_post(post_id)

    if request.method == 'POST':
        url = post['url']
        state = request.form['state']
        level = request.form['level']
        office = request.form['office']
        profession = request.form['profession']
        text = request.form["text"]
        error = None

        if not url:
            error = 'Url required'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'UPDATE post SET url=%s, state=%s, level=%s, office=%s, profession=%s, text=%s'
                ' WHERE id=%s;',
                (url, state, level, office, profession, text, post_id))
            return redirect(url_for('application.index'))

    return render_template('application/update.html', post=post)
Esempio n. 3
0
def create():
    bucket = GSbucket()
    BUCKET = bucket.bucket
    BLOB = bucket.blob
    if request.method == 'POST':
        url = request.form['url']
        error = None

        if not url:
            error = 'Url required'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            CAWPwd = os.path.join(os.getcwd(), "CAWPr/CAWPspider")
            subprocess.run([
                "scrapy", "crawl", "candidate", "-a", "url=" + url, "-a",
                "BUCKET_NAME=" + BUCKET, "-a", "REMOTE_BLOB_NAME=" + BLOB
            ],
                           cwd=CAWPwd)
            text = download_blob(BUCKET, BLOB).decode('utf-8')
            entry = classifier(text)
            db.execute(
                'INSERT INTO post (url, state, level, office, profession,text)'
                ' VALUES (%s,%s,%s,%s,%s,%s);',
                (url, entry['state'], entry['level'], entry['office'],
                 entry['profession'], entry['text']))
            return redirect(url_for('application.index'))

    return render_template('application/create.html')
Esempio n. 4
0
def index():
    db = get_db()
    db.execute('SELECT p.id, url, state, level, office, profession, created'
               ' FROM post p'
               ' ORDER BY created ASC')
    posts = db.fetchall()
    return render_template('application/index.html', posts=posts)
Esempio n. 5
0
def app():
    db_fd, db_path = tempfile.mkstemp()

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

    with app.app_context():
        init_db()
        get_db().executescript(_data_sql)

    yield app

    os.close(db_fd)
    os.unlink(db_path)
Esempio n. 6
0
def test_delete(client, auth, app):
    auth.login()
    response = client.post('/1/delete')
    assert response.headers['Location'] == 'http://localhost/'

    with app.app_context():
        db = get_db()
        post = db.execute('SELECT * FROM post WHERE id=1').fetchone()
        assert post is None
Esempio n. 7
0
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        db = get_db()
        db.execute('SELECT * From users WHERE id = %s;', (user_id, ))
        g.user = db.fetchone()
Esempio n. 8
0
def test_register(client, app):
    assert client.get('/auth/register').status_code == 200
    response = client.post('/auth/register',
                           data={
                               'username': '******',
                               'password': '******'
                           })
    assert 'http://localhost/auth/login' == response.headers['Location']

    with app.app_context():
        assert get_db().execute(
            "select * from user where username='******'", ).fetchone() is not None
Esempio n. 9
0
def get_post(post_id):
    db = get_db()
    db.execute(
        'SELECT p.id, url, state, level, office, profession, text'
        ' FROM post p'
        ' WHERE p.id=%s;', (post_id, ))
    post = db.fetchone()

    if post is None:
        abort(404, "Post id {0} doesn't exist.".format(post_id))

    return post
Esempio n. 10
0
def test_update(client, auth, app):
    auth.login()
    assert client.get('/1/update').status_code == 200
    client.post('/1/update',
                data={
                    'url': 'http://updated.com',
                    'state': 'NJ',
                    'level': '',
                    'office': 'rep',
                    'profession': 'baker'
                })

    with app.app_context():
        db = get_db()
        post = db.execute('SELECT * FROM post WHERE id=1').fetchone()
        assert post['url'] == 'http://updated.com'
Esempio n. 11
0
def test_create(client, auth, app):
    auth.login()
    assert client.get('/create').status_code == 200
    client.post('/create',
                data={
                    'url': 'http://candidate.com',
                    'state': 'NJ',
                    'level': '',
                    'office': 'senate',
                    'profession': ''
                })

    with app.app_context():
        db = get_db()
        count = db.execute('SELECT COUNT(id) FROM post').fetchone()[0]
        assert count == 2
Esempio n. 12
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None
        db.execute('SELECT * FROM users WHERE username=%s;', (username, ))
        user = db.fetchone()

        if user is None:
            error = 'Incorrect username.'
        elif not check_password_hash(user['password'], password):
            error = 'Incorrect password.'

        if error is None:
            session.clear()
            session['user_id'] = user['id']
            return redirect(url_for('index'))

        flash(error)

    return render_template('auth/login.html')
Esempio n. 13
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        db.execute('SELECT id from users WHERE username=%s;', (username, ))
        error = None

        if not username:
            error = 'Username required'
        elif not password:
            error = 'Password required'
        elif db.fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            db.execute(
                'INSERT INTO users (username, password) VALUES (%s,%s);',
                (username, generate_password_hash(password)))
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
Esempio n. 14
0
def delete(post_id):
    get_post(post_id)
    db = get_db()
    db.execute('DELETE FROM post WHERE id = %s;', (post_id, ))
    return redirect(url_for('application.index'))