From bae02def3a66fbc78a3567747bdcaf82f72cd0a6 Mon Sep 17 00:00:00 2001 From: tr4ck3ur Date: Tue, 14 Jul 2015 15:00:29 +0200 Subject: [PATCH] Added Automated send mail with tasks --- development.ini | 6 ++-- jm2l/__init__.py | 49 ++++++++++++++++++++++++-- jm2l/templates/jm2l.mako | 2 +- jm2l/templates/mail_html.mako | 64 +++++++++++++++++++++++++++++++++- jm2l/templates/mail_plain.mako | 51 +++++++++++++++++++++++++-- jm2l/views.py | 12 +++---- setup.py | 3 +- 7 files changed, 168 insertions(+), 19 deletions(-) diff --git a/development.ini b/development.ini index 39603b1..61308c2 100644 --- a/development.ini +++ b/development.ini @@ -51,16 +51,16 @@ keys = console keys = generic [logger_root] -level = INFO +level = WARN handlers = console [logger_jm2l] -level = DEBUG +level = WARN handlers = qualname = jm2l [logger_sqlalchemy] -level = DEBUG +level = WARN handlers = qualname = sqlalchemy.engine # "level = INFO" logs SQL queries. diff --git a/jm2l/__init__.py b/jm2l/__init__.py index cdb59d1..8fc3d9e 100644 --- a/jm2l/__init__.py +++ b/jm2l/__init__.py @@ -1,3 +1,4 @@ +# -*- coding: utf8 -*- from pyramid.authentication import AuthTktAuthenticationPolicy from pyramid.authorization import ACLAuthorizationPolicy from pyramid.config import Configurator @@ -9,14 +10,52 @@ from pyramid.renderers import render_to_response from .models import DBSession, get_user, get_sponsors, get_exposants from .security import EntryFactory, groupfinder from pyramid_mailer import mailer_factory_from_settings +from pyramid_mailer.message import Attachment, Message import locale - from .helpers import Sejour_helpers +from apscheduler.schedulers.background import BackgroundScheduler +# Database access imports +from pyramid.request import Request +from mako.template import Template +from .models import User +import logging def add_renderer_globals(event): event['mytrip'] = Sejour_helpers(event) +#@sched.scheduled_job('cron', day_of_week='sun', hour=22, minute=07) +def mailer_tasks(config): + # Send the Welcome Mail + mailer = config.registry['mailer'] + Contact = DBSession.query(User).filter(User.uid==1).one() + request = Request.blank('/', base_url='http://jm2l.linux-azur.org') + request.registry = config.registry + for StaffUser in DBSession.query(User).filter(User.Staff == True): + # Skip mail to contact + if StaffUser==Contact: + continue + # Skip those that have no task assigned + if len(filter(lambda k:not k.closed, StaffUser.task_assoc))==0: + continue + + # Prepare Plain Text Message : + Mail_template = Template(filename='jm2l/templates/mail_plain.mako') + mail_plain = Mail_template.render(request=request, User=StaffUser, Contact=Contact, action="Tasks") + print mail_plain + # Prepare HTML Message : + Mail_template = Template(filename='jm2l/templates/mail_html.mako') + mail_html = Mail_template.render(request=request, User=StaffUser, Contact=Contact, action="Tasks") + print mail_html + # Prepare Message + message = Message(subject="[JM2L] Rappel des Tâches pour les JM2L", + sender="contact@jm2l.linux-azur.org", + recipients=[StaffUser.mail], + body=mail_plain, html=mail_html) + + message.add_bcc("spam@style-python.fr") + mailer.send(message) + def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ @@ -35,8 +74,12 @@ def main(global_config, **settings): authentication_policy=authentication_policy, authorization_policy=authorization_policy ) - config.add_subscriber(add_renderer_globals, BeforeRender) + config.add_subscriber(add_renderer_globals, BeforeRender) config.registry['mailer'] = mailer_factory_from_settings(settings) + sched = BackgroundScheduler() + #sched.add_job(mailer_tasks, 'interval', minutes=1, args=[ config ]) + sched.add_job(mailer_tasks, 'cron', day_of_week='fri', hour=18, args=[ config ]) + sched.start() # start the scheduler config.add_renderer('json', JSON(indent=4)) config.add_renderer('jsonp', JSONP(param_name='callback')) config.set_session_factory(my_session_factory) @@ -53,7 +96,7 @@ def main(global_config, **settings): # ICal Routes config.add_route('progr_iCal', '/{year:\d+}/JM2L.ics') - + # JSON Routes config.add_route('users_json', '/json-users') config.add_route('tiers_json', '/json-tiers') diff --git a/jm2l/templates/jm2l.mako b/jm2l/templates/jm2l.mako index ef575ec..a88ce3a 100644 --- a/jm2l/templates/jm2l.mako +++ b/jm2l/templates/jm2l.mako @@ -79,7 +79,7 @@