Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, request, session, \
- flash, redirect, url_for, g
- from functools import wraps
- import sqlite3
- #configuration
- DATABASE = 'blog.db'
- USERNAME = 'admin'
- PASSWORD = 'admin'
- SECRET_KEY = 'q2A8%IW5Ks^1fP&b'
- app = Flask(__name__)
- #pulls in app configuration by looking for UPPERCASE variables
- app.config.from_object(__name__)
- def login_required(test):
- @wraps(test)
- def wrap(*args, **kwargs):
- if 'logged_in' in session:
- return test(*args, **kwargs)
- else:
- flash('You need to log in first.')
- return redirect(url_for('login'))
- return wrap
- #function used for connecting to the database
- def connect_db():
- return sqlite3.connect(app.config['DATABASE'])
- @app.route('/', methods=['GET', 'POST'])
- def login():
- error = None
- status_code = 200
- if request.method == 'POST':
- if request.form['username'] != app.config['USERNAME'] or \
- request.form['password'] != app.config['PASSWORD']:
- error = 'Invalid Credentials. Please try again.'
- status_code = 401
- else:
- session['logged_in'] = True
- return redirect(url_for('main'))
- return render_template('login.html', error=error), status_code
- @app.route('/main')
- @login_required
- def main():
- g.db = connect_db()
- cur = g.db.execute('select * from posts')
- posts = [dict(title=row[0], post=row[1]) for row in cur.fetchall()]
- g.db.close()
- return render_template('main.html', posts=posts)
- @app.route('/add', methods=['POST'])
- @login_required
- def add():
- title = request.form['title']
- post = request.form['post']
- if not title or not post:
- flash("All fields are requred. Please try again.")
- return redirect(url_for('main'))
- else:
- g.db = connect_db()
- g.db.execute('Insert into posts (title, post) values (?, ?)',
- [request.form['title'], request.form['post']])
- g.db.commit()
- g.db.close()
- flash('New entry was successfully posted!')
- return redirect(url_for('main'))
- @app.route('/logout')
- def logout():
- session.pop('logged_in', None)
- flash('You were logged out')
- return redirect(url_for('login'))
- if __name__ == "__main__":
- app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement