feat(usermanager): add group edit view
This commit is contained in:
parent
851a180815
commit
5c56e2d1de
46
lumi2/templates/usermanager/group_edit.html
Normal file
46
lumi2/templates/usermanager/group_edit.html
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1>Editing group: {{ group.groupname }}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
{{ form.csrf_token }}
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-sm">
|
||||||
|
{{ form.members.label(class="form-label") }}
|
||||||
|
{{ form.members(class="form-control" + (" is-invalid" if form.members.errors else "")) }}
|
||||||
|
{% if form.members.errors %}
|
||||||
|
{% for error in form.members.errors %}
|
||||||
|
<div class="invalid-feedback">{{ error }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
<div id="membersHelp" class="form-text">
|
||||||
|
List of members of this group.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
{{ form.non_members.label(class="form-label") }}
|
||||||
|
{{ form.non_members(class="form-control" + (" is-invalid" if form.non_members.errors else "")) }}
|
||||||
|
{% if form.non_members.errors %}
|
||||||
|
{% for error in form.non_members.errors %}
|
||||||
|
<div class="invalid-feedback">{{ error }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
<div id="non_membersHelp" class="form-text">
|
||||||
|
List of users who are not members of this group.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-sm">
|
||||||
|
<a class="btn btn-secondary"
|
||||||
|
href="#"
|
||||||
|
role="button">Reset</a>
|
||||||
|
{{ form.submit(class_="btn btn-primary") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endblock content %}
|
@ -9,7 +9,7 @@ from flask import (
|
|||||||
from PIL import Image, UnidentifiedImageError
|
from PIL import Image, UnidentifiedImageError
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from flask_wtf.file import FileField, FileAllowed
|
from flask_wtf.file import FileField, FileAllowed
|
||||||
from wtforms import ValidationError, StringField, PasswordField, SubmitField
|
from wtforms import ValidationError, StringField, PasswordField, SubmitField, SelectMultipleField
|
||||||
from wtforms.validators import InputRequired, Email, EqualTo
|
from wtforms.validators import InputRequired, Email, EqualTo
|
||||||
|
|
||||||
import lumi2.ldap as ldap
|
import lumi2.ldap as ldap
|
||||||
@ -300,3 +300,50 @@ def user_delete(username: str):
|
|||||||
username=user.username,
|
username=user.username,
|
||||||
deleted_groups=deleted_groups,
|
deleted_groups=deleted_groups,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class GroupUpdateForm(FlaskForm):
|
||||||
|
members = SelectMultipleField(
|
||||||
|
'Group members',
|
||||||
|
validators=[InputRequired()],
|
||||||
|
)
|
||||||
|
|
||||||
|
non_members = SelectMultipleField(
|
||||||
|
'Other users',
|
||||||
|
)
|
||||||
|
|
||||||
|
submit = SubmitField(
|
||||||
|
'Update',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/groups/update/<string:groupname>")
|
||||||
|
def group_update(groupname: str):
|
||||||
|
"""Detail and Update view for a group.
|
||||||
|
|
||||||
|
Shows a form allowing the modification of user memberships for this group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
conn = ldap.get_connection()
|
||||||
|
except Exception:
|
||||||
|
abort(500)
|
||||||
|
|
||||||
|
try:
|
||||||
|
group = ldap.get_group(conn, groupname)
|
||||||
|
except ldap.EntryNotFoundException:
|
||||||
|
conn.unbind()
|
||||||
|
abort(404)
|
||||||
|
|
||||||
|
form = GroupUpdateForm()
|
||||||
|
form.members.choices = sorted({user.username for user in group.members})
|
||||||
|
form.non_members.choices = sorted(
|
||||||
|
{user.username for user in ldap.get_users(conn)} - set(form.members.choices)
|
||||||
|
)
|
||||||
|
|
||||||
|
conn.unbind()
|
||||||
|
return render_template(
|
||||||
|
'usermanager/group_edit.html',
|
||||||
|
form=form,
|
||||||
|
group=group,
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user