293 lines
10 KiB
Python
293 lines
10 KiB
Python
from django import forms
|
|
from django.urls import reverse_lazy
|
|
from .models import (
|
|
Computer,
|
|
Monitor,
|
|
Peripheral,
|
|
MaintenanceRecord,
|
|
HandoverProtocol,
|
|
DecommissionRecord,
|
|
DigitalCertificate,
|
|
)
|
|
|
|
|
|
class ComputerForm(forms.ModelForm):
|
|
entry_date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = Computer
|
|
fields = [
|
|
"equipment_code",
|
|
"status",
|
|
"assigned_to",
|
|
"entry_date",
|
|
"oem_name",
|
|
"motherboard",
|
|
"cpu",
|
|
"ram",
|
|
"storage",
|
|
"optical_drive",
|
|
"gpu",
|
|
"mac_address",
|
|
"os_license",
|
|
"additional_licenses",
|
|
"observations",
|
|
]
|
|
widgets = {
|
|
"equipment_code": forms.TextInput(attrs={"class": "form-control"}),
|
|
"status": forms.Select(attrs={"class": "form-select"}),
|
|
"assigned_to": forms.Select(attrs={"class": "form-select"}),
|
|
"oem_name": forms.TextInput(attrs={"class": "form-control"}),
|
|
"motherboard": forms.TextInput(attrs={"class": "form-control"}),
|
|
"cpu": forms.TextInput(attrs={"class": "form-control"}),
|
|
"ram": forms.TextInput(attrs={"class": "form-control"}),
|
|
"storage": forms.TextInput(attrs={"class": "form-control"}),
|
|
"optical_drive": forms.TextInput(attrs={"class": "form-control"}),
|
|
"gpu": forms.TextInput(attrs={"class": "form-control"}),
|
|
"mac_address": forms.TextInput(attrs={"class": "form-control"}),
|
|
"os_license": forms.TextInput(attrs={"class": "form-control"}),
|
|
"additional_licenses": forms.Textarea(
|
|
attrs={"class": "form-control", "rows": 2}
|
|
),
|
|
"observations": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if self.instance and self.instance.pk:
|
|
self.fields["assigned_to"].disabled = True
|
|
self.fields["assigned_to"].help_text = (
|
|
"Transferul se face doar generând un Proces Verbal nou."
|
|
)
|
|
|
|
|
|
class MonitorForm(forms.ModelForm):
|
|
entry_date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = Monitor
|
|
fields = [
|
|
"equipment_code",
|
|
"status",
|
|
"assigned_to",
|
|
"entry_date",
|
|
"name",
|
|
"serial_number",
|
|
"screen_diagonal",
|
|
"observations",
|
|
]
|
|
widgets = {
|
|
"equipment_code": forms.TextInput(attrs={"class": "form-control"}),
|
|
"status": forms.Select(attrs={"class": "form-select"}),
|
|
"assigned_to": forms.Select(attrs={"class": "form-select"}),
|
|
"name": forms.TextInput(attrs={"class": "form-control"}),
|
|
"serial_number": forms.TextInput(attrs={"class": "form-control"}),
|
|
"screen_diagonal": forms.TextInput(attrs={"class": "form-control"}),
|
|
"observations": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if self.instance and self.instance.pk:
|
|
self.fields["assigned_to"].disabled = True
|
|
self.fields["assigned_to"].help_text = (
|
|
"Transferul se face doar generând un Proces Verbal nou."
|
|
)
|
|
|
|
|
|
class PeripheralForm(forms.ModelForm):
|
|
entry_date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = Peripheral
|
|
fields = [
|
|
"equipment_code",
|
|
"status",
|
|
"assigned_to",
|
|
"entry_date",
|
|
"peripheral_type",
|
|
"name",
|
|
"serial_number",
|
|
"observations",
|
|
]
|
|
widgets = {
|
|
"equipment_code": forms.TextInput(attrs={"class": "form-control"}),
|
|
"status": forms.Select(attrs={"class": "form-select"}),
|
|
"assigned_to": forms.Select(attrs={"class": "form-select"}),
|
|
"peripheral_type": forms.Select(attrs={"class": "form-select"}),
|
|
"name": forms.TextInput(attrs={"class": "form-control"}),
|
|
"serial_number": forms.TextInput(attrs={"class": "form-control"}),
|
|
"observations": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if self.instance and self.instance.pk:
|
|
self.fields["assigned_to"].disabled = True
|
|
self.fields["assigned_to"].help_text = (
|
|
"Transferul se face doar generând un Proces Verbal nou."
|
|
)
|
|
|
|
|
|
class MaintenanceRecordForm(forms.ModelForm):
|
|
date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = MaintenanceRecord
|
|
fields = ["date", "operation_type", "description", "performed_by"]
|
|
widgets = {
|
|
"operation_type": forms.TextInput(
|
|
attrs={
|
|
"class": "form-control",
|
|
"placeholder": "ex: Curățare praf, Upgrade RAM...",
|
|
}
|
|
),
|
|
"description": forms.Textarea(attrs={"class": "form-control", "rows": 3}),
|
|
"performed_by": forms.TextInput(attrs={"class": "form-control"}),
|
|
}
|
|
|
|
|
|
class HandoverProtocolForm(forms.ModelForm):
|
|
date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = HandoverProtocol
|
|
fields = [
|
|
"date",
|
|
"previous_holder",
|
|
"new_holder",
|
|
"computers",
|
|
"monitors",
|
|
"peripherals",
|
|
"notes",
|
|
"scanned_document",
|
|
]
|
|
widgets = {
|
|
"previous_holder": forms.Select(
|
|
attrs={
|
|
"class": "form-select",
|
|
"hx-get": reverse_lazy("equipment:load_user_equipment"),
|
|
"hx-target": "#equipment-lists",
|
|
"hx-trigger": "change",
|
|
}
|
|
),
|
|
"new_holder": forms.Select(attrs={"class": "form-select"}),
|
|
"computers": forms.SelectMultiple(
|
|
attrs={"class": "form-select", "size": 5}
|
|
),
|
|
"monitors": forms.SelectMultiple(attrs={"class": "form-select", "size": 5}),
|
|
"peripherals": forms.SelectMultiple(
|
|
attrs={"class": "form-select", "size": 5}
|
|
),
|
|
"notes": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
"scanned_document": forms.FileInput(attrs={"class": "form-control"}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if not self.is_bound and not self.instance.pk:
|
|
self.fields["computers"].queryset = Computer.objects.none()
|
|
self.fields["monitors"].queryset = Monitor.objects.none()
|
|
self.fields["peripherals"].queryset = Peripheral.objects.none()
|
|
|
|
|
|
class DecommissionRecordForm(forms.ModelForm):
|
|
date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = DecommissionRecord
|
|
fields = [
|
|
"document_number",
|
|
"date",
|
|
"committee_members",
|
|
"reason",
|
|
"computers",
|
|
"monitors",
|
|
"peripherals",
|
|
]
|
|
widgets = {
|
|
"document_number": forms.TextInput(attrs={"class": "form-control"}),
|
|
"committee_members": forms.Textarea(
|
|
attrs={"class": "form-control", "rows": 2}
|
|
),
|
|
"reason": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
"computers": forms.SelectMultiple(
|
|
attrs={"class": "form-select", "size": 5}
|
|
),
|
|
"monitors": forms.SelectMultiple(attrs={"class": "form-select", "size": 5}),
|
|
"peripherals": forms.SelectMultiple(
|
|
attrs={"class": "form-select", "size": 5}
|
|
),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if not self.is_bound and not self.instance.pk:
|
|
self.fields["computers"].queryset = Computer.objects.filter(status="activ")
|
|
self.fields["monitors"].queryset = Monitor.objects.filter(status="activ")
|
|
self.fields["peripherals"].queryset = Peripheral.objects.filter(
|
|
status="activ"
|
|
)
|
|
|
|
|
|
class DigitalCertificateForm(forms.ModelForm):
|
|
issue_date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
expiration_date = forms.DateField(
|
|
input_formats=["%d.%m.%Y", "%Y-%m-%d"],
|
|
widget=forms.TextInput(
|
|
attrs={"class": "form-control flatpickr-date", "placeholder": "ZZ.LL.AAAA"}
|
|
),
|
|
)
|
|
|
|
class Meta:
|
|
model = DigitalCertificate
|
|
fields = [
|
|
"certificate_type",
|
|
"assigned_to",
|
|
"issue_date",
|
|
"expiration_date",
|
|
"observations",
|
|
"is_canceled",
|
|
]
|
|
widgets = {
|
|
"certificate_type": forms.Select(attrs={"class": "form-select"}),
|
|
"assigned_to": forms.Select(attrs={"class": "form-select"}),
|
|
"observations": forms.Textarea(attrs={"class": "form-control", "rows": 2}),
|
|
"is_canceled": forms.CheckboxInput(attrs={"class": "form-check-input"}),
|
|
}
|