added pyramid_mailer to send contact form
This commit is contained in:
BIN
cao_blogr.sqlite
BIN
cao_blogr.sqlite
Binary file not shown.
@@ -2,6 +2,7 @@ from pyramid.config import Configurator
|
||||
from pyramid.authentication import AuthTktAuthenticationPolicy
|
||||
from pyramid.authorization import ACLAuthorizationPolicy
|
||||
from pyramid.session import SignedCookieSessionFactory
|
||||
from pyramid_mailer import mailer_factory_from_settings
|
||||
|
||||
from .services.user import groupfinder
|
||||
|
||||
@@ -11,14 +12,15 @@ def main(global_config, **settings):
|
||||
"""
|
||||
# session factory
|
||||
my_session_factory = SignedCookieSessionFactory('mGcAJn2HmNH6Hc')
|
||||
|
||||
authentication_policy = AuthTktAuthenticationPolicy('wMWvAWMZnp6Lch',
|
||||
callback=groupfinder, hashalg='sha512', timeout=36000)
|
||||
authorization_policy = ACLAuthorizationPolicy()
|
||||
|
||||
with Configurator(settings=settings,
|
||||
root_factory='cao_blogr.security.RootFactory',
|
||||
authentication_policy=authentication_policy,
|
||||
authorization_policy=authorization_policy) as config:
|
||||
config.registry['mailer'] = mailer_factory_from_settings(settings)
|
||||
config.include('pyramid_jinja2')
|
||||
config.include('.models')
|
||||
config.include('.routes')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from wtforms import Form, StringField, TextAreaField, SelectField
|
||||
from wtforms import IntegerField, PasswordField
|
||||
from wtforms.validators import InputRequired, Length
|
||||
from wtforms.validators import InputRequired, Length, Email
|
||||
from wtforms.widgets import HiddenInput
|
||||
|
||||
strip_filter = lambda x: x.strip() if x else None
|
||||
@@ -25,3 +25,10 @@ class UserCreateForm(Form):
|
||||
filters=[strip_filter])
|
||||
password = PasswordField('Mot de passe', validators=[InputRequired(), Length(min=6)])
|
||||
|
||||
class ContactForm(Form):
|
||||
name = StringField('Nom', validators=[InputRequired(), Length(min=1, max=255)],
|
||||
filters=[strip_filter])
|
||||
email = StringField('Email', validators=[InputRequired(), Length(min=1, max=255), Email()],
|
||||
filters=[strip_filter])
|
||||
comments = TextAreaField('Message', validators=[InputRequired(), Length(min=1)],
|
||||
filters=[strip_filter])
|
||||
|
||||
@@ -31,7 +31,7 @@ class BlogRecordService(object):
|
||||
@classmethod
|
||||
def get_last_five(cls, request):
|
||||
# gest the last 5 items modified
|
||||
query = request.dbsession.query(BlogRecord)
|
||||
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != 'ADM')
|
||||
query = query.order_by(sa.desc(BlogRecord.edited)).limit(5).all()
|
||||
return query
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
<img src="{{ request.static_url('cao_blogr:static/ni-su.jpg') }}" class="img-circle person" alt="Médiation Sunyata" width="255" height="255">
|
||||
</a>
|
||||
<p><b>La Méditation SUNYATA</p></b>
|
||||
<p>développée par le maître zen Thích Thông Triệt, combine les enseignements essentiels du <b>processus de réalisation et d'illumination du Bouddha</b>, les <b>pratiques des 3 traditions du bouddhisme</b> (Theravāda, Mahayana, le Zen), et les <b>découvertes de la neuro-sciences</b>.</p>
|
||||
<p>développée par le maître zen Thích Thông Triệt, combine les enseignements essentiels du <b>processus de réalisation et d'illumination du Bouddha</b>, les <b>pratiques des 3 traditions du bouddhisme</b> (Theravāda, Mahayana et Zen), et les <b>découvertes de la neuro-sciences</b>.</p>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a href="#demo2">
|
||||
@@ -169,7 +169,6 @@
|
||||
<div id="contact">
|
||||
<br >
|
||||
<h2 class="text-center">CONTACT</h2>
|
||||
<p class="text-center"><em>Laissez nous un message!</em></p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
@@ -179,21 +178,22 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-xs-8">
|
||||
<p><em>Laissez nous un message!</em></p>
|
||||
<div class="row">
|
||||
<form action="{{ request.route_url('home') }}" method="POST" class="form">
|
||||
<div class="col-xs-6 form-group">
|
||||
<input class="form-control" id="name" name="name" placeholder="Nom et prénom" type="text" required>
|
||||
<input class="form-control" id="name" name="name" placeholder="Nom et prénom" required
|
||||
type="text" value="{{name}}">
|
||||
</div>
|
||||
<div class="col-xs-6 form-group">
|
||||
<input class="form-control" id="email" name="email" placeholder="Email" type="email" required>
|
||||
<input class="form-control" id="email" name="email" placeholder="Email" required
|
||||
type="email" value="{{email}} ">
|
||||
</div>
|
||||
</div>
|
||||
<textarea class="form-control" id="comments" name="comments" placeholder="Message" rows="5"></textarea>
|
||||
<textarea class="form-control" id="comments" name="comments" placeholder="Message" required rows="5"></textarea>
|
||||
<br>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 form-group">
|
||||
<button class="btn pull-right" type="submit">Envoyer</button>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted">Envoyer</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
from pyramid.view import view_config
|
||||
from pyramid.httpexceptions import HTTPFound
|
||||
from pyramid.security import remember, forget
|
||||
from pyramid_mailer.message import Message
|
||||
|
||||
from ..services.user import UserService
|
||||
from ..services.blog_record import BlogRecordService
|
||||
from ..forms import UserCreateForm
|
||||
from ..forms import UserCreateForm, ContactForm
|
||||
from ..models.user import User
|
||||
|
||||
|
||||
@@ -22,14 +24,46 @@ def home(request):
|
||||
dir + '/S18.jpg',
|
||||
dir + '/S21.jpg',
|
||||
dir + '/S25.jpg']
|
||||
page = int(request.params.get('page', 1))
|
||||
|
||||
# get the 5 last modified posts
|
||||
last_five = BlogRecordService.get_last_five(request)
|
||||
name = ''
|
||||
email = ''
|
||||
comments = ''
|
||||
|
||||
if 'form.submitted' in request.params :
|
||||
name = request.params['name']
|
||||
email = request.params['email']
|
||||
comments = request.params['comments']
|
||||
|
||||
body = """
|
||||
Bonjour,
|
||||
|
||||
L' expéditeur : {0} ( {1} )
|
||||
a envoyé le message suivant du site "meditation-sunyata.paris"
|
||||
----- Début du message -----
|
||||
{2}
|
||||
----- Fin du message -----
|
||||
|
||||
Le site "meditation-sunyata.paris"
|
||||
|
||||
""".format(name, email, comments)
|
||||
|
||||
message = Message(subject="[MSParis] Message de contact",
|
||||
sender=request.registry.settings['cao_blogr.admin_email'],
|
||||
body=body)
|
||||
message.add_recipient('phuoc@caotek.fr')
|
||||
mailer = request.registry['mailer']
|
||||
mailer.send_immediately(message)
|
||||
message = "Votre message a bien été envoyé au webmestre. Merci de votre intérêt pour notre site"
|
||||
|
||||
return {
|
||||
'page_title': "",
|
||||
'last_five': last_five,
|
||||
'car_images': car_images,
|
||||
'name': name,
|
||||
'email': email,
|
||||
'comments': comments,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,11 @@ pyramid.includes =
|
||||
|
||||
sqlalchemy.url = sqlite:///%(here)s/cao_blogr.sqlite
|
||||
|
||||
cao_blogr.admin_email = cao.thien-phuoc@orange.fr
|
||||
# Mailer configuration
|
||||
mail.host = smtp.orange.fr
|
||||
mail.port = 25
|
||||
|
||||
retry.attempts = 3
|
||||
|
||||
# By default, the toolbar only appears for clients from IP addresses
|
||||
|
||||
@@ -14,6 +14,11 @@ pyramid.default_locale_name = en
|
||||
|
||||
sqlalchemy.url = sqlite:///%(here)s/cao_blogr.sqlite
|
||||
|
||||
cao_blogr.admin_email = phuoc@caotek.fr
|
||||
# Mailer configuration
|
||||
mail.host = localhost
|
||||
mail.port = 25
|
||||
|
||||
retry.attempts = 3
|
||||
|
||||
[pshell]
|
||||
|
||||
3
setup.py
3
setup.py
@@ -15,6 +15,7 @@ requires = [
|
||||
'pyramid_debugtoolbar',
|
||||
'waitress',
|
||||
'alembic',
|
||||
'pyramid_mailer',
|
||||
'pyramid_retry',
|
||||
'pyramid_tm',
|
||||
'SQLAlchemy',
|
||||
@@ -22,8 +23,6 @@ requires = [
|
||||
'zope.sqlalchemy',
|
||||
'wtforms==2.2.1', # form library
|
||||
'webhelpers2==2.0', # various web building related helpers
|
||||
'paginate==0.5.6', # pagination helpers
|
||||
'paginate_sqlalchemy==0.3.0',
|
||||
'passlib',
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user