view summitidp/easy.py @ 62:50297a64414c

Added locking.py for super non-grannular thread safety, and more tests.
author Atul Varma <avarma@mozilla.com>
date Tue, 29 Jun 2010 11:17:34 -0700
parents 818e16d3f262
children 09c95c2549f3
line wrap: on
line source

import os
import datetime
import json

from summitidp.app import Server, TokenStore, ProfileStore
from summitidp.file_storage import FileStorage
from summitidp.locking import synced_app

CHALLENGE_TOKEN_LIFETIME = datetime.timedelta(days=1)
AUTH_TOKEN_LIFETIME = None

def ensure_dirs(*paths):
    for path in paths:
        if not os.path.exists(path):
            os.mkdir(path)

def make_wsgi_app(storage_dir, send_email):
    emails_file = os.path.join(storage_dir, 'attendees.json')
    challenge_dir = os.path.join(storage_dir, 'challenge-tokens')
    auth_dir = os.path.join(storage_dir, 'auth-tokens')
    profile_dir = os.path.join(storage_dir, 'profiles')

    ensure_dirs(storage_dir, challenge_dir, auth_dir, profile_dir)

    server = Server(
        emails=json.loads(open(emails_file).read()),
        send_email=send_email,
        challenge_tokens=TokenStore(lifetime=CHALLENGE_TOKEN_LIFETIME,
                                    mapping=FileStorage(challenge_dir)),
        auth_tokens=TokenStore(lifetime=AUTH_TOKEN_LIFETIME,
                               mapping=FileStorage(auth_dir)),
        profiles=ProfileStore(FileStorage(profile_dir))
        )

    return synced_app(server.wsgi_app)