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