Created
December 10, 2010 10:07
-
-
Save lanior/736042 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from flup.server.fcgi import WSGIServer | |
import cgi | |
import urlparse | |
import traceback | |
from datetime import datetime | |
def process(request): | |
def parse_date(date): | |
try: | |
return datetime.strptime(date, '%d.%m.%y') | |
except ValueError: | |
return datetime.strptime(date, '%d.%m.%Y') | |
d1 = request.get('d1', '') | |
d2 = request.get('d2', '') | |
result = 'None' | |
if request.get('submit'): | |
try: | |
date1 = parse_date(d1) | |
date2 = parse_date(d2) | |
diff = abs((date1 - date2).days) | |
result = '1 day' if diff == 1 else '%d days' % (diff) | |
except ValueError: | |
result = 'Invalid dates' | |
return ''' | |
<!DOCTYPE html> | |
<p>Date format: dd.mm.YY or dd.mm.yyyy</p> | |
<form method="GET" action="/"> | |
<input name="d1" value="%s" /> | |
<input name="d2" value="%s" /> | |
<input name="submit" type="submit" /> | |
</form> | |
<p>Result: %s</p> | |
''' % (cgi.escape(d1, True), cgi.escape(d2, True), result) | |
class Request: | |
def __init__(self, environ): | |
self.params = urlparse.parse_qs(environ['QUERY_STRING']) | |
self.form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ) | |
def get(self, name, default=None): | |
return self.params[name][0] if name in self.params else default | |
def app(environ, start_response): | |
start_response('200 OK', [('Content-Type', 'text/html')]) | |
try: | |
request = Request(environ) | |
return process(request) | |
except: | |
return '<pre>%s</pre>' % (traceback.format_exc()) | |
WSGIServer(app, bindAddress=('localhost', 8000)).run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment