Browse Source

email +env

master
corbreedy 4 years ago
parent
commit
bcaa342c3c
  1. 1
      .gitignore
  2. 10
      hpst/admin.py
  3. 19
      hpst/forms.py
  4. 9
      hpst/models.py
  5. 28
      hpst/templates/email.html
  6. 31
      hpst/templates/index.html
  7. 37
      hpst/views.py
  8. 2
      requirements.txt
  9. 19
      sinnestau/settings.py

1
.gitignore

@ -14,6 +14,7 @@ sinnestau/migrations/
hpst/migrations/
venv3/
.env
#Emacs files
*~

10
hpst/admin.py

@ -1,7 +1,8 @@
from django.contrib import admin
# Register your models here.
from .models import Termin
from hpst.models import Termin
from hpst.models import Kontakt
class TerminAdmin(admin.ModelAdmin):
list_display = ['titel', 'date']
@ -9,3 +10,10 @@ class TerminAdmin(admin.ModelAdmin):
actions = []
admin.site.register(Termin,TerminAdmin)
class KontaktAdmin(admin.ModelAdmin):
list_display = ['subject','email', 'datum']
ordering = ['datum']
actions = []
admin.site.register(Kontakt,KontaktAdmin)

19
hpst/forms.py

@ -1,7 +1,18 @@
# sendemail/forms.py
from django import forms
class ContactForm(forms.Form):
from_email = forms.EmailField(required=True)
subject = forms.CharField(required=True)
message = forms.CharField(widget=forms.Textarea, required=True)
class KontaktForm(forms.Form):
subject = forms.CharField(widget=forms.HiddenInput())
from_email = forms.EmailField(required=True,
widget= forms.EmailInput
(attrs={'class':'w3-input w3-border',
'placeholder':'Email'}))
name = forms.CharField(max_length=200,
required=True,
widget= forms.TextInput
(attrs={'class':'w3-input w3-border',
'placeholder':'Name'}))
message = forms.CharField(required=True,
widget=forms.Textarea
(attrs={'class':'w3-input w3-border',
'placeholder':'Mitteilung'}))

9
hpst/models.py

@ -1,6 +1,6 @@
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
#Sinnestau.de models
class Termin(models.Model):
@ -19,3 +19,10 @@ class Termin(models.Model):
text = models.TextField()
date = models.DateField()
termintyp = models.CharField(max_length=1, choices=TERMIN_SET, default='S')
class Kontakt(models.Model):
name = models.CharField(max_length=200,blank=True, null=True)
email = models.CharField(max_length=250)
subject= models.CharField(max_length=255)
text = models.TextField()
datum = models.DateTimeField(default=timezone.now)

28
hpst/templates/email.html

@ -0,0 +1,28 @@
{% extends "st_base.html" %}
{% load static %}
{% load st_extratags %}
{% block javascript %}
{% endblock %}
{% block style %}
{% endblock %}
{% block content %}
<!-- Container (About Section) -->
<div class="w3-content w3-container w3-padding-64">
<h3 class="w3-center">Kontaktaufnahme</h3>
<h4 class="w3-center">{{msg.titel}}</h4>
<p class="w3-center"> {{msg.text}}</p>
<div class="w3-panel w3-yellow">
<h3>Message!</h3>
<p>{{ message }}</p>
</div>
</div>
{% endblock %}

31
hpst/templates/index.html

