Skip to content

Commit

Permalink
#9416: Add view to reset user's dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Mar 30, 2023
1 parent 6e6e8fa commit 90527b7
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 14 deletions.
1 change: 1 addition & 0 deletions netbox/extras/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
path('changelog/<int:pk>/', include(get_model_urls('extras', 'objectchange'))),

# User dashboard
path('dashboard/reset/', views.DashboardResetView.as_view(), name='dashboard_reset'),
path('dashboard/widgets/add/', views.DashboardWidgetAddView.as_view(), name='dashboardwidget_add'),
path('dashboard/widgets/<uuid:id>/configure/', views.DashboardWidgetConfigView.as_view(), name='dashboardwidget_config'),
path('dashboard/widgets/<uuid:id>/delete/', views.DashboardWidgetDeleteView.as_view(), name='dashboardwidget_delete'),
Expand Down
30 changes: 29 additions & 1 deletion netbox/extras/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.http import HttpResponseBadRequest, HttpResponseForbidden, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.translation import gettext as _
from django.views.generic import View

from core.choices import JobStatusChoices, ManagedFileRootPathChoices
Expand Down Expand Up @@ -665,9 +666,36 @@ class JournalEntryBulkDeleteView(generic.BulkDeleteView):


#
# Dashboard widgets
# Dashboard & widgets
#

class DashboardResetView(LoginRequiredMixin, View):
template_name = 'extras/dashboard/reset.html'

def get(self, request):
get_object_or_404(Dashboard.objects.all(), user=request.user)
form = ConfirmationForm()

return render(request, self.template_name, {
'form': form,
'return_url': reverse('home'),
})

def post(self, request):
dashboard = get_object_or_404(Dashboard.objects.all(), user=request.user)
form = ConfirmationForm(request.POST)

if form.is_valid():
dashboard.delete()
messages.success(request, _("Your dashboard has been reset."))
return redirect(reverse('home'))

return render(request, self.template_name, {
'form': form,
'return_url': reverse('home'),
})


class DashboardWidgetAddView(LoginRequiredMixin, View):
template_name = 'extras/dashboard/widget_add.html'

Expand Down
8 changes: 8 additions & 0 deletions netbox/templates/extras/dashboard/reset.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{% extends 'generic/confirmation_form.html' %}

{% block title %}Reset Dashboard?{% endblock %}

{% block message %}
<p>This will remove <strong>all</strong> configured widgets and restore the default dashboard configuration.</p>
<p>This change affects on <i>your</i> dashboard, and will not impact other users.</p>
{% endblock %}
33 changes: 20 additions & 13 deletions netbox/templates/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,26 @@ <h6 class="alert-heading">
{% include 'extras/dashboard/widget.html' %}
{% endfor %}
</div>
<div class="text-end px-2">
<a href="#"
hx-get="{% url 'extras:dashboardwidget_add' %}"
hx-target="#htmx-modal-content"
data-bs-toggle="modal"
data-bs-target="#htmx-modal"
class="btn btn-success btn-sm"
>
<i class="mdi mdi-plus"></i> Add Widget
</a>
<button id="save_dashboard" class="btn btn-primary btn-sm" data-url="{% url 'extras-api:dashboard' %}">
<i class="mdi mdi-content-save-outline"></i> Save Layout
</button>
<div class="d-flex px-3">
<div class="flex-grow-1">
<a href="#"
hx-get="{% url 'extras:dashboardwidget_add' %}"
hx-target="#htmx-modal-content"
data-bs-toggle="modal"
data-bs-target="#htmx-modal"
class="btn btn-success btn-sm"
>
<i class="mdi mdi-plus"></i> Add Widget
</a>
</div>
<div>
<button id="save_dashboard" class="btn btn-primary btn-sm" data-url="{% url 'extras-api:dashboard' %}">
<i class="mdi mdi-content-save-outline"></i> Save Layout
</button>
<a href="{% url 'extras:dashboard_reset' %}" class="btn btn-danger btn-sm">
<i class="mdi mdi-backspace"></i> Reset Dashboard
</a>
</div>
</div>
{% endblock content-wrapper %}

Expand Down

0 comments on commit 90527b7

Please sign in to comment.