2007-07-16 20:22:38 +00:00
|
|
|
#!/usr/bin/python2.4
|
|
|
|
|
|
|
|
import os
|
|
|
|
import os.path
|
|
|
|
from controller.Database import Database
|
|
|
|
from controller.Scheduler import Scheduler
|
|
|
|
from model.Notebook import Notebook
|
|
|
|
from model.Read_only_notebook import Read_only_notebook
|
2007-07-17 01:21:31 +00:00
|
|
|
from model.Note import Note
|
2007-07-16 20:22:38 +00:00
|
|
|
from model.User import User
|
|
|
|
|
|
|
|
|
|
|
|
class Initializer( object ):
|
|
|
|
HTML_PATH = u"static/html"
|
2007-07-17 01:21:31 +00:00
|
|
|
ENTRY_FILES = [ # the second element of the tuple is whether to show the note on startup
|
2007-07-16 20:22:38 +00:00
|
|
|
( u"navigation.html", True ),
|
|
|
|
( u"about.html", True ),
|
|
|
|
( u"features.html", True ),
|
|
|
|
( u"take a tour.html", False ),
|
|
|
|
( u"try it out.html", False ),
|
|
|
|
( u"login.html", False ),
|
|
|
|
( u"password reset.html", False ),
|
|
|
|
( u"supported browsers.html", False ),
|
|
|
|
( u"advanced browser features.html", False ),
|
|
|
|
]
|
|
|
|
|
|
|
|
def __init__( self, scheduler, database ):
|
|
|
|
self.scheduler = scheduler
|
|
|
|
self.database = database
|
|
|
|
self.main_notebook = None
|
|
|
|
self.read_only_main_notebook = None
|
|
|
|
self.user_notebook = None
|
|
|
|
self.user = None
|
|
|
|
self.anonymous = None
|
|
|
|
|
|
|
|
threads = (
|
|
|
|
self.create_main_notebook(),
|
|
|
|
self.create_anonymous_user(),
|
|
|
|
self.create_user_notebook(),
|
|
|
|
self.create_user(),
|
|
|
|
)
|
|
|
|
|
|
|
|
for thread in threads:
|
|
|
|
self.scheduler.add( thread )
|
|
|
|
self.scheduler.wait_for( thread )
|
|
|
|
|
|
|
|
def create_main_notebook( self ):
|
2007-07-17 01:21:31 +00:00
|
|
|
# create the main notebook and all of its notes
|
2007-07-16 20:22:38 +00:00
|
|
|
self.database.next_id( self.scheduler.thread )
|
|
|
|
main_notebook_id = ( yield Scheduler.SLEEP )
|
2007-07-16 21:03:39 +00:00
|
|
|
self.main_notebook = Notebook( main_notebook_id, u"Luminotes" )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
|
|
|
for ( filename, startup ) in self.ENTRY_FILES:
|
|
|
|
full_filename = os.path.join( self.HTML_PATH, filename )
|
2007-07-31 22:53:57 +00:00
|
|
|
contents = file( full_filename ).read().replace( "%s", main_notebook_id )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
|
|
|
self.database.next_id( self.scheduler.thread )
|
2007-07-17 01:21:31 +00:00
|
|
|
note_id = ( yield Scheduler.SLEEP )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
2007-07-17 01:21:31 +00:00
|
|
|
note = Note( note_id, contents )
|
|
|
|
self.main_notebook.add_note( note )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
|
|
|
if startup:
|
2007-07-17 01:21:31 +00:00
|
|
|
self.main_notebook.add_startup_note( note )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
|
|
|
self.database.save( self.main_notebook )
|
|
|
|
|
|
|
|
# create the read-only view of the main notebook
|
|
|
|
self.database.next_id( self.scheduler.thread )
|
|
|
|
read_only_main_notebook_id = ( yield Scheduler.SLEEP )
|
|
|
|
self.read_only_main_notebook = Read_only_notebook( read_only_main_notebook_id, self.main_notebook )
|
|
|
|
self.database.save( self.read_only_main_notebook )
|
|
|
|
|
|
|
|
def create_anonymous_user( self ):
|
|
|
|
# create the anonymous user
|
|
|
|
self.database.next_id( self.scheduler.thread )
|
|
|
|
anonymous_user_id = ( yield Scheduler.SLEEP )
|
|
|
|
notebooks = [ self.read_only_main_notebook ]
|
|
|
|
self.anonymous = User( anonymous_user_id, u"anonymous", None, None, notebooks )
|
|
|
|
self.database.save( self.anonymous )
|
|
|
|
|
|
|
|
def create_user_notebook( self ):
|
2007-07-17 01:21:31 +00:00
|
|
|
# create the user notebook along with a startup note
|
2007-07-16 20:22:38 +00:00
|
|
|
self.database.next_id( self.scheduler.thread )
|
|
|
|
user_notebook_id = ( yield Scheduler.SLEEP )
|
|
|
|
self.user_notebook = Notebook( user_notebook_id, u"my notebook" )
|
|
|
|
|
|
|
|
self.database.next_id( self.scheduler.thread )
|
2007-07-17 01:21:31 +00:00
|
|
|
note_id = ( yield Scheduler.SLEEP )
|
|
|
|
note = Note( note_id, u"<h3>" )
|
|
|
|
self.user_notebook.add_note( note )
|
|
|
|
self.user_notebook.add_startup_note( note )
|
2007-07-16 20:22:38 +00:00
|
|
|
|
|
|
|
self.database.save( self.user_notebook )
|
|
|
|
|
|
|
|
def create_user( self ):
|
|
|
|
# create the user
|
|
|
|
self.database.next_id( self.scheduler.thread )
|
|
|
|
user_id = ( yield Scheduler.SLEEP )
|
|
|
|
notebooks = [ self.user_notebook ]
|
|
|
|
self.user = User( user_id, u"witten", u"dev", u"witten@torsion.org", notebooks )
|
|
|
|
|
|
|
|
self.database.save( self.user )
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
if os.path.exists( "data.db" ):
|
|
|
|
os.remove( "data.db" )
|
|
|
|
|
|
|
|
scheduler = Scheduler()
|
|
|
|
database = Database( scheduler, "data.db" )
|
|
|
|
initializer = Initializer( scheduler, database )
|
|
|
|
scheduler.wait_until_idle()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|