78 lines
2.3 KiB
Python
Executable File
78 lines
2.3 KiB
Python
Executable File
#!/usr/bin/python2.4
|
|
|
|
import os
|
|
import os.path
|
|
from controller.Database import Database
|
|
from controller.Scheduler import Scheduler
|
|
from model.Entry import Entry
|
|
|
|
|
|
class Initializer( object ):
|
|
HTML_PATH = u"static/html"
|
|
ENTRY_FILES = [ # the second element of the tuple is whether to show the entry on startup
|
|
#( u"navigation.html", True ), # skip for now, since the navigtaion entry doesn't have a title
|
|
( 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
|
|
|
|
threads = (
|
|
self.update_main_notebook(),
|
|
)
|
|
|
|
for thread in threads:
|
|
self.scheduler.add( thread )
|
|
self.scheduler.wait_for( thread )
|
|
|
|
def update_main_notebook( self ):
|
|
self.database.load( u"anonymous", self.scheduler.thread )
|
|
anonymous = ( yield Scheduler.SLEEP )
|
|
main_notebook = anonymous.notebooks[ 0 ]._Read_only_notebook__wrapped
|
|
startup_entries = []
|
|
|
|
# update all of the entries in the main notebook
|
|
for ( filename, startup ) in self.ENTRY_FILES:
|
|
full_filename = os.path.join( self.HTML_PATH, filename )
|
|
contents = file( full_filename ).read()
|
|
|
|
title = filename.replace( u".html", u"" )
|
|
entry = main_notebook.lookup_entry_by_title( title )
|
|
|
|
if entry:
|
|
main_notebook.update_entry( entry, contents )
|
|
# if for some reason the entry isn't present, create it
|
|
else:
|
|
self.database.next_id( self.scheduler.thread )
|
|
entry_id = ( yield Scheduler.SLEEP )
|
|
entry = Entry( entry_id, contents )
|
|
main_notebook.add_entry( entry )
|
|
|
|
main_notebook.remove_startup_entry( entry )
|
|
if startup:
|
|
startup_entries.append( entry )
|
|
|
|
for entry in startup_entries:
|
|
main_notebook.add_startup_entry( entry )
|
|
|
|
self.database.save( main_notebook )
|
|
|
|
|
|
def main():
|
|
scheduler = Scheduler()
|
|
database = Database( scheduler, "data.db" )
|
|
initializer = Initializer( scheduler, database )
|
|
scheduler.wait_until_idle()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|