manage.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python2
  2. # MyServer
  3. import gevent.pywsgi
  4. from gevent import monkey; monkey.patch_all()
  5. import werkzeug.serving
  6. from werkzeug.debug import DebuggedApplication
  7. import os; os.environ.setdefault('FFDNISPDB_SETTINGS', '../settings_dev.py')
  8. from flask.ext.script import Shell, Server, Manager
  9. import ffdnispdb
  10. database_manager = Manager(usage=u'Perform database operations')
  11. @database_manager.command
  12. def create():
  13. "Initialize database, create tables"
  14. ffdnispdb.db.create_all()
  15. @database_manager.command
  16. def drop():
  17. "Drop existing tables"
  18. ffdnispdb.db.drop_all()
  19. index_manager = Manager(usage=u'Manage the Whoosh index')
  20. @index_manager.command
  21. def rebuild():
  22. "Rebuild the Whoosh index from SQL datatabase"
  23. from ffdnispdb.models import ISP, ISPWhoosh
  24. from whoosh import writing
  25. import shutil
  26. shutil.rmtree(ISPWhoosh.get_index_dir())
  27. idx=ISPWhoosh.get_index()
  28. with idx.writer() as writer:
  29. for isp in ISP.query.all():
  30. ISPWhoosh.update_document(writer, isp)
  31. writer.mergetype = writing.CLEAR
  32. writer.optimize = True
  33. class MyServer(Server):
  34. def handle(self, app, host, port, use_debugger, use_reloader,
  35. threaded, processes, passthrough_errors):
  36. if use_debugger:
  37. app=DebuggedApplication(app, evalex=True)
  38. ws = gevent.pywsgi.WSGIServer(('', 5000), app)
  39. ws.serve_forever()
  40. def shell_context():
  41. import ffdnispdb
  42. return ffdnispdb.__dict__
  43. manager = Manager(ffdnispdb.create_app)
  44. manager.add_command("runserver", Server())
  45. manager.add_command("shell", Shell(make_context=shell_context))
  46. manager.add_command("db", database_manager)
  47. manager.add_command("index", index_manager)
  48. if __name__ == "__main__":
  49. manager.run()