#!/usr/bin/env python
"""
$URL: svn+ssh://svn.mems-exchange.org/repos/trunk/dulcinea/bin/expire_session.py $
$Id: expire_session.py 28926 2006-10-12 17:47:21Z dbinger $

Delete sessions whose access time is older than the age passed in as an
argument (in hours).

This script is meant to be run by cron.
"""

import sys, os
from datetime import timedelta
from dulcinea.common import get_publisher, get_connection, site_now

def main (prog, args):
    usage = "usage: %s [site] [expire time]" % prog

    if len(args) != 2:
        sys.exit(usage)

    site = os.environ['SITE'] = args[0]
    expiration_hours = float(args[1])

    sessions = get_publisher().get_sessions()
    cutoff = site_now() - timedelta(hours=expiration_hours)
    for key, session in sessions.items():
        if session.get_access_time() < cutoff:
            del sessions[key]
    get_connection().commit()

if __name__ == '__main__':
    main(sys.argv[0], sys.argv[1:])
