Mercurial > mozilla > hg > licenser
diff licenser/web.py @ 27:7e0c931a201d
web licenser now works
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 25 Nov 2011 00:57:38 -0800 |
parents | 0faf3e7b593a |
children | eb3749dbdbf5 |
line wrap: on
line diff
--- a/licenser/web.py Fri Nov 25 00:08:34 2011 -0800 +++ b/licenser/web.py Fri Nov 25 00:57:38 2011 -0800 @@ -6,11 +6,12 @@ import licenses import tempfile +from StringIO import StringIO from webob import Request, Response, exc class Handler(object): - required = set(['name', 'email', 'url']) + required = set(['author', 'email', 'url']) template = """<html> <head><title>MPL licenser</title></head> @@ -20,13 +21,14 @@ <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 enter your name: <input type="text" name="author" value="%(author)s"/></p> <p>and email: <input type="text" name="email" value="%(email)s"/></p> <input type="submit"/> </body> </html>""" def __init__(self, **kw): + self.license = licenses.MPL() self.methods = {'GET': self.GET, 'POST': self.POST} @@ -58,16 +60,42 @@ return Response(content_type='text/html', body=(self.template % variables)) def POST(self, request): - pass + variables = dict([(i, request.params[i]) + for i in self.required + if i in request.params]) + if 'file' in request.POST and hasattr(request.POST['file'], 'filename'): + body = request.POST['file'].file.getvalue() + filename = request.POST['file'].filename + elif 'url' in request.POST: + try: + pass + except: + return self.render(**variables) + if not set(['author', 'email']).issubset(request.params): + return self.render(**variables) + author = request.params['author'] + email = request.params['email'] + retval = self.interpolate(filename, body, author, email) + return Response(content_type='text/plain', body=retval) - def interpolate(self, filename, body, name, email): - fd, tf = tempfile.mkstemp() - try: - os.write(fd, body) - os.close(fd) - finally: - os.remove(tf) + def interpolate(self, filename, body, author, email): + buffer = StringIO() + buffer.write(body) + value = buffer.getvalue().splitlines() + if self.license.has_license(buffer): + return body + filetype = self.license.filetype(filename) + if not filetype: + return body + variables = self.license.obtain_variables(author=author, email=email) + license = self.license.interpolate_license(**variables) + value = [i + '\r\n' for i in value] + filetype._lines = value + buffer = StringIO() + filetype.filename = buffer + filetype(license) + return buffer.getvalue() if __name__ == '__main__': from wsgiref import simple_server