1
0
Fork 0
dchwww/site.py

59 lines
1.3 KiB
Python

from milla.dispatch import routing
from webob import acceptparse
import codecs
import jinja2
import milla
import os
import random
import yaml
OFFERS = [
'application/xhtml+xml',
'text/html',
]
try:
YamlLoader = yaml.CLoader
except AttributeError:
YamlLoader = yaml.Loader
env = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
)
songquotes = os.path.join(os.path.dirname(__file__), 'songquotes.yml')
with codecs.open(songquotes, 'r', encoding='utf-8') as f:
songquotes = yaml.load(f, Loader=YamlLoader)
def home(request):
response = request.ResponseClass()
accept = acceptparse.MIMEAccept(
request.accept.header_value.replace('*/*', '')
)
response.content_type = accept.best_match(OFFERS,
response.default_content_type)
tmpl = env.get_template('index.html')
response.text = tmpl.render(quote=random.choice(songquotes))
return response
router = routing.Router()
router.add_route('/', home)
application = milla.Application(router)
if __name__ == '__main__':
from wsgiref import simple_server
httpd = simple_server.make_server('', 8080, application)
try:
httpd.serve_forever()
except KeyboardInterrupt:
print('')
httpd.shutdown()
httpd.server_close()