143 lines
6.7 KiB
Python

from django import forms
from .models import InventarioAdministrativo, InventarioTactico, Directores, Subjefes, Unidades, AsignacionAdministrativa, AsignacionTactica
class InventarioAdministrativoForm(forms.ModelForm):
class Meta:
model = InventarioAdministrativo
fields = ['placa_militar', 'clase', 'tipo', 'marca', 'modelo', 'color', 'placa_mtc', 'ano', 'serial_carroceria']
widgets = {
'placa_militar': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'clase': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'tipo': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'marca': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'modelo': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'color': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'placa_mtc': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'ano': forms.NumberInput(attrs={'class': 'form-control'}),
'serial_carroceria': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
}
def clean(self):
cleaned_data = super().clean()
# Convertir todos los campos de texto a mayúsculas
for field in ['placa_militar', 'clase', 'tipo', 'marca', 'modelo', 'color', 'placa_mtc', 'serial_carroceria']:
if cleaned_data.get(field):
cleaned_data[field] = cleaned_data[field].upper()
return cleaned_data
def save(self, commit=True):
instance = super().save(commit=False)
instance.tipo_vehiculo = "ADMINISTRATIVO" # Predefinido en mayúsculas
if commit:
instance.save()
return instance
class InventarioTacticoForm(forms.ModelForm):
class Meta:
model = InventarioTactico
fields = ['placa_militar', 'tipo', 'modelo', 'marca', 'clase', 'color', 'placa_mtc', 'ano', 'serial_chasis', 'serial_motor']
widgets = {
'placa_militar': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'tipo': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'modelo': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'marca': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'clase': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'color': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'placa_mtc': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'ano': forms.NumberInput(attrs={'class': 'form-control'}),
'serial_chasis': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
'serial_motor': forms.TextInput(attrs={'class': 'form-control', 'style': 'text-transform: uppercase;'}),
}
def clean(self):
cleaned_data = super().clean()
# Convertir todos los campos de texto a mayúsculas
for field in ['placa_militar', 'tipo', 'modelo', 'marca', 'clase', 'color', 'placa_mtc', 'serial_chasis', 'serial_motor']:
if cleaned_data.get(field):
cleaned_data[field] = cleaned_data[field].upper()
return cleaned_data
def save(self, commit=True):
instance = super().save(commit=False)
instance.tipo_vehiculo = "TÁCTICO" # Predefinido en mayúsculas
if commit:
instance.save()
return instance
class DirectoresForm(forms.ModelForm):
class Meta:
model = Directores
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs.update({'class': 'form-control', 'required': ''})
class SubjefesForm(forms.ModelForm):
class Meta:
model = Subjefes
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs.update({'class': 'form-select' if isinstance(field.widget, forms.Select) else 'form-control', 'required': ''})
class UnidadForm(forms.ModelForm):
class Meta:
model = Unidades
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['nombre'].widget.attrs.update({'class': 'form-control', 'required': ''})
class AsignacionAdministrativaForm(forms.ModelForm):
vehiculos = forms.ModelMultipleChoiceField(
queryset=InventarioAdministrativo.objects.filter(
asignado=False,
asignaciones_historial__isnull=True # Excluir los que ya están en histórico
),
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '5', 'id': 'vehiculos'}),
label="Vehículos Administrativos"
)
class Meta:
model = AsignacionAdministrativa
fields = ['unidad', 'directores', 'jefes', 'comprobante']
widgets = {
'unidad': forms.Select(attrs={'class': 'form-select'}),
'directores': forms.Select(attrs={'class': 'form-select'}),
'jefes': forms.Select(attrs={'class': 'form-select'}),
'comprobante': forms.TextInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['vehiculos'].queryset = InventarioAdministrativo.objects.filter(asignado=False)
class AsignacionTacticaForm(forms.ModelForm):
vehiculos = forms.ModelMultipleChoiceField(
queryset=InventarioTactico.objects.filter(
asignaciones_temporales__isnull=True, # Excluir los que están en AsignacionTactica
asignado=False # Excluir los asignados actualmente
),
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '5', 'id': 'vehiculos'}),
label="Vehículos Tácticos"
)
class Meta:
model = AsignacionTactica
fields = ['unidad', 'directores', 'jefes', 'comprobante']
widgets = {
'unidad': forms.Select(attrs={'class': 'form-select'}),
'directores': forms.Select(attrs={'class': 'form-select'}),
'jefes': forms.Select(attrs={'class': 'form-select'}),
'comprobante': forms.TextInput(attrs={'class': 'form-control'}),
}