112 lines
3.0 KiB
Python
112 lines
3.0 KiB
Python
from django.urls import reverse_lazy
|
|
from django.shortcuts import get_object_or_404
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.generic.edit import (
|
|
CreateView,
|
|
UpdateView,
|
|
)
|
|
from dashboard.mixins import DashboardView, DetailsMixin
|
|
from device.models import Device, PhysicalProperties
|
|
|
|
|
|
class NewDeviceView(DashboardView, CreateView):
|
|
template_name = "new_device.html"
|
|
title = _("New Device")
|
|
breadcrumb = "Device / New Device"
|
|
success_url = reverse_lazy('dashboard:unassigned_devices')
|
|
model = Device
|
|
fields = (
|
|
'type',
|
|
"model",
|
|
"manufacturer",
|
|
"serial_number",
|
|
"part_number",
|
|
"brand",
|
|
"generation",
|
|
"version",
|
|
"production_date",
|
|
"variant",
|
|
"family",
|
|
)
|
|
|
|
def form_valid(self, form):
|
|
form.instance.owner = self.request.user
|
|
response = super().form_valid(form)
|
|
PhysicalProperties.objects.create(device=form.instance)
|
|
return response
|
|
|
|
|
|
class EditDeviceView(DashboardView, UpdateView):
|
|
template_name = "new_device.html"
|
|
title = _("Update Device")
|
|
breadcrumb = "Device / Update Device"
|
|
success_url = reverse_lazy('dashboard:unassigned_devices')
|
|
model = Device
|
|
fields = (
|
|
'type',
|
|
"model",
|
|
"manufacturer",
|
|
"serial_number",
|
|
"part_number",
|
|
"brand",
|
|
"generation",
|
|
"version",
|
|
"production_date",
|
|
"variant",
|
|
"family",
|
|
)
|
|
|
|
def get_form_kwargs(self):
|
|
pk = self.kwargs.get('pk')
|
|
self.object = get_object_or_404(self.model, pk=pk)
|
|
self.success_url = reverse_lazy('device:details', args=[pk])
|
|
kwargs = super().get_form_kwargs()
|
|
return kwargs
|
|
|
|
|
|
class DetailsView(DetailsMixin):
|
|
template_name = "details.html"
|
|
title = _("Device")
|
|
breadcrumb = "Device / Details"
|
|
model = Device
|
|
|
|
|
|
class PhysicalView(DashboardView, UpdateView):
|
|
template_name = "physical_properties.html"
|
|
title = _("Physical Properties")
|
|
breadcrumb = "Device / Physical properties"
|
|
success_url = reverse_lazy('dashboard:unassigned_devices')
|
|
model = PhysicalProperties
|
|
fields = (
|
|
"weight",
|
|
"width",
|
|
"height",
|
|
"depth",
|
|
"color",
|
|
"image",
|
|
)
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context.update({
|
|
'device': self.device,
|
|
})
|
|
return context
|
|
|
|
def get_form_kwargs(self):
|
|
pk = self.kwargs.get('pk')
|
|
self.device = get_object_or_404(Device, pk=pk)
|
|
try:
|
|
self.object = self.device.physicalproperties
|
|
except Exception:
|
|
self.object = PhysicalProperties.objects.create(device=self.device)
|
|
kwargs = super().get_form_kwargs()
|
|
return kwargs
|
|
|
|
def form_valid(self, form):
|
|
self.success_url = reverse_lazy('device:details', args=[self.device.id])
|
|
response = super().form_valid(form)
|
|
return response
|
|
|
|
|