@ -235,18 +235,39 @@ Kronach / Fischbach<br>
<i class="fa fa-envelope fa-fw w3-hover-text-black w3-xlarge w3-margin-right"></i> Email: info@sinnes-tau.de<br>
</div>
<p>Komme auf eine Tasse <i class="fa fa-coffee"></i> vorbei, oder hinterlasse mir eine Nachricht:</p>
<form action="{% url 'kontakt' %}" target="_blank">
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<div class="w3-panel w3-yellow">
<h3>Eingabefehler!</h3>
<p>{{ error|escape }}</p>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="w3-panel w3-yellow">
<h3>Eingabefehler!</h3>
<p>{{ error|escape }}</p>
</div>
{% endfor %}
{% endif %}
<form action="{% url 'kontakt' %}" method="Post">
{% csrf_token %}
{{ form.as_p }}
{% for hidden_field in form.hidden_fields %}
{{ hidden_field }}
{% endfor %}
<div class="w3-row-padding" style="margin:0 -16px 8px -16px">
<div class="w3-half">
<input class="w3-input w3-border" type="text" placeholder="Name" required name="Name">
{{ form.name }}
</div>
<div class="w3-half">
<input class="w3-input w3-border" type="text" placeholder="Email" required name="Email">
{{ form.from_email }}
</div>
</div>
<input class="w3-input w3-border" type="text" placeholder="Message" required name="Message">
{{ form.message }}
<button class="w3-button w3-black w3-right w3-section" type="submit">
<i class="fa fa-paper-plane"></i> ABSENDEN
</button>

37
hpst/views.py

@ -8,17 +8,19 @@ import datetime
import pytz
from hpst.models import Termin
from hpst.forms import ContactForm
from hpst.models import Kontakt
from hpst.forms import KontaktForm
#Email
from django.core.mail import BadHeaderError,send_mail
# Create your views here.
# Hauptseite
def index(request):
termine=Termin.objects.filter(date__gt=timezone.now()).order_by( 'date')
context ={
"termine":termine,
"data":"Gfg is the best",
"list":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
"form":KontaktForm(initial={'subject': 'Kontaktformular - Index - sinnestau.de',})
}
# return response with template and context
return render(request, "index.html", context)
def wildnispaedagogik(request):
@ -107,19 +109,34 @@ def impressum(request):
def contactView(request):
if request.method == 'GET':
form = ContactForm()
form = KontaktForm()
else:
form = ContactForm(request.POST)
print("havepost")
r_message=""
form = KontaktForm(request.POST)
if form.is_valid():
print("form valid")
subject = form.cleaned_data['subject']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
name = form.cleaned_data['name']
text=from_email+'\n.........................\n'+message
newkon=Kontakt.objects.create(
name=name,
subject=subject,
email=from_email,
text=text
)
r_message="Vielen Dank! Wir haben Ihre Email erhalten!"
try:
send_mail(subject, message, from_email, ['tanja@kuntner.de'])
send_mail(subject, text, 'formular@sinnes-tau.de', ['tanja@kuntner.de'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('success')
return render(request, "email.html", {'form': form})
#return redirect('success')
else:
print(form.errors)
r_message="Form invalid"
return render(request, "email.html", {'form': form,'message':r_message})
def successView(request):
return HttpResponse('Success! Thank you for your message.')

2
requirements.txt

@ -2,3 +2,5 @@ django~=3.2.7
wheel
mysqlclient
uwsgi
python-decouple
dj_database_url

19
sinnestau/settings.py

@ -11,7 +11,9 @@ https://docs.djangoproject.com/en/3.2/ref/settings/
"""
from pathlib import Path
#Pw etc
from decouple import config
from dj_database_url import parse as db_url
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@ -21,10 +23,10 @@ BASE_DIR = Path(__file__).resolve().parent.parent
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-4)p&qhcr@7(az19%7&aqoy49amjf#h+eupul=u28=kd)w@=rp@'
SECRET_KEY = config('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
DEBUG = config('DEBUG')
ALLOWED_HOSTS = ['sinnes-tau.de','sinnes-tau.kuntner.de','localhost', '127.0.0.1','192.168.178.25','kuntner.de' ]
@ -78,8 +80,11 @@ WSGI_APPLICATION = 'sinnestau.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config('DATABASE_NAME'),
'USER': config('DATABASE_USERNAME'),
'PASSWORD': config('DATABASE_PASSWORT'),
'HOST': config('DATABASE_HOST'),
'OPTIONS': {
'read_default_file': '/etc/www/myst.cnf',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4'
},
@ -135,3 +140,9 @@ STATIC_ROOT = str(BASE_DIR.joinpath('build/static'))
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
EMAIL_HOST = config('EMAIL_HOST')
EMAIL_PORT = 587
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD');
EMAIL_USE_TLS = True

Loading…
Cancel
Save