Source code for trips.forms

from django import forms
from django.conf import settings
from django.forms.models import inlineformset_factory
from multiupload.fields import MultiFileField
from parsley.decorators import parsleyfy

from core.core import today_in_american_format, remove_trailing_zeroes

from entries.forms import (_set_minimal_queryset_for_account,
                           BaseBankTransactionFormSet)

from .models import TripEntry, TripTransaction, TripStoreTransaction


@parsleyfy
[docs]class TripEntryForm(forms.ModelForm): """A From for TripEntries along with multiple TripReceipts.""" receipts = MultiFileField( min_num=0, max_num=99, max_file_size=1024 * 1024 * 100, required=False ) class Meta(object): model = TripEntry widgets = { 'date': forms.DateInput(attrs={'class': 'form-control'}), 'name': forms.TextInput(attrs={'class': 'form-control'}), 'number': forms.TextInput(attrs={'class': 'form-control'}), 'total_trip_advance': forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'form-control'}), 'amount': forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'form-control', 'id': 'entry_amount'}), 'comments': forms.Textarea( attrs={'rows': 2, 'cols': 50, 'class': 'form-control'}), } def __init__(self, *args, **kwargs): """Set the initial date to today, remove trailing zeros.""" super(TripEntryForm, self).__init__(*args, **kwargs) self.fields['date'].label = "Trip Date" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date trip_advance = self.instance.total_trip_advance self.initial['total_trip_advance'] = remove_trailing_zeroes( trip_advance) amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
class BaseTripTransactionForm(forms.ModelForm): item_price = forms.DecimalField( required=False, label='Item Price', widget=forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'price form-control enter-mod'})) tax = forms.DecimalField( required=False, initial=settings.DEFAULT_TAX_RATE, label='Tax Rate', widget=forms.TextInput(attrs={'size': 4, 'maxlength': 10, 'class': 'tax form-control enter-mod'})) def __init__(self, *args, **kwargs): super(BaseTripTransactionForm, self).__init__(*args, **kwargs) _set_minimal_queryset_for_account(self, 'account') amount = self.instance.amount if amount is not None: self.initial['amount'] = remove_trailing_zeroes(amount) @parsleyfy class TripTransactionForm(BaseTripTransactionForm): class Meta(object): model = TripTransaction fields = ('account', 'detail', 'item_price', 'tax', 'amount') widgets = { 'account': forms.Select( attrs={'class': 'account account-autocomplete ' 'form-control enter-mod'}), 'detail': forms.TextInput( attrs={'class': 'form-control enter-mod'}), 'tax': forms.TextInput( attrs={'size': 4, 'maxlength': 4, 'class': 'form-control enter-mod'}), 'amount': forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'amount form-control enter-mod'}), } TripTransactionFormSet = inlineformset_factory( TripEntry, TripTransaction, form=TripTransactionForm, formset=BaseBankTransactionFormSet, extra=10, can_delete=True ) class TripStoreTransactionForm(BaseTripTransactionForm): class Meta(object): model = TripStoreTransaction fields = ('store', 'account', 'detail', 'item_price', 'tax', 'amount') widgets = { 'store': forms.Select( attrs={'class': 'account store form-control enter-mod'}), 'account': forms.Select( attrs={'class': 'account account-autocomplete ' 'form-control enter-mod'}), 'detail': forms.TextInput( attrs={'class': 'form-control enter-mod'}), 'tax': forms.TextInput( attrs={'size': 4, 'maxlength': 4, 'class': 'form-control enter-mod'}), 'amount': forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'amount form-control enter-mod'}), } TripStoreTransactionFormSet = inlineformset_factory( TripEntry, TripStoreTransaction, form=TripStoreTransactionForm, formset=forms.models.BaseInlineFormSet, extra=2, can_delete=True, )