Fix device issues and document current LAN deployment
This commit is contained in:
@@ -5,7 +5,7 @@ from django.contrib.auth.models import User
|
||||
from django.contrib.auth.password_validation import validate_password
|
||||
|
||||
from .models import ChoiceValue, Device, Employee, FieldDefinition, FieldOption, UserProfile
|
||||
from .device_types import HARDWARE_FIELDS, applicable_fields
|
||||
from .device_types import HARDWARE_FIELDS, TRISTATE_FIELDS, applicable_fields
|
||||
|
||||
|
||||
GERMAN_DATE_INPUT_FORMATS = ["%d.%m.%Y", "%Y-%m-%d"]
|
||||
@@ -45,7 +45,7 @@ class QuickAddForm(forms.Form):
|
||||
selected_type = self.fields["device_type"].queryset.filter(pk=self.data["device_type"]).first()
|
||||
for name in sorted(HARDWARE_FIELDS):
|
||||
field = deepcopy(DeviceForm.base_fields[name])
|
||||
if name in {"battery", "wifi", "lan", "duplex", "color_printing"}:
|
||||
if name in TRISTATE_FIELDS:
|
||||
field.required = False
|
||||
field.initial = Device.TriState.UNKNOWN
|
||||
if self.is_bound and name not in applicable_fields(selected_type):
|
||||
@@ -60,7 +60,7 @@ class QuickAddForm(forms.Form):
|
||||
values = {}
|
||||
for name in applicable_fields(self.cleaned_data["device_type"]):
|
||||
value = self.cleaned_data[name]
|
||||
if name in {"battery", "wifi", "lan", "duplex", "color_printing"} and not value:
|
||||
if name in TRISTATE_FIELDS and not value:
|
||||
value = Device.TriState.UNKNOWN
|
||||
values[name] = value
|
||||
return values
|
||||
@@ -88,6 +88,13 @@ class QuickAddForm(forms.Form):
|
||||
|
||||
|
||||
class DeviceForm(forms.ModelForm):
|
||||
camera = forms.ChoiceField(label="Kamera", choices=Device.TriState.choices, required=False)
|
||||
sound = forms.ChoiceField(label="Sound", choices=Device.TriState.choices, required=False)
|
||||
hdmi = forms.ChoiceField(label="HDMI", choices=Device.TriState.choices, required=False)
|
||||
vga = forms.ChoiceField(label="VGA", choices=Device.TriState.choices, required=False)
|
||||
dvi = forms.ChoiceField(label="DVI", choices=Device.TriState.choices, required=False)
|
||||
displayport = forms.ChoiceField(label="DP", choices=Device.TriState.choices, required=False)
|
||||
aspect_ratio = forms.CharField(label="Seitenverhältnis", max_length=20, required=False, help_text="z. B. 16:9, 4:3 oder 21:9")
|
||||
battery = forms.ChoiceField(label="Akku", choices=Device.TriState.choices, required=False)
|
||||
wifi = forms.ChoiceField(label="WLAN", choices=Device.TriState.choices, required=False)
|
||||
lan = forms.ChoiceField(label="LAN", choices=Device.TriState.choices, required=False)
|
||||
@@ -162,7 +169,7 @@ class DeviceForm(forms.ModelForm):
|
||||
device = super().save(commit=False)
|
||||
for name in applicable_fields(device.device_type):
|
||||
value = self.cleaned_data[name]
|
||||
if name in {"battery", "wifi", "lan", "duplex", "color_printing"} and not value:
|
||||
if name in TRISTATE_FIELDS and not value:
|
||||
value = Device.TriState.UNKNOWN
|
||||
setattr(device, name, value)
|
||||
if commit:
|
||||
@@ -179,11 +186,18 @@ class InspectionForm(forms.Form):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.device = device
|
||||
self.initial.setdefault("model", device.model)
|
||||
for name in ("cpu", "ram_gb", "ssd_gb", "hdd_gb", "display_inches", "battery", "wifi", "lan", "hwid", "ports", "resolution", "print_technology", "duplex", "color_printing"):
|
||||
for name in ("cpu", "ram_gb", "ssd_gb", "hdd_gb", "display_inches", "battery", "wifi", "lan", "hwid", "ports", "resolution", "print_technology", "duplex", "color_printing", "aspect_ratio", "camera", "sound", "hdmi", "vga", "dvi", "displayport"):
|
||||
if name in applicable_fields(device.device_type):
|
||||
self.fields[name] = deepcopy(DeviceForm.base_fields[name])
|
||||
self.initial.setdefault(name, getattr(device, name))
|
||||
|
||||
def clean(self):
|
||||
cleaned = super().clean()
|
||||
for name in TRISTATE_FIELDS & self.fields.keys():
|
||||
if not cleaned.get(name):
|
||||
cleaned[name] = Device.TriState.UNKNOWN
|
||||
return cleaned
|
||||
|
||||
@property
|
||||
def specification_fields(self):
|
||||
return [self[name] for name in self.fields if name != "defects"]
|
||||
|
||||
Reference in New Issue
Block a user