witten
/
luminotes
Archived
1
0
Fork 0
This repository has been archived on 2023-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
luminotes/controller/Root.py

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 )