From 309e6a85593b1776a42ad8d2378948528329bd01 Mon Sep 17 00:00:00 2001 From: Michael Simacek Date: Oct 10 2014 14:58:00 +0000 Subject: Basic group editing --- diff --git a/koschei/views.py b/koschei/views.py index 17ad1e7..eca4c5e 100644 --- a/koschei/views.py +++ b/koschei/views.py @@ -183,6 +183,33 @@ def group_detail(name=None, id=None): return package_view("group-detail.html", alter_query=alter_query, group=group) +@app.route('/groups//edit', methods=['GET', 'POST']) +@app.route('/groups//edit', methods=['GET', 'POST']) +@tab('Group', slave=True) +@auth.login_required() +def edit_group(name=None, id=None): + filt = {'name': name} if name else {'id': id} + group = db_session.query(PackageGroup)\ + .options(joinedload(PackageGroup.packages))\ + .filter_by(**filt).first_or_404() + if request.method == 'POST': + # TODO validation + group.name = request.form['name'] + db_session.query(PackageGroupRelation).filter_by(group_id=group.id).delete() + pkg_names = [name.strip() for name in request.form['packages'].split()] + packages = db_session.query(Package).filter(Package.name.in_(pkg_names)).all() + if len(pkg_names) != len(packages): + flash("Package doesn't exist") + return redirect(url_for('edit_group', name=group.name)) + # TODO bulk insert + for pkg in packages: + rel = PackageGroupRelation(group_id=group.id, package_id=pkg.id) + db_session.add(rel) + db_session.commit() + flash("Group updated") + return redirect(url_for('group_detail', name=group.name)) + return render_template("edit-group.html", group=group) + @app.route('/add_packages', methods=['GET', 'POST']) @tab('Add packages') @auth.login_required() diff --git a/templates/edit-group.html b/templates/edit-group.html new file mode 100644 index 0000000..68ffafb --- /dev/null +++ b/templates/edit-group.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block content %} + +
+ + +
Packages in group:
+
+ {# Has to be on one line to not add whitespace #} + +
+
+
+ +{% endblock %}