mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-19 09:53:34 -06:00
Closes #8765: Display and enable bulk clearing of user's table preferences
This commit is contained in:
parent
21e3159711
commit
e6072a51f8
@ -8,6 +8,7 @@
|
|||||||
<form method="post" action="" id="preferences-update">
|
<form method="post" action="" id="preferences-update">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
|
{# Built-in preferences #}
|
||||||
{% for group, fields in form.fieldsets %}
|
{% for group, fields in form.fieldsets %}
|
||||||
<div class="field-group my-5">
|
<div class="field-group my-5">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@ -19,6 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{# Plugin preferences #}
|
||||||
{% with plugin_fields=form.plugin_fields %}
|
{% with plugin_fields=form.plugin_fields %}
|
||||||
{% if plugin_fields %}
|
{% if plugin_fields %}
|
||||||
<div class="field-group my-5">
|
<div class="field-group my-5">
|
||||||
@ -32,6 +34,50 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
|
{# Table configurations #}
|
||||||
|
<div class="field-group my-5">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<h5 class="offset-sm-3">Table Configurations</h5>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{% if request.user.config.data.tables %}
|
||||||
|
<label class="col-sm-3 col-form-label text-lg-end">
|
||||||
|
Clear table preferences
|
||||||
|
</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<table class="table table-hover object-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<input type="checkbox" class="toggle form-check-input" title="Toggle All">
|
||||||
|
</th>
|
||||||
|
<th>Table</th>
|
||||||
|
<th>Ordering</th>
|
||||||
|
<th>Columns</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for table, prefs in request.user.config.data.tables.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="pk" value="tables.{{ table }}" class="form-check-input" />
|
||||||
|
</td>
|
||||||
|
<td>{{ table }}</td>
|
||||||
|
<td>{{ prefs.ordering|join:", "|placeholder }}</td>
|
||||||
|
<td>{{ prefs.columns|join:", "|placeholder }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="offset-sm-3">
|
||||||
|
<p class="text-muted">None found</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="text-end my-3">
|
<div class="text-end my-3">
|
||||||
<a class="btn btn-outline-secondary" href="{% url 'user:preferences' %}">Cancel</a>
|
<a class="btn btn-outline-secondary" href="{% url 'user:preferences' %}">Cancel</a>
|
||||||
<button type="submit" name="_update" class="btn btn-primary">Save </button>
|
<button type="submit" name="_update" class="btn btn-primary">Save </button>
|
||||||
|
@ -50,6 +50,11 @@ class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMe
|
|||||||
'data_format',
|
'data_format',
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
|
# List of clearable preferences
|
||||||
|
pk = forms.MultipleChoiceField(
|
||||||
|
choices=[],
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserConfig
|
model = UserConfig
|
||||||
@ -63,12 +68,23 @@ class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMe
|
|||||||
|
|
||||||
super().__init__(*args, instance=instance, **kwargs)
|
super().__init__(*args, instance=instance, **kwargs)
|
||||||
|
|
||||||
|
# Compile clearable preference choices
|
||||||
|
self.fields['pk'].choices = (
|
||||||
|
(f'tables.{table_name}', '') for table_name in instance.data.get('tables', [])
|
||||||
|
)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
|
||||||
# Set UserConfig data
|
# Set UserConfig data
|
||||||
for pref_name, value in self.cleaned_data.items():
|
for pref_name, value in self.cleaned_data.items():
|
||||||
|
if pref_name == 'pk':
|
||||||
|
continue
|
||||||
self.instance.set(pref_name, value, commit=False)
|
self.instance.set(pref_name, value, commit=False)
|
||||||
|
|
||||||
|
# Clear selected preferences
|
||||||
|
for preference in self.cleaned_data['pk']:
|
||||||
|
self.instance.clear(preference)
|
||||||
|
|
||||||
return super().save(*args, **kwargs)
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
Loading…
Reference in New Issue
Block a user