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"}), }