from django import forms from .models import Truck, Shipment, Bid from django.utils.translation import gettext_lazy as _ class TruckForm(forms.ModelForm): class Meta: model = Truck fields = [ 'truck_type', 'model', 'year', 'plate_no', 'load_capacity', 'color', 'truck_picture', 'registration_front', 'registration_back', 'driver_license' ] widgets = { 'truck_type': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('e.g. Flatbed, Trailer')}), 'model': forms.TextInput(attrs={'class': 'form-control'}), 'year': forms.NumberInput(attrs={'class': 'form-control'}), 'plate_no': forms.TextInput(attrs={'class': 'form-control'}), 'load_capacity': forms.TextInput(attrs={'class': 'form-control'}), 'color': forms.TextInput(attrs={'class': 'form-control'}), 'truck_picture': forms.FileInput(attrs={'class': 'form-control'}), 'registration_front': forms.FileInput(attrs={'class': 'form-control'}), 'registration_back': forms.FileInput(attrs={'class': 'form-control'}), 'driver_license': forms.FileInput(attrs={'class': 'form-control'}), } class ShipmentForm(forms.ModelForm): class Meta: model = Shipment fields = ['description', 'weight', 'origin', 'destination', 'delivery_date'] widgets = { 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), 'weight': forms.TextInput(attrs={'class': 'form-control'}), 'origin': forms.TextInput(attrs={'class': 'form-control'}), 'destination': forms.TextInput(attrs={'class': 'form-control'}), 'delivery_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), } class BidForm(forms.ModelForm): class Meta: model = Bid fields = ['truck', 'amount', 'comments'] widgets = { 'truck': forms.Select(attrs={'class': 'form-select'}), 'amount': forms.NumberInput(attrs={'class': 'form-control', 'step': '0.01'}), 'comments': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), } def __init__(self, *args, **kwargs): user = kwargs.pop('user', None) super().__init__(*args, **kwargs) if user: self.fields['truck'].queryset = Truck.objects.filter(owner=user)