From d5bd8d2da8716af5b91b32a51128bfd2247cc1ab Mon Sep 17 00:00:00 2001 From: j Date: Tue, 26 Oct 2021 16:47:06 +0100 Subject: [PATCH] contact form --- app/contact/__init__.py | 0 app/contact/admin.py | 2 ++ app/contact/apps.py | 6 ++++++ app/contact/forms.py | 7 +++++++ app/contact/migrations/__init__.py | 0 app/contact/models.py | 2 ++ app/contact/tests.py | 3 +++ app/contact/views.py | 20 ++++++++++++++++++++ app/settings.py | 4 ++++ app/static/css/partials/_contact.scss | 27 +++++++++++++++++++++++++++ app/static/css/style.scss | 1 + app/templates/contact.html | 22 ++++++++++++++++++++++ app/urls.py | 2 ++ 13 files changed, 96 insertions(+) create mode 100644 app/contact/__init__.py create mode 100644 app/contact/admin.py create mode 100644 app/contact/apps.py create mode 100644 app/contact/forms.py create mode 100644 app/contact/migrations/__init__.py create mode 100644 app/contact/models.py create mode 100644 app/contact/tests.py create mode 100644 app/contact/views.py create mode 100644 app/static/css/partials/_contact.scss create mode 100644 app/templates/contact.html diff --git a/app/contact/__init__.py b/app/contact/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/contact/admin.py b/app/contact/admin.py new file mode 100644 index 0000000..c6fe108 --- /dev/null +++ b/app/contact/admin.py @@ -0,0 +1,2 @@ +from django.contrib import admin + diff --git a/app/contact/apps.py b/app/contact/apps.py new file mode 100644 index 0000000..355f785 --- /dev/null +++ b/app/contact/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ContactConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'app.contact' diff --git a/app/contact/forms.py b/app/contact/forms.py new file mode 100644 index 0000000..b98cf38 --- /dev/null +++ b/app/contact/forms.py @@ -0,0 +1,7 @@ +from django import forms +from django.conf import settings + +class ContactForm(forms.Form): + email = forms.EmailField(label='EMail', required=False) + message = forms.CharField(label='Message', required=True) + diff --git a/app/contact/migrations/__init__.py b/app/contact/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/contact/models.py b/app/contact/models.py new file mode 100644 index 0000000..beeb308 --- /dev/null +++ b/app/contact/models.py @@ -0,0 +1,2 @@ +from django.db import models + diff --git a/app/contact/tests.py b/app/contact/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/app/contact/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/app/contact/views.py b/app/contact/views.py new file mode 100644 index 0000000..5053929 --- /dev/null +++ b/app/contact/views.py @@ -0,0 +1,20 @@ +from django.shortcuts import render + +from . import forms +from . import models + +def index(request): + context = { + } + if request.method == 'POST': + form = forms.ContactForm(request.POST) + if form.is_valid(): + message = 'From: %s\n\n%s' % (form.cleaned_data['email'], form.cleaned_data['message']) + subject = 'Phantas.ma/polis contact message' + from_ = settings.CONTACT_FROM_EMAIL + to = settings.CONTACT_TO_EMAIL + msg = EmailMessage(subject, message, from_, to, reply_to=[form.cleaned_data['email']]) + msg.send(fail_silently=True) + else: + context['form'] = form + return render(request, 'contact.html', context) diff --git a/app/settings.py b/app/settings.py index 73da621..c2c6edd 100644 --- a/app/settings.py +++ b/app/settings.py @@ -41,6 +41,7 @@ INSTALLED_APPS = [ 'app.user', 'app.video', 'app.text', + 'app.contact', ] @@ -148,6 +149,9 @@ DEFAULT_PANDORA_API = "https://pad.ma/api/" URL_PREFIX = 'polis+' +CONTACT_TO_EMAIL = 'polis@phantas.ma' +CONTACT_FROM_EMAIL = 'polis@phantas.ma' + try: from .local_settings import * except ImportError: diff --git a/app/static/css/partials/_contact.scss b/app/static/css/partials/_contact.scss new file mode 100644 index 0000000..78cef1c --- /dev/null +++ b/app/static/css/partials/_contact.scss @@ -0,0 +1,27 @@ +main > .contact { + max-width: var(--container-lg-width); + margin: 0 auto; + padding: var(--spacing-2); + + h1 { + font-size: 22px; + margin: 0 0 var(--spacing) 0; + } + + input[type=email], textarea { + border: 0; + background: blue; + color: red; + font-size: 20px; + line-height: 1.3; + } + textarea { + width: 500px; + height: 300px; + } + input[type=submit] { + border: 0; + background: green; + } + +} diff --git a/app/static/css/style.scss b/app/static/css/style.scss index 0838308..09be792 100755 --- a/app/static/css/style.scss +++ b/app/static/css/style.scss @@ -8,3 +8,4 @@ @import "partials/text"; @import "partials/ascroll"; @import "partials/about"; +@import "partials/contact"; diff --git a/app/templates/contact.html b/app/templates/contact.html new file mode 100644 index 0000000..a0e4be0 --- /dev/null +++ b/app/templates/contact.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} +{% block title %}Contact 聯絡{% endblock title %} +{% block body_class%}animated animated-text{% endblock %} +{% block main %} +
+

Contact 聯絡

+
+ +
+ +
+ + {% csrf_token %} +
+
+{% endblock %} + diff --git a/app/urls.py b/app/urls.py index 4529c73..949f300 100755 --- a/app/urls.py +++ b/app/urls.py @@ -19,6 +19,7 @@ from django.conf import settings from .video import views as video from .text import views as text +from .contact.views import index as contact urlpatterns = [ path('admin/', admin.site.urls), @@ -34,6 +35,7 @@ urlpatterns = [ path(settings.URL_PREFIX + 'assemblies/', text.text, name='text'), #path(settings.URL_PREFIX + 'index-alt/', text.index_alt, name='index_alt'), path(settings.URL_PREFIX + 'about/', text.about, name='about'), + path(settings.URL_PREFIX + 'contact/', contact, name='contact'), path(settings.URL_PREFIX + '/', text.page, name='page'), path(settings.URL_PREFIX[:-1], text.index, name='index'), path('', text.fallback, name='fallback'),