2022-04-24 12:38:44 -06:00

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)