Source code for creditcards.forms

from django import forms
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 CreditCardEntry, CreditCardTransaction


@parsleyfy
[docs]class CreditCardEntryForm(forms.ModelForm): """A Form for CreditCardEntries along with multiple CreditCardReceipts.""" receipts = MultiFileField( min_num=0, max_num=99, max_file_size=1024 * 1024 * 100, required=False) class Meta(object): model = CreditCardEntry widgets = { 'date': forms.DateInput(attrs={'class': 'form-control'}), 'card': forms.Select(attrs={'class': 'form-control'}), 'name': forms.TextInput(attrs={'class': 'form-control'}), 'merchant': forms.TextInput(attrs={'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 & change the name label.""" super(CreditCardEntryForm, self).__init__(*args, **kwargs) self.fields['date'].label = "Purchase Date" self.fields['name'].label = "Your Name" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
@parsleyfy class CreditCardTransactionForm(forms.ModelForm): class Meta(object): model = CreditCardTransaction fields = ('account', 'detail', 'amount') widgets = { 'account': forms.Select( attrs={'class': 'account account-autocomplete ' 'form-control enter-mod'}), 'detail': forms.TextInput( attrs={'class': 'form-control enter-mod'}), 'amount': forms.TextInput( attrs={'size': 10, 'maxlength': 10, 'class': 'amount form-control enter-mod'}), } def __init__(self, *args, **kwargs): super(CreditCardTransactionForm, 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) CreditCardTransactionFormSet = inlineformset_factory( CreditCardEntry, CreditCardTransaction, form=CreditCardTransactionForm, formset=BaseBankTransactionFormSet, extra=5, can_delete=True)