1234567891011121314151617181920212223242526272829303132333435363738394041 |
- """ Checkout forms """
- from django import forms
- from store_order.models import Order
- import re
- def strip_non_numbers(data):
- """ gets rid of all non-number characters """
- non_numbers = re.compile(r'\D')
- return non_numbers.sub('', data)
- # Currently not used, can remove if we don't need in future
- class CheckoutForm(forms.ModelForm):
- """ checkout form class to collect user billing and
- shipping information for placing an order """
- def __init__(self, *args, **kwargs):
- super(CheckoutForm, self).__init__(*args, **kwargs)
- # override default attributes
- for field in self.fields:
- self.fields[field].widget.attrs['size'] = '30'
- self.fields['shipping_state'].widget.attrs['size'] = '3'
- self.fields['billing_state'].widget.attrs['size'] = '3'
- self.fields['billing_zip'].widget.attrs['size'] = '6'
- class Meta:
- model = Order
- exclude = ('status', 'ip_address', 'user', 'transaction_id')
- def clean_phone(self):
- """ Validate the phone field """
- phone = self.cleaned_data['phone']
- stripped_phone = strip_non_numbers(phone)
- if len(stripped_phone) < 10:
- error_str = 'Enter a valid phone number with area code.'\
- '(e.g. 555-555-5555)'
- raise forms.ValidationError(error_str)
- return self.cleaned_data['phone']
|