User toggle for webconsole and enhanced filter

This commit is contained in:
Eduardo Silva
2025-01-21 13:22:18 -03:00
parent 64cd174639
commit 10e456b202
8 changed files with 98 additions and 19 deletions

View File

@@ -12,6 +12,8 @@ class UserAclForm(forms.Form):
username = forms.CharField(max_length=150)
password1 = forms.CharField(widget=forms.PasswordInput, required=False, label="Password")
password2 = forms.CharField(widget=forms.PasswordInput, required=False, label="Password confirmation")
enable_console = forms.BooleanField(required=False, label="Enable Console")
enable_enhanced_filter = forms.BooleanField(required=False, label="Enable Enhanced Filter")
user_level = forms.ChoiceField(choices=UserAcl.user_level.field.choices, required=True, label="User Level")
peer_groups = forms.ModelMultipleChoiceField(
queryset=PeerGroup.objects.all(),
@@ -27,9 +29,16 @@ class UserAclForm(forms.Form):
self.fields['username'].initial = self.instance.username
self.fields['username'].widget.attrs['readonly'] = True
self.fields['peer_groups'].initial = self.instance.useracl.peer_groups.all()
self.fields['enable_console'].initial = self.instance.useracl.enable_console
self.fields['enable_enhanced_filter'].initial = self.instance.useracl.enable_enhanced_filter
else:
self.fields['password1'].required = True
self.fields['password2'].required = True
self.fields['enable_console'].initial = True
self.fields['enable_enhanced_filter'].initial = False
self.fields['enable_console'].label = "Console"
self.fields['enable_enhanced_filter'].label = "Enhanced Filter"
self.helper = FormHelper()
self.helper.form_method = 'post'
@@ -60,6 +69,14 @@ class UserAclForm(forms.Form):
Column('peer_groups', css_class='form-group col-md-12 mb-0'),
css_class='form-row'
),
Row(
Column('enable_console', css_class='form-group col-md-12 mb-0'),
css_class='form-row'
),
Row(
Column('enable_enhanced_filter', css_class='form-group col-md-12 mb-0'),
css_class='form-row'
),
Row(
Column(
Submit('submit', 'Save', css_class='btn btn-success'),
@@ -100,6 +117,8 @@ class UserAclForm(forms.Form):
password = self.cleaned_data.get('password1')
user_level = self.cleaned_data['user_level']
peer_groups = self.cleaned_data.get('peer_groups', [])
enable_console = self.cleaned_data.get('enable_console', False)
enable_enhanced_filter = self.cleaned_data.get('enable_enhanced_filter', False)
if self.instance:
user = self.instance
@@ -115,7 +134,9 @@ class UserAclForm(forms.Form):
user_acl, created = UserAcl.objects.update_or_create(
user=user,
defaults={
'user_level': user_level
'user_level': user_level,
'enable_console': enable_console,
'enable_enhanced_filter': enable_enhanced_filter
}
)

View File

@@ -0,0 +1,23 @@
# Generated by Django 5.1.5 on 2025-01-21 15:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user_manager', '0004_useracl_peer_groups'),
]
operations = [
migrations.AddField(
model_name='useracl',
name='enable_console',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='useracl',
name='enable_enhanced_filter',
field=models.BooleanField(default=False),
),
]

View File

@@ -14,6 +14,8 @@ class UserAcl(models.Model):
(50, 'Administrator'),
))
peer_groups = models.ManyToManyField(PeerGroup, blank=True)
enable_console = models.BooleanField(default=True)
enable_enhanced_filter = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

View File

@@ -156,6 +156,12 @@ def view_manage_user(request):
<h4>Peer Groups</h4>
<p>Select which peer groups this user can access. If no peer groups are selected, the user will have access to all peers.</p>
<h4>Console</h4>
<p>Enable or disable web console access for this user.</p>
<h4>Enhanced Filter</h4>
<p>This option filters the API status response to include only peers that the user has access to. Depending on the size of your environment, enabling this option may impact performance. To mitigate this, consider increasing the "Web Refresh Interval" to reduce the number of requests.</p>
'''
}