Merge branch 'release/1.3.17'
This commit is contained in:
commit
fe48079f9d
@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
|
||||
## [1.3.17] - 2022-07-14
|
||||
|
||||
### Changed
|
||||
- Replace contact page with simple contact email link
|
||||
|
||||
|
||||
## [1.3.16] - 2022-07-09
|
||||
|
||||
### Added
|
||||
|
||||
18
src/accounts/migrations/0002_alter_address_state.py
Normal file
18
src/accounts/migrations/0002_alter_address_state.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.0.2 on 2022-07-09 14:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='address',
|
||||
name='state',
|
||||
field=models.CharField(blank=True, choices=[('AL', 'Alabama'), ('AK', 'Alaska'), ('AS', 'American Samoa'), ('AZ', 'Arizona'), ('AR', 'Arkansas'), ('AA', 'Armed Forces Americas'), ('AE', 'Armed Forces Europe'), ('AP', 'Armed Forces Pacific'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FM', 'Federated States of Micronesia'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('IA', 'Iowa'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('ME', 'Maine'), ('MH', 'Marshall Islands'), ('MD', 'Maryland'), ('MA', 'Massachusetts'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MS', 'Mississippi'), ('MO', 'Missouri'), ('MT', 'Montana'), ('NE', 'Nebraska'), ('NV', 'Nevada'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NY', 'New York'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('MP', 'Northern Mariana Islands'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PW', 'Palau'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VT', 'Vermont'), ('VI', 'Virgin Islands'), ('VA', 'Virginia'), ('WA', 'Washington'), ('WV', 'West Virginia'), ('WI', 'Wisconsin'), ('WY', 'Wyoming')], max_length=2),
|
||||
),
|
||||
]
|
||||
@ -215,52 +215,6 @@ input[type=submit]:hover,
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
/* Contact form
|
||||
========================================================================== */
|
||||
.contact-form {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 0 2rem;
|
||||
}
|
||||
|
||||
.contact-form p:nth-child(6) {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
.contact-form #id_captcha {
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.contact-form div:last-child {
|
||||
grid-column: 2;
|
||||
}
|
||||
|
||||
.contact-form label {
|
||||
display: block;
|
||||
}
|
||||
|
||||
:is(.contact-form) input, select, textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.contact-form {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.contact-form p:nth-child(6),
|
||||
.contact-form div:last-child {
|
||||
grid-column: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
@ -13,8 +13,6 @@ from captcha.fields import CaptchaField
|
||||
from core.models import Order
|
||||
from core import CoffeeGrind, ShippingContainer
|
||||
|
||||
from .tasks import contact_form_email
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -137,34 +135,3 @@ class OrderCreateForm(forms.ModelForm):
|
||||
|
||||
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)'),
|
||||
]
|
||||
|
||||
full_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)
|
||||
captcha = CaptchaField()
|
||||
|
||||
def send_email(self):
|
||||
contact_form_email.delay(self.cleaned_data)
|
||||
|
||||
@ -6,26 +6,3 @@ from django.core.mail import EmailMessage, send_mail
|
||||
from templated_email import send_templated_mail
|
||||
|
||||
logger = get_task_logger(__name__)
|
||||
|
||||
|
||||
CONTACT_FORM_TEMPLATE = 'storefront/contact_form'
|
||||
|
||||
|
||||
@shared_task(name='contact_form_email')
|
||||
def contact_form_email(formdata):
|
||||
with open(f'{settings.BASE_DIR.parent}/.blacklist') as blacklist:
|
||||
if formdata.get('email_address') not in blacklist.read():
|
||||
send_templated_mail(
|
||||
template_name=CONTACT_FORM_TEMPLATE,
|
||||
from_email=settings.DEFAULT_FROM_EMAIL,
|
||||
recipient_list=[settings.DEFAULT_CONTACT_EMAIL],
|
||||
context=formdata
|
||||
)
|
||||
|
||||
logger.info(
|
||||
f"Contact form email sent from {formdata['email_address']}"
|
||||
)
|
||||
else:
|
||||
logger.warn(
|
||||
f"{formdata['email_address']} tried to send an email but was on the blacklist"
|
||||
)
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
<input type="submit" value="Continue">
|
||||
</p>
|
||||
</form>
|
||||
<p>We validate addresses with USPS, if you are having issues please contact us at <a href="mailto:support@ptcoffee.com">support@ptcoffee.com</a> or use the contact information found on our <a href="{% url 'storefront:contact' %}">contact</a> page.</p>
|
||||
<p>We validate addresses with USPS, if you are having issues please contact us at <a href="mailto:support@ptcoffee.com">support@ptcoffee.com</a>.</p>
|
||||
</section>
|
||||
</article>
|
||||
{% endblock %}
|
||||
|
||||
@ -1,57 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block head_title %}Contact | {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="site__banner site__banner--site">
|
||||
<h1>Contact us</h1>
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<h4>Problem with your online order or have a question?</h4>
|
||||
<p>
|
||||
Please contact us, we’re happy to help you over the phone<br>
|
||||
<a href="tel:+13603855856">(360) 385-5856</a> Mon-Fri between 9:00 am and 5:00 pm Pacific Time.
|
||||
</p>
|
||||
<p>Or send us a message using the form below and we'll email you back as soon as we can.</p>
|
||||
</header>
|
||||
<section>
|
||||
<form action="{% url 'storefront:contact' %}" method="post" class="contact-form">
|
||||
{% csrf_token %}
|
||||
{{ form.non_field_errors }}
|
||||
<p>
|
||||
{{ form.full_name.errors }}
|
||||
<label for="{{ form.full_name.id_for_label }}">Full name:</label>
|
||||
{{ form.full_name }}
|
||||
</p>
|
||||
<p>
|
||||
{{ form.email_address.errors }}
|
||||
<label for="{{ form.email_address.id_for_label }}">Email address</label>
|
||||
{{ form.email_address }}
|
||||
</p>
|
||||
<p>
|
||||
{{ form.referal.errors }}
|
||||
<label for="{{ form.referal.id_for_label }}">How did you find our website?</label>
|
||||
{{ form.referal }}
|
||||
</p>
|
||||
<p>
|
||||
{{ form.subject.errors }}
|
||||
<label for="{{ form.subject.id_for_label }}">Subject:</label>
|
||||
{{ form.subject }}
|
||||
</p>
|
||||
<p>
|
||||
{{ form.message.errors }}
|
||||
<label for="{{ form.message.id_for_label }}">Message:</label>
|
||||
{{ form.message }}
|
||||
</p>
|
||||
<div>
|
||||
{{ form.captcha.errors }}
|
||||
<p>
|
||||
{{ form.captcha }}
|
||||
</p>
|
||||
<p><input type="submit" value="Send message"></p>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</article>
|
||||
{% endblock %}
|
||||
@ -20,7 +20,7 @@ from storefront.views import (
|
||||
PaymentDoneView, PaymentCanceledView,
|
||||
CustomerDetailView, CustomerUpdateView, OrderDetailView,
|
||||
CustomerAddressCreateView, CustomerAddressUpdateView,
|
||||
AboutView, FairTradeView, ReviewListView, ContactFormView,
|
||||
AboutView, FairTradeView, ReviewListView,
|
||||
)
|
||||
from storefront.cart import Cart
|
||||
|
||||
@ -426,21 +426,3 @@ class ReviewListViewTest(TestCase):
|
||||
response = self.client.get(reverse('storefront:reviews'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'storefront/reviews.html')
|
||||
|
||||
|
||||
class ContactFormViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
|
||||
def test_view_url_exists_at_desired_location(self):
|
||||
response = self.client.get('/contact/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_view_url_accessible_by_name(self):
|
||||
response = self.client.get(reverse('storefront:contact'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_view_uses_correct_template(self):
|
||||
response = self.client.get(reverse('storefront:contact'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'storefront/contact_form.html')
|
||||
|
||||
@ -5,7 +5,6 @@ urlpatterns = [
|
||||
path('about/', views.AboutView.as_view(), name='about'),
|
||||
path('fair-trade/', views.FairTradeView.as_view(), name='fair-trade'),
|
||||
path('reviews/', views.ReviewListView.as_view(), name='reviews'),
|
||||
path('contact/', views.ContactFormView.as_view(), name='contact'),
|
||||
|
||||
path('', views.ProductListView.as_view(), name='product-list'),
|
||||
path('products/<int:pk>/', include([
|
||||
|
||||
@ -36,7 +36,7 @@ from core import OrderStatus, ShippingContainer
|
||||
|
||||
from .forms import (
|
||||
AddToCartForm, UpdateCartItemForm, OrderCreateForm,
|
||||
AddressForm, CouponApplyForm, ContactForm, CheckoutShippingForm,
|
||||
AddressForm, CouponApplyForm, CheckoutShippingForm,
|
||||
)
|
||||
from .cart import Cart
|
||||
from .payments import CaptureOrder
|
||||
@ -491,14 +491,3 @@ class FairTradeView(TemplateView):
|
||||
|
||||
class ReviewListView(TemplateView):
|
||||
template_name = 'storefront/reviews.html'
|
||||
|
||||
|
||||
class ContactFormView(FormView, SuccessMessageMixin):
|
||||
template_name = 'storefront/contact_form.html'
|
||||
form_class = ContactForm
|
||||
success_url = reverse_lazy('storefront:product-list')
|
||||
success_message = 'Message sent.'
|
||||
|
||||
def form_valid(self, form):
|
||||
form.send_email()
|
||||
return super().form_valid(form)
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
<li><a class="nav__link" href="{% url 'storefront:reviews' %}">Reviews</a></li>
|
||||
<li><a class="nav__link" href="{% url 'storefront:about' %}">About</a></li>
|
||||
<li><a class="nav__link" href="https://bltcoffee.com/">Cafe</a></li>
|
||||
<li><a class="nav__link" href="{% url 'storefront:contact' %}">Contact</a></li>
|
||||
<li><a class="nav__link" href="mailto:support@ptcoffee.com">Contact</a></li>
|
||||
</ul>
|
||||
{% if user.is_authenticated %}
|
||||
<div class="nav__menu nav__account">
|
||||
@ -93,13 +93,13 @@
|
||||
<p><button class="show-modal">Subscribe to our newsletter</button></p>
|
||||
<p>
|
||||
<strong>Problem with your online order or have a question?</strong><br>
|
||||
Please <a href="{% url 'storefront:contact' %}">contact us</a>, we’re happy to help you over the phone at <a href="tel:+13603855856">(360) 385-5856</a><br>
|
||||
Please <a href="mailto:support@ptcoffee.com">contact us</a>, we’re happy to help you over the phone at <a href="tel:+13603855856">(360) 385-5856</a><br>
|
||||
Mon-Fri between 9:00 am and 5:00 pm Pacific Time.<br>
|
||||
<address>854 East Park Ave. Suite 1, Port Townsend, WA 98368</address>
|
||||
</p>
|
||||
<p>
|
||||
Better Living Food Company Inc.℠<br>
|
||||
<small><a href="{% url 'storefront:contact' %}">Contact</a> | Fair Trade | Organic</small>
|
||||
<small><a href="mailto:support@ptcoffee.com">Contact</a> | Fair Trade | Organic</small>
|
||||
<br>
|
||||
<small>Website by <a href="https://nathanjchapman.com">Nathan Chapman</a></small>
|
||||
<br><br>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user