From 57481d4dbe310658a2988c419695e7b3a2187424 Mon Sep 17 00:00:00 2001 From: j Date: Wed, 21 Feb 2018 20:31:25 +0530 Subject: [PATCH] contact form --- camp/settings.py | 3 +++ camp/static/css/main.css | 6 ++++++ camp/urls.py | 2 ++ content/forms.py | 7 +++++++ content/templates/contact.html | 18 ++++++++++++++++++ content/views.py | 25 ++++++++++++++++++++++++- 6 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 content/forms.py create mode 100644 content/templates/contact.html diff --git a/camp/settings.py b/camp/settings.py index e840f6c..6c222fa 100644 --- a/camp/settings.py +++ b/camp/settings.py @@ -145,6 +145,9 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'data/images') IMAGE_PREFIX = 'http://studio.camp/images/' +CONTACT_FROM_EMAIL = 'contact@studio.camp' +CONTACT_TO_EMAIL = ['contact@studio.camp'] + try: from local_settings import * except: diff --git a/camp/static/css/main.css b/camp/static/css/main.css index 9eb6b00..98b1cb3 100644 --- a/camp/static/css/main.css +++ b/camp/static/css/main.css @@ -187,3 +187,9 @@ table thead, table tbody, table tfoot { +label, button { + color: #ffffff !important; +} +button { + background: #99999 !important; +} diff --git a/camp/urls.py b/camp/urls.py index 0a7f653..ba668ef 100644 --- a/camp/urls.py +++ b/camp/urls.py @@ -36,6 +36,8 @@ urlpatterns = [ url(r'directions.html', RedirectView.as_view(url='/directions/')), url(r'campstudio.html', RedirectView.as_view(url='/directions/')), + url(r'^contact/$', views.contact), + url(r'^texts/index/$', views.section_list, {'section': 'Texts'}, name='texts_list'), url(r'^events/index/$', views.section_list, {'section': 'Events'}, name='events_list'), url(r'^projects/index/$', views.section_list, {'section': 'Projects'}, name='projects_list'), diff --git a/content/forms.py b/content/forms.py new file mode 100644 index 0000000..1910f82 --- /dev/null +++ b/content/forms.py @@ -0,0 +1,7 @@ +from django import forms +from django.conf import settings + +class ContactForm(forms.Form): + name = forms.CharField(label='Name', required=True) + email = forms.EmailField(label='E-Mail', required=True) + message = forms.CharField(label='Message', widget=forms.Textarea, required=True) diff --git a/content/templates/contact.html b/content/templates/contact.html new file mode 100644 index 0000000..a431104 --- /dev/null +++ b/content/templates/contact.html @@ -0,0 +1,18 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+ {% if sent %} +

Thanks for getting in touch!

+ {% else %} +
+ {% csrf_token %} + {{form}} +
+ +
+ {% endif %} +
+
+{% endblock %} diff --git a/content/views.py b/content/views.py index c32d203..86e3105 100644 --- a/content/views.py +++ b/content/views.py @@ -3,18 +3,21 @@ from __future__ import unicode_literals from datetime import datetime +from django.conf import settings from django.core.exceptions import ObjectDoesNotExist +from django.core.mail import EmailMessage +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.db.models import Q from django.http import HttpResponse, Http404 from django.shortcuts import get_object_or_404, render, redirect from django.urls import reverse from django.views.generic.list import ListView -from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from photologue.views import GalleryListView from photologue.models import Photo, Gallery from .models import Content, ContentContent +from . import forms ITEMS_PER_PAGE = 30 @@ -165,6 +168,26 @@ def page(request, shortname): raise Http404 return render(request, 'page.html', {'content': content}) +def contact(request): + context = {} + if request.method == 'POST': + form = forms.ContactForm(request.POST) + if form.is_valid(): + name = form.cleaned_data['name'] + email = form.cleaned_data['email'] + message = form.cleaned_data['message'] + subject = '{} has left a message on studio.camp'.format(name) + from_ = settings.CONTACT_FROM_EMAIL + to = settings.CONTACT_TO_EMAIL + msg = EmailMessage(subject, message, from_, to, reply_to=[email]) + msg.send(fail_silently=True) + #msg.send() + context['sent'] = True + else: + form = forms.ContactForm() + context['form'] = form + return render(request, 'contact.html', context) + def limit_content(content, q): if q: