aboutsummaryrefslogtreecommitdiff
path: root/app/manage/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/manage/__init__.py')
-rw-r--r--app/manage/__init__.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/app/manage/__init__.py b/app/manage/__init__.py
new file mode 100644
index 0000000..c69376f
--- /dev/null
+++ b/app/manage/__init__.py
@@ -0,0 +1,50 @@
+from flask import Blueprint, render_template, request, flash, redirect, url_for
+from flask_login import login_required, current_user
+import ulid
+
+from app import db
+from app.database import Network
+
+from .forms import NewNetworkForm
+
+bp = Blueprint('manage', __name__, url_prefix="/manage")
+
+@bp.route("/networks", methods=["GET", "POST"])
+@login_required
+def list_networks():
+ nets = current_user.networks
+
+ form = NewNetworkForm(request.form)
+
+ if request.method == "POST" and form.validate_on_submit():
+ subnet = request.form.get('subnet')
+ description = request.form.get('description')
+
+ n = Network(
+ id=str(ulid.ulid()),
+ subnet=subnet,
+ description=description,
+ manager_id=str(current_user.id)
+ )
+ db.session.add(n)
+ db.session.commit()
+
+ flash("Network added")
+
+ return render_template("network_list.html", nets=nets, form=form)
+
+@bp.route("/networks/<string:id>/delete")
+@login_required
+def del_net(id):
+ n = Network.query.filter_by(id=id).first()
+
+ if n.manager_id != current_user.id:
+ flash("You aren't a manager of this network.")
+ return redirect(url_for("manage.list_networks"))
+
+ db.session.delete(n)
+ db.session.commit()
+
+ flash("Network deleted")
+
+ return redirect(url_for("manage.list_networks"))