#!/usr/bin/python

import sys
{{if sitedir}}
sys.path.append('{{sitedir}}')
{{endif}}
# Use an absolute path, since the webroot dir is to get moved around
projectroot='{{projectroot}}'
sys.path.append(projectroot)

#__requires__='{{project}}'
import pkg_resources
#pkg_resources.require('{{project}}')

restart_file = __file__
email_to = '{{username}}@mit.edu'
smtp_server = 'localhost'
error_email_from = '{{username}}+bazki@mit.edu'
error_subject_prefix = 'Low-level {{project}} Error: '
error_message = ("An internal server error has occurred.  Email has been sent "
 "to %s; we'll fix this as soon as possible." % email_to)

# Deploy it using FastCGI
if __name__ == '__main__':
    from bazjunk.fcgi import RestartingServer
    from bazjunk.middleware.email import EmailErrors
    from bazjunk.middleware.cgitb import CgitbMiddleware
    try:
        # Load the WSGI application from the config file
        from paste.deploy import loadapp
        wsgi_app = loadapp('config:%s/development.ini'%projectroot)

        wsgi_app = EmailErrors(wsgi_app,
                               to_addr=email_to,
                               smtp_server=smtp_server,
                               from_addr=error_email_from,
                               subject_prefix=error_subject_prefix)
        wsgi_app = CgitbMiddleware(wsgi_app, lambda: error_message)
        
        RestartingServer(wsgi_app, restart_file).run()
    except Exception,e:
        from traceback import format_exception
        import sys, os
        tup = sys.exc_info()
        def errApp(environ, start_response):
            start_response('500 Flup Error', [('Content-Type', 'text/plain')],
                           tup)
            
            for l in format_exception(*tup):
                yield l
            yield "To restart: touch %s\n" % os.path.abspath(restart_file)
        RestartingServer(errApp,restart_file).run()
