diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite index a8312d9..fe5e734 100644 Binary files a/cao_blogr.sqlite and b/cao_blogr.sqlite differ diff --git a/cao_blogr/__init__.py b/cao_blogr/__init__.py index 24c5693..2f3db3f 100644 --- a/cao_blogr/__init__.py +++ b/cao_blogr/__init__.py @@ -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') diff --git a/cao_blogr/forms.py b/cao_blogr/forms.py index dff66ba..6ff35cf 100644 --- a/cao_blogr/forms.py +++ b/cao_blogr/forms.py @@ -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]) diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py index ffb567a..d4e408f 100644 --- a/cao_blogr/services/blog_record.py +++ b/cao_blogr/services/blog_record.py @@ -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 diff --git a/cao_blogr/templates/home.jinja2 b/cao_blogr/templates/home.jinja2 index 1c487cb..7ef6756 100644 --- a/cao_blogr/templates/home.jinja2 +++ b/cao_blogr/templates/home.jinja2 @@ -78,7 +78,7 @@ Médiation Sunyata

La Méditation SUNYATA

-

développée par le maître zen Thích Thông Triệt, combine les enseignements essentiels du processus de réalisation et d'illumination du Bouddha, les pratiques des 3 traditions du bouddhisme (Theravāda, Mahayana, le Zen), et les découvertes de la neuro-sciences.

+

développée par le maître zen Thích Thông Triệt, combine les enseignements essentiels du processus de réalisation et d'illumination du Bouddha, les pratiques des 3 traditions du bouddhisme (Theravāda, Mahayana et Zen), et les découvertes de la neuro-sciences.

@@ -169,7 +169,6 @@

CONTACT

-

Laissez nous un message!

@@ -179,22 +178,23 @@

+

Laissez nous un message!

-
- -
-
- -
+
+
+ +
+
+ +
+
+ +
+ +
- -
-
-
- -
-
-
diff --git a/cao_blogr/views/default.py b/cao_blogr/views/default.py index 0e540a5..ba72209 100644 --- a/cao_blogr/views/default.py +++ b/cao_blogr/views/default.py @@ -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, } diff --git a/development.ini b/development.ini index 6f3803b..e761d77 100644 --- a/development.ini +++ b/development.ini @@ -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 diff --git a/production.ini b/production.ini index 5fbf1e4..af3c4f7 100644 --- a/production.ini +++ b/production.ini @@ -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] diff --git a/setup.py b/setup.py index bb81fa7..5d2306c 100644 --- a/setup.py +++ b/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', ]