resources.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from functools import wraps
  2. from flask import request
  3. from flask_restful import Resource, abort, reqparse
  4. from itsdangerous import Signer, BadSignature
  5. from nova import db, models, logic
  6. def get_user():
  7. uid = int(request.args['token'].split('.')[0])
  8. return db.session.query(models.User).filter(models.User.id == uid).first()
  9. def authenticate(func):
  10. @wraps(func)
  11. def wrapper(*args, **kwargs):
  12. if logic.check_token(request.args['token']):
  13. return func(*args, **kwargs)
  14. return wrapper
  15. class Datasets(Resource):
  16. method_decorators = [authenticate]
  17. def get(self):
  18. user = get_user()
  19. return [dict(name=d.name, id=d.id) for d in
  20. db.session.query(models.Dataset).\
  21. filter(models.Access.user == user).\
  22. all()]
  23. def post(self):
  24. parser = reqparse.RequestParser()
  25. parser.add_argument('name', type=str, help="Dataset name")
  26. args = parser.parse_args()
  27. user = get_user()
  28. dataset = logic.create_dataset(args.name, user)
  29. return dict(id=dataset.id)
  30. class Dataset(Resource):
  31. method_decorators = [authenticate]
  32. def get(self, dataset_id):
  33. user = get_user()
  34. dataset = db.session.query(models.Dataset).\
  35. filter(models.Access.user == user).\
  36. filter(models.Dataset.id == dataset_id).\
  37. first()
  38. return dict(name=dataset.name)