mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
Clean up dashboard views
This commit is contained in:
parent
0f566b7975
commit
3370bf7eb3
@ -35,4 +35,4 @@ class DashboardWidgetAddForm(DashboardWidgetForm):
|
||||
}
|
||||
)
|
||||
)
|
||||
field_order = ('widget_class', 'title')
|
||||
field_order = ('widget_class', 'title', 'color')
|
||||
|
@ -10,7 +10,7 @@ from django_rq.queues import get_connection
|
||||
from rq import Worker
|
||||
|
||||
from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm
|
||||
from netbox.registry import registry
|
||||
from extras.dashboard.utils import get_widget_class
|
||||
from netbox.views import generic
|
||||
from utilities.forms import ConfirmationForm, get_field_value
|
||||
from utilities.htmx import is_htmx
|
||||
@ -676,17 +676,17 @@ class DashboardWidgetAddView(LoginRequiredMixin, View):
|
||||
template_name = 'extras/dashboard/widget_add.html'
|
||||
|
||||
def get(self, request):
|
||||
if not is_htmx(request):
|
||||
return redirect('home')
|
||||
|
||||
initial = request.GET or {
|
||||
'widget_class': 'extras.NoteWidget',
|
||||
}
|
||||
widget_form = DashboardWidgetAddForm(initial=initial)
|
||||
widget_name = get_field_value(widget_form, 'widget_class')
|
||||
widget_class = registry['widgets'][widget_name]
|
||||
widget_class = get_widget_class(widget_name)
|
||||
config_form = widget_class.ConfigForm(prefix='config')
|
||||
|
||||
if not is_htmx(request):
|
||||
return redirect('home')
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'widget_class': widget_class,
|
||||
'widget_form': widget_form,
|
||||
@ -695,23 +695,25 @@ class DashboardWidgetAddView(LoginRequiredMixin, View):
|
||||
|
||||
def post(self, request):
|
||||
widget_form = DashboardWidgetAddForm(request.POST)
|
||||
config_form = None
|
||||
widget_class = None
|
||||
|
||||
if widget_form.is_valid():
|
||||
widget_class = registry['widgets'][widget_form.cleaned_data['widget_class']]
|
||||
widget_class = get_widget_class(widget_form.cleaned_data['widget_class'])
|
||||
config_form = widget_class.ConfigForm(request.POST, prefix='config')
|
||||
|
||||
if config_form.is_valid():
|
||||
data = widget_form.cleaned_data
|
||||
class_name = data.pop('widget_class')
|
||||
data.pop('widget_class')
|
||||
data['config'] = config_form.cleaned_data
|
||||
widget = widget_class(**data)
|
||||
data['class'] = class_name
|
||||
request.user.dashboard.add_widget(widget)
|
||||
request.user.dashboard.save()
|
||||
messages.success(request, f'Added widget {widget.id}')
|
||||
|
||||
response = HttpResponse()
|
||||
response['HX-Redirect'] = reverse('home')
|
||||
return response
|
||||
return HttpResponse(headers={
|
||||
'HX-Redirect': reverse('home'),
|
||||
})
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'widget_class': widget_class,
|
||||
@ -724,13 +726,13 @@ class DashboardWidgetConfigView(LoginRequiredMixin, View):
|
||||
template_name = 'extras/dashboard/widget_config.html'
|
||||
|
||||
def get(self, request, id):
|
||||
if not is_htmx(request):
|
||||
return redirect('home')
|
||||
|
||||
widget = request.user.dashboard.get_widget(id)
|
||||
widget_form = DashboardWidgetForm(initial=widget.form_data)
|
||||
config_form = widget.ConfigForm(initial=widget.form_data.get('config'), prefix='config')
|
||||
|
||||
if not is_htmx(request):
|
||||
return redirect('home')
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'widget_form': widget_form,
|
||||
'config_form': config_form,
|
||||
@ -745,14 +747,13 @@ class DashboardWidgetConfigView(LoginRequiredMixin, View):
|
||||
if widget_form.is_valid() and config_form.is_valid():
|
||||
data = widget_form.cleaned_data
|
||||
data['config'] = config_form.cleaned_data
|
||||
print(request.user.dashboard.config)
|
||||
print(data)
|
||||
request.user.dashboard.config[str(id)].update(data)
|
||||
request.user.dashboard.save()
|
||||
messages.success(request, f'Updated widget {widget.id}')
|
||||
|
||||
response = HttpResponse()
|
||||
response['HX-Redirect'] = reverse('home')
|
||||
return response
|
||||
return HttpResponse(headers={
|
||||
'HX-Redirect': reverse('home'),
|
||||
})
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'widget_form': widget_form,
|
||||
@ -765,20 +766,17 @@ class DashboardWidgetDeleteView(LoginRequiredMixin, View):
|
||||
template_name = 'generic/object_delete.html'
|
||||
|
||||
def get(self, request, id):
|
||||
if not is_htmx(request):
|
||||
return redirect('home')
|
||||
|
||||
widget = request.user.dashboard.get_widget(id)
|
||||
form = ConfirmationForm(initial=request.GET)
|
||||
|
||||
# If this is an HTMX request, return only the rendered deletion form as modal content
|
||||
if is_htmx(request):
|
||||
return render(request, 'htmx/delete_form.html', {
|
||||
'object_type': widget.__class__.__name__,
|
||||
'object': widget,
|
||||
'form': form,
|
||||
'form_url': reverse('extras:dashboardwidget_delete', kwargs={'id': id})
|
||||
})
|
||||
|
||||
return render(request, self.template_name, {
|
||||
return render(request, 'htmx/delete_form.html', {
|
||||
'object_type': widget.__class__.__name__,
|
||||
'object': widget,
|
||||
'form': form,
|
||||
'form_url': reverse('extras:dashboardwidget_delete', kwargs={'id': id})
|
||||
})
|
||||
|
||||
def post(self, request, id):
|
||||
|
Loading…
Reference in New Issue
Block a user