61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
import cherrypy
|
|
|
|
from Scheduler import Scheduler
|
|
from Expose import expose
|
|
from Validate import validate
|
|
from Async import async
|
|
from Notebooks import Notebooks
|
|
from Users import Users
|
|
from Updater import update_client, wait_for_update
|
|
from view.Main_page import Main_page
|
|
from view.Json import Json
|
|
from view.Error_page import Error_page
|
|
from view.Not_found_page import Not_found_page
|
|
|
|
|
|
class Root( object ):
|
|
def __init__( self, scheduler, database ):
|
|
self.__scheduler = scheduler
|
|
self.__database = database
|
|
self.__notebooks = Notebooks( scheduler, database )
|
|
self.__users = Users( scheduler, database )
|
|
|
|
@expose( view = Main_page )
|
|
def index( self ):
|
|
"""
|
|
Provide the information necessary to display the web site's front page.
|
|
"""
|
|
return dict()
|
|
|
|
@expose( view = Json )
|
|
@wait_for_update
|
|
@async
|
|
@update_client
|
|
def next_id( self ):
|
|
self.__database.next_id( self.__scheduler.thread )
|
|
next_id = ( yield Scheduler.SLEEP )
|
|
|
|
yield dict(
|
|
next_id = next_id,
|
|
)
|
|
|
|
def _cp_on_http_error( self, status, message ):
|
|
"""
|
|
CherryPy HTTP error handler, used to display page not found and generic error pages.
|
|
"""
|
|
if status == 404:
|
|
cherrypy.response.headerMap[ u"Status" ] = u"404 Not Found"
|
|
cherrypy.response.status = status
|
|
cherrypy.response.body = [ unicode( Not_found_page() ) ]
|
|
return
|
|
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
cherrypy.response.body = [ unicode( Error_page() ) ]
|
|
|
|
scheduler = property( lambda self: self.__scheduler )
|
|
database = property( lambda self: self.__database )
|
|
notebooks = property( lambda self: self.__notebooks )
|
|
users = property( lambda self: self.__users )
|