def get_inactive_users_jobs(queue='quaterly'):
"""Return a list of inactive users that have contributed to a project."""
from sqlalchemy.sql import text
from pybossa.model.user import User
from pybossa.core import db
# First users that have participated once but more than 3 months ago
sql = text('''SELECT user_id FROM task_run
WHERE user_id IS NOT NULL
AND to_date(task_run.finish_time, 'YYYY-MM-DD\THH24:MI:SS.US')
>= NOW() - '12 month'::INTERVAL
AND to_date(task_run.finish_time, 'YYYY-MM-DD\THH24:MI:SS.US')
< NOW() - '3 month'::INTERVAL
GROUP BY user_id ORDER BY user_id;''')
results = db.slave_session.execute(sql)
timeout = current_app.config.get('TIMEOUT')
for row in results:
user = User.query.get(row.user_id)
if user.subscribed:
subject = "We miss you!"
body = render_template('/account/email/inactive.md',
user=user.dictize(),
config=current_app.config)
html = render_template('/account/email/inactive.html',
user=user.dictize(),
config=current_app.config)
mail_dict = dict(recipients=[user.email_addr],
subject=subject,
body=body,
html=html)
job = dict(name=send_mail,
args=[mail_dict],
kwargs={},
timeout=timeout,
queue=queue)
yield job
评论列表
文章目录