|
@@ -0,0 +1,69 @@
|
|
|
+#!/usr/bin/env python2
|
|
|
+
|
|
|
+# MyServer
|
|
|
+import gevent.pywsgi
|
|
|
+from gevent import monkey; monkey.patch_all()
|
|
|
+import werkzeug.serving
|
|
|
+from werkzeug.debug import DebuggedApplication
|
|
|
+
|
|
|
+import os; os.environ.setdefault('FFDNISPDB_SETTINGS', '../settings_dev.py')
|
|
|
+from flask.ext.script import Shell, Server, Manager
|
|
|
+import ffdnispdb
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+database_manager = Manager(usage=u'Perform database operations')
|
|
|
+
|
|
|
+@database_manager.command
|
|
|
+def create():
|
|
|
+ "Initialize database, create tables"
|
|
|
+ ffdnispdb.db.create_all()
|
|
|
+
|
|
|
+
|
|
|
+@database_manager.command
|
|
|
+def drop():
|
|
|
+ "Drop existing tables"
|
|
|
+ ffdnispdb.db.drop_all()
|
|
|
+
|
|
|
+
|
|
|
+index_manager = Manager(usage=u'Manage the Whoosh index')
|
|
|
+
|
|
|
+@index_manager.command
|
|
|
+def rebuild():
|
|
|
+ "Rebuild the Whoosh index from SQL datatabase"
|
|
|
+ from ffdnispdb.models import ISP, ISPWhoosh
|
|
|
+ from whoosh import writing
|
|
|
+ import shutil
|
|
|
+
|
|
|
+ shutil.rmtree(ISPWhoosh.get_index_dir())
|
|
|
+ idx=ISPWhoosh.get_index()
|
|
|
+ with idx.writer() as writer:
|
|
|
+ for isp in ISP.query.all():
|
|
|
+ ISPWhoosh.update_document(writer, isp)
|
|
|
+
|
|
|
+ writer.mergetype = writing.CLEAR
|
|
|
+ writer.optimize = True
|
|
|
+
|
|
|
+
|
|
|
+class MyServer(Server):
|
|
|
+ def handle(self, app, host, port, use_debugger, use_reloader,
|
|
|
+ threaded, processes, passthrough_errors):
|
|
|
+ if use_debugger:
|
|
|
+ app=DebuggedApplication(app, evalex=True)
|
|
|
+ ws = gevent.pywsgi.WSGIServer(('', 5000), app)
|
|
|
+ ws.serve_forever()
|
|
|
+
|
|
|
+
|
|
|
+def shell_context():
|
|
|
+ import ffdnispdb
|
|
|
+ return ffdnispdb.__dict__
|
|
|
+
|
|
|
+
|
|
|
+manager = Manager(ffdnispdb.create_app)
|
|
|
+manager.add_command("runserver", Server())
|
|
|
+manager.add_command("shell", Shell(make_context=shell_context))
|
|
|
+manager.add_command("db", database_manager)
|
|
|
+manager.add_command("index", index_manager)
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ manager.run()
|