resources.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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)
  39. def put(self, dataset_id):
  40. user = get_user()
  41. dataset = db.session.query(models.Dataset).\
  42. filter(models.Access.user == user).\
  43. filter(models.Dataset.id == dataset_id).\
  44. first()
  45. dataset.closed = request.form.get('closed', False)
  46. db.session.commit()