138 lines
4.1 KiB
Python
138 lines
4.1 KiB
Python
import logging
|
|
from django import forms
|
|
from django.core.mail import EmailMessage
|
|
|
|
from core.models import Order
|
|
from accounts import STATE_CHOICES
|
|
|
|
from .tasks import contact_form_email
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class AddToCartForm(forms.Form):
|
|
WHOLE = 'Whole Beans'
|
|
ESPRESSO = 'Espresso'
|
|
CONE_DRIP = 'Cone Drip'
|
|
BASKET_DRIP = 'Basket Drip'
|
|
FRENCH_PRESS = 'French Press'
|
|
STOVETOP_ESPRESSO = 'Stovetop Espresso (Moka Pot)'
|
|
AEROPRESS = 'AeroPress'
|
|
PERCOLATOR = 'Percolator'
|
|
CAFE_STYLE = 'BLTC cafe pour over'
|
|
GRIND_CHOICES = [
|
|
(WHOLE, 'Whole Beans'),
|
|
(ESPRESSO, 'Espresso'),
|
|
(CONE_DRIP, 'Cone Drip'),
|
|
(BASKET_DRIP, 'Basket Drip'),
|
|
(FRENCH_PRESS, 'French Press'),
|
|
(STOVETOP_ESPRESSO, 'Stovetop Espresso (Moka Pot)'),
|
|
(AEROPRESS, 'AeroPress'),
|
|
(PERCOLATOR, 'Percolator'),
|
|
(CAFE_STYLE, 'BLTC cafe pour over')
|
|
]
|
|
|
|
grind = forms.ChoiceField(choices=GRIND_CHOICES)
|
|
quantity = forms.IntegerField(min_value=1, max_value=20, initial=1)
|
|
|
|
class UpdateCartItemForm(forms.Form):
|
|
quantity = forms.IntegerField(min_value=1, max_value=20, initial=1)
|
|
update = forms.BooleanField(required=False, initial=True, widget=forms.HiddenInput)
|
|
|
|
|
|
class AddToSubscriptionForm(forms.Form):
|
|
WHOLE = 'Whole Beans'
|
|
ESPRESSO = 'Espresso'
|
|
CONE_DRIP = 'Cone Drip'
|
|
BASKET_DRIP = 'Basket Drip'
|
|
FRENCH_PRESS = 'French Press'
|
|
STOVETOP_ESPRESSO = 'Stovetop Espresso (Moka Pot)'
|
|
AEROPRESS = 'AeroPress'
|
|
PERCOLATOR = 'Percolator'
|
|
CAFE_STYLE = 'BLTC cafe pour over'
|
|
GRIND_CHOICES = [
|
|
(WHOLE, 'Whole Beans'),
|
|
(ESPRESSO, 'Espresso'),
|
|
(CONE_DRIP, 'Cone Drip'),
|
|
(BASKET_DRIP, 'Basket Drip'),
|
|
(FRENCH_PRESS, 'French Press'),
|
|
(STOVETOP_ESPRESSO, 'Stovetop Espresso (Moka Pot)'),
|
|
(AEROPRESS, 'AeroPress'),
|
|
(PERCOLATOR, 'Percolator'),
|
|
(CAFE_STYLE, 'BLTC cafe pour over')
|
|
]
|
|
|
|
SEVEN_DAYS = 7
|
|
FOURTEEN_DAYS = 14
|
|
THIRTY_DAYS = 30
|
|
SCHEDULE_CHOICES = [
|
|
(SEVEN_DAYS, 'Every 7 days'),
|
|
(FOURTEEN_DAYS, 'Every 14 days'),
|
|
(THIRTY_DAYS, 'Every 30 days'),
|
|
]
|
|
|
|
quantity = forms.IntegerField(min_value=1, initial=1)
|
|
grind = forms.ChoiceField(choices=GRIND_CHOICES)
|
|
schedule = forms.ChoiceField(choices=SCHEDULE_CHOICES)
|
|
|
|
|
|
class AddressForm(forms.Form):
|
|
first_name = forms.CharField()
|
|
last_name = forms.CharField()
|
|
email = forms.EmailField()
|
|
street_address_1 = forms.CharField()
|
|
street_address_2 = forms.CharField(required=False)
|
|
city = forms.CharField()
|
|
state = forms.ChoiceField(
|
|
choices=STATE_CHOICES
|
|
)
|
|
postal_code = forms.CharField()
|
|
|
|
class OrderCreateForm(forms.ModelForm):
|
|
email = forms.CharField(widget=forms.HiddenInput())
|
|
first_name = forms.CharField(widget=forms.HiddenInput())
|
|
last_name = forms.CharField(widget=forms.HiddenInput())
|
|
|
|
class Meta:
|
|
model = Order
|
|
fields = (
|
|
'total_net_amount',
|
|
'shipping_total',
|
|
)
|
|
widgets = {
|
|
'total_net_amount': forms.HiddenInput(),
|
|
'shipping_total': forms.HiddenInput()
|
|
}
|
|
|
|
class CouponApplyForm(forms.Form):
|
|
code = forms.CharField(label='Coupon code')
|
|
|
|
class ContactForm(forms.Form):
|
|
GOOGLE = 'Google Search'
|
|
SHOP = 'The coffee shop'
|
|
WOM = 'Word of mouth'
|
|
PRODUCT = 'Coffee Bag'
|
|
STORE = 'Store'
|
|
OTHER = 'Other'
|
|
|
|
REFERAL_CHOICES = [
|
|
(GOOGLE, 'Google Search'),
|
|
(SHOP, '"Better Living Through Coffee" coffee shop'),
|
|
(WOM, 'Friend/Relative'),
|
|
(PRODUCT, 'Our Coffee Bag'),
|
|
(STORE, 'PT Food Coop/other store'),
|
|
(OTHER, 'Other (please describe below)'),
|
|
]
|
|
|
|
first_name = forms.CharField()
|
|
last_name = forms.CharField()
|
|
email_address = forms.EmailField()
|
|
referal = forms.ChoiceField(
|
|
label='How did you find our website?',
|
|
choices=REFERAL_CHOICES
|
|
)
|
|
subject = forms.CharField()
|
|
message = forms.CharField(widget=forms.Textarea)
|
|
|
|
def send_email(self):
|
|
contact_form_email.delay(self.cleaned_data)
|