Guest User

Untitled

a guest
Jan 25th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.94 KB | None | 0 0
  1. from flask import Flask, flash, request, render_template, session, redirect, url_for
  2.  
  3. from mess.database import db
  4. from sqlalchemy import exc
  5.  
  6. from User import User, AddUserForm, EditUserForm
  7. from Classifiers import Group, Category, Type, GroupForm, CategoryForm, TypeForm
  8. from Disaster import Disaster, DisasterForm
  9. from Settlements import Settlement, SettlementForm, Marz, MarzForm
  10.  
  11. app = Flask(__name__)
  12. app.config.from_object('mess.config')
  13.  
  14.  
  15.  
  16. def __init__():
  17.     print "Initializing MESS"
  18.  
  19.  
  20. def __before__(self):
  21.     db.session.close()
  22.  
  23.  
  24. @app.before_request
  25. def before_request():
  26.     db.session.close()
  27.     if 'user' not in session and request.endpoint not in ('login', 'static'):
  28.         return redirect(url_for('login'))
  29.    
  30.  
  31. @app.route("/", methods=['GET'])
  32. def index():
  33.     page = request.args.get('page', 1, type=int)
  34.  
  35.     disasters = Disaster.query.order_by(Disaster.id).paginate(page, per_page=20, error_out=False)
  36.  
  37.     return render_template('index.html', disasters=disasters)
  38.  
  39.  
  40. @app.route('/logout')
  41. def logout():
  42.     if 'user' in session:
  43.         del session['user']
  44.  
  45.     return redirect(url_for('login'))
  46.  
  47.  
  48. @app.route('/login', methods=['GET', 'POST'])
  49. def login():
  50.     if 'user' in session:
  51.         return redirect(url_for('index'))
  52.  
  53.     error = ''
  54.  
  55.     if request.method == 'POST':
  56.         username = request.form['username']
  57.         password = request.form['password']
  58.  
  59.         user = User.auth(username, password)
  60.  
  61.         if not(User.auth(username, password)):
  62.             error = 'No user!'
  63.         else:
  64.             session['user'] = user
  65.             return redirect(url_for('login'))
  66.  
  67.        
  68.     return render_template('login.html', error=error)
  69.  
  70.  
  71. @app.route("/users")
  72. def users():
  73.     users = User.query.all()
  74.  
  75.     return render_template('users.html', users=users)
  76.  
  77.  
  78. @app.route("/users/<username>", methods=['GET', 'POST'])
  79. def edit_user(username):
  80.     user = User.query.filter(User.username == username).first()
  81.  
  82.     if request.method == 'POST':
  83.         form = EditUserForm(request.form)
  84.        
  85.         if form.validate():
  86.             user.role = form.role.data
  87.  
  88.             if form.password.data:
  89.                 user.password = form.password.data
  90.  
  91.             db.session.commit()
  92.  
  93.             flash('User saved')
  94.  
  95.             return redirect(url_for('users'))
  96.     else:
  97.         form = EditUserForm(obj=user)
  98.  
  99.     return render_template("edit-user.html", user=user, form=form)
  100.  
  101.  
  102. @app.route("/users/add", methods=['GET', 'POST'])
  103. def add_user():
  104.     form = AddUserForm()
  105.  
  106.     if request.method == 'POST':
  107.         form = AddUserForm(request.form)
  108.        
  109.         if form.validate():
  110.             user = User()
  111.             user.username = form.username.data
  112.             user.password = form.password.data
  113.             user.role = form.role.data
  114.  
  115.             db.session.add(user)
  116.             db.session.commit()
  117.  
  118.             flash('User added')
  119.  
  120.             return redirect(url_for('users'))
  121.  
  122.     return render_template("add-user.html", form=form)
  123.  
  124.  
  125. @app.route("/users/delete/<username>")
  126. def delete_user(username):
  127.     user = User.query.filter(User.username == username).first()
  128.  
  129.     db.session.delete(user)
  130.     db.session.commit()
  131.  
  132.     flash('User deleted')
  133.  
  134.     return redirect(url_for('users'))
  135.  
  136.  
  137. @app.route("/classifiers")
  138. def classifiers():
  139.     groups = Group.query.all()
  140.  
  141.     return render_template('classifiers.html', groups=groups)
  142.  
  143.  
  144. @app.route('/classifiers/group/delete/<gid>')
  145. def delete_group(gid):
  146.     group = Group.query.filter(Group.gid == gid).first()
  147.  
  148.     if group.categories:
  149.         flash('The group is not empty', 'err')
  150.     else:
  151.         db.session.delete(group)
  152.         db.session.commit()
  153.  
  154.         flash('Group deleted')
  155.  
  156.     return redirect(url_for('classifiers'))
  157.  
  158.  
  159. @app.route('/classifiers/group/add', methods=['GET', 'POST'])
  160. def add_group():
  161.     form = GroupForm()
  162.  
  163.     if request.method == 'POST':
  164.         form = GroupForm(request.form)
  165.        
  166.         if form.validate():
  167.             group = Group()
  168.  
  169.             form.populate_obj(group)
  170.  
  171.             db.session.add(group)
  172.  
  173.             try:
  174.                 db.session.commit()
  175.                 flash('Group added')
  176.             except exc.IntegrityError:
  177.                 db.session.rollback()
  178.                 flash('A group with that ID already exists', 'err')
  179.  
  180.             return redirect(url_for('classifiers'))
  181.  
  182.     return render_template("group.html", form=form)
  183.  
  184.  
  185. @app.route('/classifiers/group/<gid>', methods=['GET', 'POST'])
  186. def edit_group(gid):
  187.     group = Group.query.filter(Group.gid == gid).first()
  188.  
  189.     if request.method == 'POST':
  190.         form = GroupForm(request.form)
  191.        
  192.         if form.validate():
  193.             form.populate_obj(group)
  194.  
  195.             try:
  196.                 db.session.commit()
  197.                 flash('Group saved')
  198.             except exc.IntegrityError:
  199.                 db.session.rollback()
  200.                 flash('A group with that ID already exists', 'err')
  201.  
  202.             return redirect(url_for('classifiers'))
  203.     else:
  204.         form = GroupForm(obj=group)
  205.  
  206.     return render_template("group.html", form=form)
  207.  
  208.  
  209. @app.route('/classifiers/category/add/<group_gid>', methods=['GET', 'POST'])
  210. def add_category(group_gid):
  211.     form = CategoryForm(group_gid=group_gid)
  212.  
  213.     if request.method == 'POST':
  214.         form = CategoryForm(request.form)
  215.        
  216.         if form.validate():
  217.             category = Category()
  218.             form.populate_obj(category)
  219.  
  220.             db.session.add(category)
  221.  
  222.             try:
  223.                 db.session.commit()
  224.                 flash('Category added')
  225.             except exc.IntegrityError:
  226.                 db.session.rollback()
  227.                 flash('A category with that ID already exists', 'err')
  228.  
  229.             return redirect(url_for('classifiers'))
  230.  
  231.     return render_template("category.html", form=form, group_gid=group_gid)
  232.  
  233.  
  234. @app.route('/classifiers/category/<cid>', methods=['GET', 'POST'])
  235. def edit_category(cid):
  236.     category = Category.query.filter(Category.cid == cid).first()
  237.  
  238.     if request.method == 'POST':
  239.         form = CategoryForm(request.form)
  240.        
  241.         if form.validate():
  242.             form.populate_obj(category)
  243.  
  244.             try:
  245.                 db.session.commit()
  246.                 flash('Category saved')
  247.             except exc.IntegrityError:
  248.                 db.session.rollback()
  249.                 flash('A category with that ID already exists', 'err')
  250.  
  251.             return redirect(url_for('classifiers'))
  252.     else:
  253.         form = CategoryForm(obj=category)
  254.  
  255.     return render_template("category.html", form=form)
  256.  
  257.  
  258. @app.route('/classifiers/category/delete/<cid>')
  259. def delete_category(cid):
  260.     category = Category.query.filter(Category.cid == cid).first()
  261.  
  262.     if category.types:
  263.         flash('The category is not empty', 'err')
  264.     else:
  265.         db.session.delete(category)
  266.         db.session.commit()
  267.  
  268.         flash('Category deleted')
  269.  
  270.     return redirect(url_for('classifiers'))
  271.  
  272.  
  273. @app.route('/classifiers/type/add/<category_cid>', methods=['GET', 'POST'])
  274. def add_type(category_cid):
  275.     form = TypeForm(category_cid=category_cid)
  276.  
  277.     if request.method == 'POST':
  278.         form = TypeForm(request.form)
  279.        
  280.         if form.validate():
  281.             type = Type()
  282.             form.populate_obj(type)
  283.  
  284.             db.session.add(type)
  285.  
  286.             try:
  287.                 db.session.commit()
  288.                 flash('Type added')
  289.             except exc.IntegrityError:
  290.                 db.session.rollback()
  291.                 flash('A type with that ID already exists', 'err')
  292.  
  293.             return redirect(url_for('classifiers'))
  294.  
  295.     return render_template("type.html", form=form, category_cid=category_cid)
  296.  
  297.  
  298. @app.route('/classifiers/type/<tid>', methods=['GET', 'POST'])
  299. def edit_type(tid):
  300.     type = Type.query.filter(Type.tid == tid).first()
  301.  
  302.     if request.method == 'POST':
  303.         form = TypeForm(request.form)
  304.        
  305.         if form.validate():
  306.             form.populate_obj(type)
  307.  
  308.             try:
  309.                 db.session.commit()
  310.                 flash('Type saved')
  311.             except exc.IntegrityError:
  312.                 db.session.rollback()
  313.                 flash('A type with that ID already exists', 'err')
  314.  
  315.             return redirect(url_for('classifiers'))
  316.     else:
  317.         form = TypeForm(obj=type)
  318.  
  319.     return render_template('type.html', form=form)
  320.  
  321.  
  322. @app.route('/classifiers/type/delete/<tid>')
  323. def delete_type(tid):
  324.     type = Type.query.filter(Type.tid == tid).first()
  325.  
  326.     ###
  327.     #if type.incidents:
  328.     #    flash('The type has some incidents', 'err')
  329.     #else:
  330.     db.session.delete(type)
  331.     db.session.commit()
  332.  
  333.     flash('Type deleted')
  334.  
  335.     return redirect(url_for('classifiers'))
  336.  
  337.  
  338. @app.route('/add', methods=['GET', 'POST'])
  339. def add_disaster():
  340.     form = DisasterForm()
  341.  
  342.     if request.method == 'POST':
  343.         form = DisasterForm(request.form)
  344.        
  345.         if form.validate():
  346.             disaster = Disaster()
  347.  
  348.             form.populate_obj(disaster)
  349.  
  350.             db.session.add(disaster)
  351.  
  352.             try:
  353.                 db.session.commit()
  354.                 flash('Disaster added')
  355.             except exc.IntegrityError:
  356.                 db.session.rollback()
  357.                 flash('Error adding a disaster', 'err')
  358.  
  359.             return redirect(url_for('index'))
  360.         else:
  361.             print form.errors
  362.  
  363.     return render_template('add-disaster.html', form=form)
  364.  
  365.  
  366. @app.route('/settlements', methods=['GET'])
  367. def settlements():
  368.     page = request.args.get('page', 1, type=int)
  369.     settlements = Settlement.query.order_by(Settlement.id).paginate(page, per_page=20, error_out=False)
  370.  
  371.     return render_template('settlements.html', settlements=settlements)
  372.  
  373.  
  374. @app.route('/settlements/add', methods=['GET', 'POST'])
  375. def add_settlement():
  376.     form = SettlementForm()
  377.  
  378.     if request.method == 'POST':
  379.         form = SettlementForm(request.form)
  380.        
  381.         if form.validate():
  382.             settlement = Settlement()
  383.  
  384.             form.populate_obj(settlement)
  385.  
  386.             db.session.add(settlement)
  387.             db.session.commit()
  388.  
  389.             flash('Settlement added')
  390.  
  391.             return redirect(url_for('settlements'))
  392.  
  393.     return render_template('settlement.html', form=form)
  394.  
  395.  
  396. @app.route('/settlements/<id>', methods=['GET', 'POST'])
  397. def edit_settlement(id):
  398.     settlement = Settlement.query.filter(Settlement.id == id).first()
  399.  
  400.     if request.method == 'POST':
  401.         form = SettlementForm(request.form)
  402.        
  403.         if form.validate():
  404.             form.populate_obj(settlement)
  405.  
  406.             try:
  407.                 db.session.commit()
  408.                 flash('Settlement saved')
  409.             except exc.IntegrityError:
  410.                 db.session.rollback()
  411.                 flash('A settlement with that ID already exists', 'err')
  412.  
  413.             return redirect(url_for('settlements'))
  414.     else:
  415.         form = SettlementForm(obj=settlement)
  416.  
  417.     return render_template('settlement.html', form=form)
  418.  
  419.  
  420. @app.route('/marzes')
  421. def marzes():
  422.     page = request.args.get('page', 1, type=int)
  423.     marzes = Marz.query.order_by(Marz.code).paginate(page, per_page=20, error_out=False)
  424.  
  425.     return render_template('marzes.html', marzes=marzes)
  426.  
  427.  
  428. @app.route('/marzes/add', methods=['GET', 'POST'])
  429. def add_marz():
  430.     form = MarzForm()
  431.  
  432.     if request.method == 'POST':
  433.         form = MarzForm(request.form)
  434.        
  435.         if form.validate():
  436.             marz = Marz()
  437.  
  438.             form.populate_obj(marz)
  439.  
  440.             db.session.add(marz)
  441.             db.session.commit()
  442.  
  443.             flash('Marz added')
  444.  
  445.             return redirect(url_for('marzes'))
  446.  
  447.     return render_template('marz.html', form=form)
  448.  
  449.  
  450. @app.route('/marzes/<code>', methods=['GET', 'POST'])
  451. def edit_marz(code):
  452.     marz = Marz.query.filter(Marz.code == code).first()
  453.  
  454.     if request.method == 'POST':
  455.         form = MarzForm(request.form)
  456.        
  457.         if form.validate():
  458.             form.populate_obj(marz)
  459.  
  460.             try:
  461.                 db.session.commit()
  462.                 flash('Marz saved')
  463.             except exc.IntegrityError:
  464.                 db.session.rollback()
  465.                 flash('A marz with that code already exists', 'err')
  466.  
  467.             return redirect(url_for('marzes'))
  468.     else:
  469.         form = MarzForm(obj=marz)
  470.  
  471.     return render_template('marz.html', form=form)
  472.  
  473.  
  474. @app.route('/report', methods=['GET', 'POST'])
  475. def report():
  476.     disaster_form = DisasterForm()
  477.  
  478.     if request.method == 'POST':
  479.         print request.form.getlist('criteria')
  480.  
  481.     return render_template('report.html', disaster_form=disaster_form)
  482.  
  483.  
  484. @app.route('/buildings', methods=['GET'])
  485. def buildings():
  486.     page = request.args.get('page', 1, type=int)
  487.  
  488.     buildings = BuildingsInventory.query.order_by(BuildingsInventory.id).paginate(page, per_page=20, error_out=False)
  489.  
  490.     return render_template('buildings.html', buildings=buildings)
Add Comment
Please, Sign In to add comment