87 lines
2.9 KiB
Python
Executable File
87 lines
2.9 KiB
Python
Executable File
#!/usr/bin/python2.4
|
|
|
|
import os
|
|
import os.path
|
|
from config.Common import settings
|
|
from controller.Database import Database
|
|
from model.Notebook import Notebook
|
|
from model.Note import Note
|
|
from model.User import User
|
|
from tools.initdb import fix_note_contents
|
|
|
|
|
|
class Updater( object ):
|
|
HTML_PATH = u"static/html"
|
|
NOTE_FILES = [ # the second element of the tuple is whether to show the note on startup
|
|
( u"about.html", True ),
|
|
( u"features.html", True ),
|
|
( u"sign up.html", False ),
|
|
( u"faq.html", False ),
|
|
( u"meet the team.html", False ),
|
|
( u"contact info.html", False ),
|
|
( u"login.html", False ),
|
|
( u"download.html", False ),
|
|
( u"password reset.html", False ),
|
|
( u"advanced browser features.html", False ),
|
|
( u"supported browsers.html", False ),
|
|
]
|
|
|
|
def __init__( self, database, navigation_note_id = None ):
|
|
self.database = database
|
|
self.navigation_note_id = navigation_note_id
|
|
|
|
self.update_main_notebook()
|
|
self.database.commit()
|
|
|
|
def update_main_notebook( self ):
|
|
anonymous = self.database.select_one( User, User.sql_load_by_username( u"anonymous" ) )
|
|
main_notebook = self.database.select_one( Notebook, anonymous.sql_load_notebooks() )
|
|
|
|
# get the id for each note
|
|
note_ids = {}
|
|
for ( filename, startup ) in self.NOTE_FILES:
|
|
title = filename.replace( u".html", u"" )
|
|
note = self.database.select_one( Note, main_notebook.sql_load_note_by_title( title ) )
|
|
|
|
if note is not None:
|
|
note_ids[ filename ] = note.object_id
|
|
|
|
# update the navigation note if its id was given
|
|
if self.navigation_note_id:
|
|
note = self.database.load( Note, self.navigation_note_id )
|
|
self.update_note( "navigation.html", True, main_notebook, note_ids, note )
|
|
|
|
# update all of the notes in the main notebook
|
|
for ( filename, startup ) in self.NOTE_FILES:
|
|
title = filename.replace( u".html", u"" )
|
|
note = self.database.select_one( Note, main_notebook.sql_load_note_by_title( title ) )
|
|
self.update_note( filename, startup, main_notebook, note_ids, note )
|
|
|
|
if main_notebook.name != u"Luminotes":
|
|
main_notebook.name = u"Luminotes"
|
|
self.database.save( main_notebook, commit = False )
|
|
|
|
def update_note( self, filename, startup, main_notebook, note_ids, note = None ):
|
|
full_filename = os.path.join( self.HTML_PATH, filename )
|
|
contents = fix_note_contents( file( full_filename ).read(), main_notebook.object_id, note_ids )
|
|
|
|
if note:
|
|
if note.contents == contents:
|
|
return
|
|
note.contents = contents
|
|
# if for some reason the note isn't present, create it
|
|
else:
|
|
next_id = self.database.next_id( Note )
|
|
note = Note.create( next_id, contents, notebook_id = main_notebook.object_id, startup = startup )
|
|
|
|
self.database.save( note, commit = False )
|
|
|
|
def main( args ):
|
|
database = Database()
|
|
initializer = Updater( database, args and args[ 0 ] or None )
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
main( sys.argv[ 1: ] )
|