diff --git a/templates/user_manager/manage_peer_group.html b/templates/user_manager/manage_peer_group.html
deleted file mode 100644
index 6cdd3de..0000000
--- a/templates/user_manager/manage_peer_group.html
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "base.html" %}
-
-{% block content %}
-
-
-
-
-
-
-
-
-
-
-
Peers
-
Select which peers can be managed by users with this peer group.
-
-
WireGuard Instances
-
All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.
-
-
-
-
-
-
-
-{% endblock %}
-
-{% block custom_page_scripts %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/user_manager/peer_group_list.html b/templates/user_manager/peer_group_list.html
index 47e250e..fa1eae0 100644
--- a/templates/user_manager/peer_group_list.html
+++ b/templates/user_manager/peer_group_list.html
@@ -7,6 +7,7 @@
Name |
Peers |
Server Instance |
+ Users |
|
@@ -16,12 +17,17 @@
{{ peer_group.name }} |
{% for peer in peer_group.peer.all %}
- {{ peer }}{% if not forloop.last %}, {% endif %}
+ {{ peer }}{% if not forloop.last %}, {% endif %}
{% endfor %}
|
{% for instance in peer_group.server_instance.all %}
- {{ instance }}{% if not forloop.last %}, {% endif %}
+ {{ instance }}{% if not forloop.last %}, {% endif %}
+ {% endfor %}
+ |
+
+ {% for user_acl in peer_group.useracl_set.all %}
+ {{ user_acl.user.username }}{% if not forloop.last %}, {% endif %}
{% endfor %}
|
diff --git a/user_manager/forms.py b/user_manager/forms.py
index 8d4c448..449d0e9 100644
--- a/user_manager/forms.py
+++ b/user_manager/forms.py
@@ -4,6 +4,8 @@ from django.contrib.auth.models import User
from .models import UserAcl
from django.core.exceptions import ValidationError
from wireguard.models import PeerGroup
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Layout, Row, Column, Submit, HTML
class UserAclForm(UserCreationForm):
@@ -56,8 +58,37 @@ class PeerGroupForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user_id = kwargs.pop('user_id', None)
super().__init__(*args, **kwargs)
+ self.helper = FormHelper()
+ self.helper.form_method = 'post'
-
+ if self.instance.pk:
+ delete_html = "Delete"
+ else:
+ delete_html = ''
+
+ self.helper.layout = Layout(
+ Row(
+ Column('name', css_class='form-group col-md-12 mb-0'),
+ css_class='form-row'
+ ),
+ Row(
+ Column('peer', css_class='form-group col-md-12 mb-0'),
+ css_class='form-row'
+ ),
+ Row(
+ Column('server_instance', css_class='form-group col-md-12 mb-0'),
+ css_class='form-row'
+ ),
+ Row(
+ Column(
+ Submit('submit', 'Save', css_class='btn btn-success'),
+ HTML(' Back '),
+ HTML(delete_html),
+ css_class='col-md-12'),
+ css_class='form-row'
+ )
+ )
+
def clean(self):
cleaned_data = super().clean()
name = cleaned_data.get('name')
@@ -68,6 +99,7 @@ class PeerGroupForm(forms.ModelForm):
raise ValidationError("A peer group with that name already exists.")
return cleaned_data
+
def save(self, commit=True):
peer_group = super().save(commit=False)
diff --git a/user_manager/views.py b/user_manager/views.py
index 6e1361d..2fffd43 100644
--- a/user_manager/views.py
+++ b/user_manager/views.py
@@ -30,11 +30,12 @@ def view_peer_group_manage(request):
page_title = 'Edit Peer Group ' + peer_group.name
if request.GET.get('action') == 'delete':
group_name = peer_group.name
- if request.GET.get('confirmation') == group_name:
+ if request.GET.get('confirmation') == 'delete':
peer_group.delete()
messages.success(request, 'Peer Group deleted|The peer group ' + group_name + ' has been deleted.')
return redirect('/user/peer-group/list/')
-
+ else:
+ messages.warning(request, 'Peer Group not deleted|Invalid confirmation.')
return redirect('/user/peer-group/list/')
else:
form = PeerGroupForm(user_id=request.user.id)
@@ -50,8 +51,19 @@ def view_peer_group_manage(request):
peer_group = form.save()
form.save_m2m()
return redirect('/user/peer-group/list/')
- context = {'page_title': page_title, 'form': form, 'peer_group': peer_group}
- return render(request, 'user_manager/manage_peer_group.html', context)
+
+ form_description = {
+ 'size': '',
+ 'content': '''
+ Peers
+ Select which peers can be managed by users with this peer group.
+
+ WireGuard Instances
+ All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.
+ '''
+ }
+ context = {'page_title': page_title, 'form': form, 'peer_group': peer_group, 'instance': peer_group, 'form_description': form_description}
+ return render(request, 'generic_form.html', context)
@login_required
diff --git a/wireguard/models.py b/wireguard/models.py
index c83cd51..37d8493 100644
--- a/wireguard/models.py
+++ b/wireguard/models.py
@@ -131,3 +131,6 @@ class PeerGroup(models.Model):
updated = models.DateTimeField(auto_now=True)
uuid = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
+ def __str__(self):
+ return self.name
+
diff --git a/wireguard_webadmin/urls.py b/wireguard_webadmin/urls.py
index 4b3662c..979e6c2 100644
--- a/wireguard_webadmin/urls.py
+++ b/wireguard_webadmin/urls.py
@@ -28,7 +28,7 @@ from dns.views import view_static_host_list, view_manage_static_host, view_manag
urlpatterns = [
- # path('admin/', admin.site.urls),
+ path('admin/', admin.site.urls),
path('', view_welcome, name='welcome'),
path('status/', view_wireguard_status, name='wireguard_status'),
path('dns/', view_static_host_list, name='static_host_list'),
|