#!/usr/bin/python

import os
import sys

import cherrypy
import mako.template
import mako.lookup

import ridedb
import rideview

# XXX notes for frank:
# a) os.path.abspath around __file__;
# b) PageDir:render_page hard coded title of Status?


css_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "htdocs", "css")

cherrypy.server.socket_port = 8081

conf = {
        "/css":    { "tools.staticdir.on": True,
                     "tools.staticdir.dir": css_dir
                     },
        }

template_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "htdocs", "templates")
mylookup = mako.lookup.TemplateLookup(directories=[template_dir], 
                                      input_encoding="utf-8", output_encoding="utf-8")


class Root(object):
    @cherrypy.expose
    def index(self, *args, **kwargs):
        return self.render_page("index.mako")

    @cherrypy.expose
    def default(self, filename, *args, **kwargs):
        return self.render_page("index.mako")

    def render_page(self, filename, **kwargs):
        viewname = kwargs.get("view", "main")
        # XXX what if view lookup fails?
        view = rideview.view(db, viewname)

        tmpl = mylookup.get_template("%s" % (filename))
        cherrypy.response.headers["Content-Type"] += "; charset=utf-8"
        return tmpl.render(view=view)

class WWBC(Root):
    @cherrypy.expose
    def index(self, *args, **kwargs):
        return self.render_page("index.mako", view="wwbc")

    @cherrypy.expose
    def default(self, filename, *args, **kwargs):
        return self.render_page("index.mako", view="wwbc")


def build_pages():
    root = Root()
    root.wwbc = WWBC();
    return root


database_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "rides.sqlite")
db = ridedb.db(database_file)

root = build_pages()
app = cherrypy.tree.mount(root, "/", conf)
cherrypy.quickstart(root, config=conf)
