__init__.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import os
  2. import humanize
  3. from flask import Flask
  4. from flask_login import LoginManager, current_user
  5. from flask_sqlalchemy import SQLAlchemy
  6. from flask_migrate import Migrate
  7. from flask_admin import Admin
  8. from flask_admin.contrib.sqla import ModelView
  9. from flask_restful import Api
  10. from nova.fs import Filesystem
  11. __version__ = '0.1.0'
  12. app = Flask(__name__)
  13. app.secret_key = 'KU5bF1K4ZQdjHSg91bJGnAkStAeEDIAg'
  14. app.config['DEBUG'] = True
  15. app.config['NOVA_ROOT_PATH'] = '/home/matthias/tmp/nova'
  16. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(app.config['NOVA_ROOT_PATH'], 'nova.db')
  17. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  18. @app.template_filter('naturaltime')
  19. def naturaltime(t):
  20. return humanize.naturaltime(t)
  21. @app.template_filter('naturalsize')
  22. def naturalsize(s):
  23. return humanize.naturalsize(int(s))
  24. db = SQLAlchemy(app)
  25. login_manager = LoginManager(app)
  26. login_manager.login_view = 'login'
  27. fs = Filesystem(app)
  28. migrate = Migrate(app, db)
  29. from nova.models import User, Dataset, Access
  30. class AdminModelView(ModelView):
  31. def is_accessible(self):
  32. return current_user.is_authenticated and current_user.is_admin
  33. admin = Admin(app)
  34. admin.add_view(AdminModelView(User, db.session))
  35. admin.add_view(AdminModelView(Dataset, db.session))
  36. admin.add_view(AdminModelView(Access, db.session))
  37. from nova.resources import Datasets, Dataset
  38. errors = {
  39. 'BadSignature': {
  40. 'message': "Token signature could not be verified",
  41. 'status': 409,
  42. },
  43. }
  44. api = Api(app, errors=errors)
  45. api.add_resource(Datasets, '/api/datasets')
  46. api.add_resource(Dataset, '/api/datasets/<dataset_id>')
  47. import nova.views