view licenser/web.py @ 26:0faf3e7b593a

more stubbing
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 25 Nov 2011 00:08:34 -0800
parents 8729685a2cf6
children 7e0c931a201d
line wrap: on
line source

#!/usr/bin/env python

"""
web handler for MPL licenser
"""

import licenses
import tempfile
from webob import Request, Response, exc

class Handler(object):

    required = set(['name', 'email', 'url'])

    template = """<html>
<head><title>MPL licenser</title></head>
<body>
<h1>MPL Licenser</h1>
<div><i>license your files with MPL. Currently works for files of type: %(filetypes)s</i></div>
<div><form method="POST" enctype="multipart/form-data">
<p>Enter a file: <input type="file" name="file"/></p>
<p>or a URL: <input type="text" name="url" value="%(url)s"/></p>
<p>And enter your name: <input type="text" name="name" value="%(name)s"/></p>
<p>and email: <input type="text" name="email" value="%(email)s"/></p>
<input type="submit"/>
</body>
</html>"""

    def __init__(self, **kw):
        self.methods = {'GET': self.GET,
                        'POST': self.POST}

    def __call__(self, environ, start_response):
        request = Request(environ)
        if request.method in self.methods:
            response = self.methods[request.method](request)
        else:
            response = exc.HTTPMethodNotAllowed()
        return response(environ, start_response)

    def GET(self, request):
        variables = {}
        for i in self.required:
            if i in request.GET:
                variables[i] = request.GET[i]
        if set(variables.keys()) == self.required:
            try:
                pass
            except:
                pass
        return self.render(**variables)

    def render(self, **variables):
        for i in self.required:
            if i not in variables:
                variables[i] = ''
        variables['filetypes'] = licenses.filetypes_string()
        return Response(content_type='text/html', body=(self.template % variables))

    def POST(self, request):
        pass

    def interpolate(self, filename, body, name, email):
        fd, tf = tempfile.mkstemp()
        try:
            os.write(fd, body)
            os.close(fd)
        finally:
            os.remove(tf)


if __name__ == '__main__':
    from wsgiref import simple_server
    app = Handler()
    server = simple_server.make_server(host='0.0.0.0', port=8080, app=app)
    server.serve_forever()