Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, flash, request, render_template, session, redirect, url_for
- from mess.database import db
- from sqlalchemy import exc
- from User import User, AddUserForm, EditUserForm
- from Classifiers import Group, Category, Type, GroupForm, CategoryForm, TypeForm
- from Disaster import Disaster, DisasterForm
- from Settlements import Settlement, SettlementForm, Marz, MarzForm
- app = Flask(__name__)
- app.config.from_object('mess.config')
- def __init__():
- print "Initializing MESS"
- def __before__(self):
- db.session.close()
- @app.before_request
- def before_request():
- db.session.close()
- if 'user' not in session and request.endpoint not in ('login', 'static'):
- return redirect(url_for('login'))
- @app.route("/", methods=['GET'])
- def index():
- page = request.args.get('page', 1, type=int)
- disasters = Disaster.query.order_by(Disaster.id).paginate(page, per_page=20, error_out=False)
- return render_template('index.html', disasters=disasters)
- @app.route('/logout')
- def logout():
- if 'user' in session:
- del session['user']
- return redirect(url_for('login'))
- @app.route('/login', methods=['GET', 'POST'])
- def login():
- if 'user' in session:
- return redirect(url_for('index'))
- error = ''
- if request.method == 'POST':
- username = request.form['username']
- password = request.form['password']
- user = User.auth(username, password)
- if not(User.auth(username, password)):
- error = 'No user!'
- else:
- session['user'] = user
- return redirect(url_for('login'))
- return render_template('login.html', error=error)
- @app.route("/users")
- def users():
- users = User.query.all()
- return render_template('users.html', users=users)
- @app.route("/users/<username>", methods=['GET', 'POST'])
- def edit_user(username):
- user = User.query.filter(User.username == username).first()
- if request.method == 'POST':
- form = EditUserForm(request.form)
- if form.validate():
- user.role = form.role.data
- if form.password.data:
- user.password = form.password.data
- db.session.commit()
- flash('User saved')
- return redirect(url_for('users'))
- else:
- form = EditUserForm(obj=user)
- return render_template("edit-user.html", user=user, form=form)
- @app.route("/users/add", methods=['GET', 'POST'])
- def add_user():
- form = AddUserForm()
- if request.method == 'POST':
- form = AddUserForm(request.form)
- if form.validate():
- user = User()
- user.username = form.username.data
- user.password = form.password.data
- user.role = form.role.data
- db.session.add(user)
- db.session.commit()
- flash('User added')
- return redirect(url_for('users'))
- return render_template("add-user.html", form=form)
- @app.route("/users/delete/<username>")
- def delete_user(username):
- user = User.query.filter(User.username == username).first()
- db.session.delete(user)
- db.session.commit()
- flash('User deleted')
- return redirect(url_for('users'))
- @app.route("/classifiers")
- def classifiers():
- groups = Group.query.all()
- return render_template('classifiers.html', groups=groups)
- @app.route('/classifiers/group/delete/<gid>')
- def delete_group(gid):
- group = Group.query.filter(Group.gid == gid).first()
- if group.categories:
- flash('The group is not empty', 'err')
- else:
- db.session.delete(group)
- db.session.commit()
- flash('Group deleted')
- return redirect(url_for('classifiers'))
- @app.route('/classifiers/group/add', methods=['GET', 'POST'])
- def add_group():
- form = GroupForm()
- if request.method == 'POST':
- form = GroupForm(request.form)
- if form.validate():
- group = Group()
- form.populate_obj(group)
- db.session.add(group)
- try:
- db.session.commit()
- flash('Group added')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A group with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- return render_template("group.html", form=form)
- @app.route('/classifiers/group/<gid>', methods=['GET', 'POST'])
- def edit_group(gid):
- group = Group.query.filter(Group.gid == gid).first()
- if request.method == 'POST':
- form = GroupForm(request.form)
- if form.validate():
- form.populate_obj(group)
- try:
- db.session.commit()
- flash('Group saved')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A group with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- else:
- form = GroupForm(obj=group)
- return render_template("group.html", form=form)
- @app.route('/classifiers/category/add/<group_gid>', methods=['GET', 'POST'])
- def add_category(group_gid):
- form = CategoryForm(group_gid=group_gid)
- if request.method == 'POST':
- form = CategoryForm(request.form)
- if form.validate():
- category = Category()
- form.populate_obj(category)
- db.session.add(category)
- try:
- db.session.commit()
- flash('Category added')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A category with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- return render_template("category.html", form=form, group_gid=group_gid)
- @app.route('/classifiers/category/<cid>', methods=['GET', 'POST'])
- def edit_category(cid):
- category = Category.query.filter(Category.cid == cid).first()
- if request.method == 'POST':
- form = CategoryForm(request.form)
- if form.validate():
- form.populate_obj(category)
- try:
- db.session.commit()
- flash('Category saved')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A category with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- else:
- form = CategoryForm(obj=category)
- return render_template("category.html", form=form)
- @app.route('/classifiers/category/delete/<cid>')
- def delete_category(cid):
- category = Category.query.filter(Category.cid == cid).first()
- if category.types:
- flash('The category is not empty', 'err')
- else:
- db.session.delete(category)
- db.session.commit()
- flash('Category deleted')
- return redirect(url_for('classifiers'))
- @app.route('/classifiers/type/add/<category_cid>', methods=['GET', 'POST'])
- def add_type(category_cid):
- form = TypeForm(category_cid=category_cid)
- if request.method == 'POST':
- form = TypeForm(request.form)
- if form.validate():
- type = Type()
- form.populate_obj(type)
- db.session.add(type)
- try:
- db.session.commit()
- flash('Type added')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A type with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- return render_template("type.html", form=form, category_cid=category_cid)
- @app.route('/classifiers/type/<tid>', methods=['GET', 'POST'])
- def edit_type(tid):
- type = Type.query.filter(Type.tid == tid).first()
- if request.method == 'POST':
- form = TypeForm(request.form)
- if form.validate():
- form.populate_obj(type)
- try:
- db.session.commit()
- flash('Type saved')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A type with that ID already exists', 'err')
- return redirect(url_for('classifiers'))
- else:
- form = TypeForm(obj=type)
- return render_template('type.html', form=form)
- @app.route('/classifiers/type/delete/<tid>')
- def delete_type(tid):
- type = Type.query.filter(Type.tid == tid).first()
- ###
- #if type.incidents:
- # flash('The type has some incidents', 'err')
- #else:
- db.session.delete(type)
- db.session.commit()
- flash('Type deleted')
- return redirect(url_for('classifiers'))
- @app.route('/add', methods=['GET', 'POST'])
- def add_disaster():
- form = DisasterForm()
- if request.method == 'POST':
- form = DisasterForm(request.form)
- if form.validate():
- disaster = Disaster()
- form.populate_obj(disaster)
- db.session.add(disaster)
- try:
- db.session.commit()
- flash('Disaster added')
- except exc.IntegrityError:
- db.session.rollback()
- flash('Error adding a disaster', 'err')
- return redirect(url_for('index'))
- else:
- print form.errors
- return render_template('add-disaster.html', form=form)
- @app.route('/settlements', methods=['GET'])
- def settlements():
- page = request.args.get('page', 1, type=int)
- settlements = Settlement.query.order_by(Settlement.id).paginate(page, per_page=20, error_out=False)
- return render_template('settlements.html', settlements=settlements)
- @app.route('/settlements/add', methods=['GET', 'POST'])
- def add_settlement():
- form = SettlementForm()
- if request.method == 'POST':
- form = SettlementForm(request.form)
- if form.validate():
- settlement = Settlement()
- form.populate_obj(settlement)
- db.session.add(settlement)
- db.session.commit()
- flash('Settlement added')
- return redirect(url_for('settlements'))
- return render_template('settlement.html', form=form)
- @app.route('/settlements/<id>', methods=['GET', 'POST'])
- def edit_settlement(id):
- settlement = Settlement.query.filter(Settlement.id == id).first()
- if request.method == 'POST':
- form = SettlementForm(request.form)
- if form.validate():
- form.populate_obj(settlement)
- try:
- db.session.commit()
- flash('Settlement saved')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A settlement with that ID already exists', 'err')
- return redirect(url_for('settlements'))
- else:
- form = SettlementForm(obj=settlement)
- return render_template('settlement.html', form=form)
- @app.route('/marzes')
- def marzes():
- page = request.args.get('page', 1, type=int)
- marzes = Marz.query.order_by(Marz.code).paginate(page, per_page=20, error_out=False)
- return render_template('marzes.html', marzes=marzes)
- @app.route('/marzes/add', methods=['GET', 'POST'])
- def add_marz():
- form = MarzForm()
- if request.method == 'POST':
- form = MarzForm(request.form)
- if form.validate():
- marz = Marz()
- form.populate_obj(marz)
- db.session.add(marz)
- db.session.commit()
- flash('Marz added')
- return redirect(url_for('marzes'))
- return render_template('marz.html', form=form)
- @app.route('/marzes/<code>', methods=['GET', 'POST'])
- def edit_marz(code):
- marz = Marz.query.filter(Marz.code == code).first()
- if request.method == 'POST':
- form = MarzForm(request.form)
- if form.validate():
- form.populate_obj(marz)
- try:
- db.session.commit()
- flash('Marz saved')
- except exc.IntegrityError:
- db.session.rollback()
- flash('A marz with that code already exists', 'err')
- return redirect(url_for('marzes'))
- else:
- form = MarzForm(obj=marz)
- return render_template('marz.html', form=form)
- @app.route('/report', methods=['GET', 'POST'])
- def report():
- disaster_form = DisasterForm()
- if request.method == 'POST':
- print request.form.getlist('criteria')
- return render_template('report.html', disaster_form=disaster_form)
- @app.route('/buildings', methods=['GET'])
- def buildings():
- page = request.args.get('page', 1, type=int)
- buildings = BuildingsInventory.query.order_by(BuildingsInventory.id).paginate(page, per_page=20, error_out=False)
- return render_template('buildings.html', buildings=buildings)
Add Comment
Please, Sign In to add comment