def startServer(notebook_to_use=None, open_browser=False, debug_mode=False): #notebook_directory = os.path.join(DOT_SAGENB, "sage_notebook.sagenb") #Setup the notebook. if notebook_to_use is None: #We assume the notebook is empty. notebook_to_use = notebook.load_notebook(notebook_directory) notebook_to_use.user_manager().add_user('admin', 'admin','*****@*****.**',force=True) notebook_to_use.save() #Write out changes to disk. notebook_directory = notebook_to_use._dir #Setup the flask app. opts={} opts['startup_token'] = '{0:x}'.format(random.randint(0, 2**128)) startup_token = opts['startup_token'] flask_base.notebook = notebook_to_use #create_app will now use notebook_to_use instead of the provided location. flask_app = flask_base.create_app(interface="localhost", port=8081,secure=False, **opts) sagenb_pid = os.path.join(notebook_directory, "sagenb.pid") with open(sagenb_pid, 'w') as pidfile: pidfile.write(str(os.getpid())) #What does this block even do? import logging logger=logging.getLogger('werkzeug') logger.setLevel(logging.WARNING) #logger.setLevel(logging.INFO) # to see page requests #logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler()) port = find_next_available_port('localhost', GURU_PORT) notebook_to_use.port = port #MAKE THIS HAPPEN IN flask_base: g.username = session['username'] = '******' if open_browser: from sagenb.misc.misc import open_page open_page('localhost', port, False, '/?startup_token=%s' % startup_token) try: if debug_mode: flask_app.run(host='localhost', port=port, threaded=True, ssl_context=None, debug=True, use_reloader=False) else: flask_app.run(host='localhost', port=port, threaded=True, ssl_context=None, debug=False) finally: #save_notebook(flask_base.notebook) os.unlink(sagenb_pid)
def create_app(path_to_notebook, *args, **kwds): """ This is the main method to create a running notebook. This is called from the process spawned in run_notebook.py """ global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.MATHJAX = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_version', startup_token=startup_token, template_folder=TEMPLATE_PATH) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True @app.before_request def set_notebook_object(): g.notebook = notebook #################################### # create Babel translation manager # #################################### babel = Babel(app, default_locale='en_US') #Check if saved default language exists. If not fallback to default @app.before_first_request def check_default_lang(): def_lang = notebook.conf()['default_language'] trans_ids = [str(trans) for trans in babel.list_translations()] if def_lang not in trans_ids: notebook.conf()['default_language'] = None #register callback function for locale selection #this function must be modified to add per user language support @babel.localeselector def get_locale(): return g.notebook.conf()['default_language'] ######################## # Register the modules # ######################## app.register_blueprint(base) from .worksheet_listing import worksheet_listing app.register_blueprint(worksheet_listing) from .admin import admin app.register_blueprint(admin) from .authentication import authentication app.register_blueprint(authentication) from .doc import doc app.register_blueprint(doc) from .worksheet import ws as worksheet app.register_blueprint(worksheet) from .settings import settings app.register_blueprint(settings) # Handles all uncaught exceptions by sending an e-mail to the # administrator(s) and displaying an error page. @app.errorhandler(Exception) def log_exception(error): from sagenb.notebook.notification import logger logger.exception(error) return app.message(gettext('''500: Internal server error.'''), username=getattr(g, 'username', 'guest')), 500 #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick #TODO: Check to see if autoindex 0.4 works with modules idx = AutoIndex(app, browse_root=SRC, add_url_rules=False) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read().decode('utf-8', 'ignore')) if (os.path.splitext(filename)[1] in ['.py', '.c', '.cc', '.h', '.hh', '.pyx', '.pxd']): return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username=g.username) return src return idx.render_autoindex(path) return app
def create_app(path_to_notebook, *args, **kwds): """ This is the main method to create a running notebook. This is called from the process spawned in run_notebook.py """ global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.MATHJAX = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_server', startup_token=startup_token) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True @app.before_request def set_notebook_object(): g.notebook = notebook #################################### # create Babel translation manager # #################################### babel = Babel(app, default_locale=notebook.conf()['default_language'], default_timezone='UTC', date_formats=None, configure_jinja=True) ######################## # Register the modules # ######################## app.register_blueprint(base) from worksheet_listing import worksheet_listing app.register_blueprint(worksheet_listing) from admin import admin app.register_blueprint(admin) from authentication import authentication app.register_blueprint(authentication) from doc import doc app.register_blueprint(doc) from worksheet import ws as worksheet app.register_blueprint(worksheet) from settings import settings app.register_blueprint(settings) #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick #TODO: Check to see if autoindex 0.4 works with modules idx = AutoIndex(app, browse_root=SRC, add_url_rules=False) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read().decode('utf-8','ignore')) if (os.path.splitext(filename)[1] in ['.py','.c','.cc','.h','.hh','.pyx','.pxd']): return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username = g.username) return src return idx.render_autoindex(path) return app
def create_app(path_to_notebook, *args, **kwds): """ This is the main method to create a running notebook. This is called from the process spawned in run_notebook.py """ global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.MATHJAX = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_version', startup_token=startup_token) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True @app.before_request def set_notebook_object(): g.notebook = notebook #################################### # create Babel translation manager # #################################### babel = Babel(app, default_locale=notebook.conf()['default_language'], default_timezone='UTC', date_formats=None, configure_jinja=True) ######################## # Register the modules # ######################## app.register_blueprint(base) from worksheet_listing import worksheet_listing app.register_blueprint(worksheet_listing) from admin import admin app.register_blueprint(admin) from authentication import authentication app.register_blueprint(authentication) from doc import doc app.register_blueprint(doc) from worksheet import ws as worksheet app.register_blueprint(worksheet) from settings import settings app.register_blueprint(settings) #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick #TODO: Check to see if autoindex 0.4 works with modules idx = AutoIndex(app, browse_root=SRC, add_url_rules=False) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read().decode('utf-8','ignore')) if (os.path.splitext(filename)[1] in ['.py','.c','.cc','.h','.hh','.pyx','.pxd']): return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username = g.username) return src return idx.render_autoindex(path) return app
def create_app(path_to_notebook, *args, **kwds): """ This is the main method to create a running notebook. This is called from the process spawned in run_notebook.py """ global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.MATHJAX = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_version', startup_token=startup_token, template_folder=TEMPLATE_PATH) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True @app.before_request def set_notebook_object(): g.notebook = notebook #################################### # create Babel translation manager # #################################### babel = Babel(app, default_locale='zh_CN') #Check if saved default language exists. If not fallback to default @app.before_first_request def check_default_lang(): def_lang = notebook.conf()['default_language'] trans_ids = [str(trans) for trans in babel.list_translations()] if def_lang not in trans_ids: notebook.conf()['default_language'] = None #register callback function for locale selection #this function must be modified to add per user language support @babel.localeselector def get_locale(): return g.notebook.conf()['default_language'] ######################## # Register the modules # ######################## app.register_blueprint(base) from .worksheet_listing import worksheet_listing app.register_blueprint(worksheet_listing) from .admin import admin app.register_blueprint(admin) from .authentication import authentication app.register_blueprint(authentication) from .doc import doc app.register_blueprint(doc) from .worksheet import ws as worksheet app.register_blueprint(worksheet) from .settings import settings app.register_blueprint(settings) # Handles all uncaught exceptions by sending an e-mail to the # administrator(s) and displaying an error page. @app.errorhandler(Exception) def log_exception(error): from sagenb.notebook.notification import logger logger.exception(error) return app.message( gettext('''500: Internal server error.'''), username=getattr(g, 'username', 'guest')), 500 #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick #TODO: Check to see if autoindex 0.4 works with modules idx = AutoIndex(app, browse_root=SRC, add_url_rules=False) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read().decode('utf-8','ignore')) if (os.path.splitext(filename)[1] in ['.py','.c','.cc','.h','.hh','.pyx','.pxd']): return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username = g.username) return src return idx.render_autoindex(path) return app
#!/usr/bin/sage from sage.misc.misc import DOT_SAGE from sagenb.notebook import notebook directory = DOT_SAGE+'sage_notebook' nb = notebook.load_notebook(directory) nb.user_manager().add_user('admin', 'jovyan', '', force=True) nb.save()
from sagenb.notebook.notebook import load_notebook nb = load_notebook("/") user_manager = nb.user_manager() user_manager.set_accounts(True) user_manager.add_user("admin", "password", "*****@*****.**", "user") nb.save()
def create_app(path_to_notebook, *args, **kwds): """ This is the main method to create a running notebook. This is called from the process spawned in run_notebook.py """ global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.MATHJAX = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_version', startup_token=startup_token) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True # connect to database database_path = os.path.join(path_to_notebook, 'chat_history.db') from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///'+database_path, convert_unicode=True) Session = sessionmaker(bind=engine) sess = Session() # initialize database if necessary from sqlalchemy.engine.reflection import Inspector inspector = Inspector.from_engine(engine) if "chatlog" not in inspector.get_table_names(): import models models.init_db(engine) @app.before_request def set_notebook_object(): g.notebook = notebook g.db = sess # ist leider nicht aussagekraeftig (immer True): g.pokal_debug_mode = current_app.debug #################################### # create Babel translation manager # #################################### babel = Babel(app, default_locale=notebook.conf()['default_language'], default_timezone='UTC', date_formats=None, configure_jinja=True) ######################## # Register the modules # ######################## app.register_blueprint(base) from worksheet_listing import worksheet_listing app.register_blueprint(worksheet_listing) from admin import admin app.register_blueprint(admin) from authentication import authentication app.register_blueprint(authentication) from doc import doc app.register_blueprint(doc) from worksheet import ws as worksheet app.register_blueprint(worksheet) from settings import settings app.register_blueprint(settings) #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick #TODO: Check to see if autoindex 0.4 works with modules idx = AutoIndex(app, browse_root=SRC, add_url_rules=False) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read().decode('utf-8','ignore')) if (os.path.splitext(filename)[1] in ['.py','.c','.cc','.h','.hh','.pyx','.pxd']): return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username = g.username) return src return idx.render_autoindex(path) return app
def create_app(path_to_notebook, *args, **kwds): global notebook startup_token = kwds.pop('startup_token', None) ############# # OLD STUFF # ############# import sagenb.notebook.notebook as notebook notebook.JSMATH = True notebook = notebook.load_notebook(path_to_notebook, *args, **kwds) init_updates() ############## # Create app # ############## app = SageNBFlask('flask_version', startup_token=startup_token) app.secret_key = os.urandom(24) oid.init_app(app) app.debug = True @app.before_request def set_notebook_object(): g.notebook = notebook ######################## # Register the modules # ######################## app.register_module(base) from worksheet_listing import worksheet_listing app.register_module(worksheet_listing) from admin import admin app.register_module(admin) from authentication import authentication app.register_module(authentication) from doc import doc app.register_module(doc) from worksheet import ws as worksheet app.register_module(worksheet) from settings import settings app.register_module(settings) #autoindex v0.3 doesnt seem to work with modules #routing with app directly does the trick idx = AutoIndex(app, browse_root=SRC) @app.route('/src/') @app.route('/src/<path:path>') @guest_or_login_required def autoindex(path='.'): filename = os.path.join(SRC, path) if os.path.isfile(filename): from cgi import escape src = escape(open(filename).read()) return render_template(os.path.join('html', 'source_code.html'), src_filename=path, src=src, username = g.username) return idx.render_autoindex(path) return app