1
0

resources.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 authenticate(func):
  7. @wraps(func)
  8. def wrapper(*args, **kwargs):
  9. if logic.check_token(request.args['token']):
  10. return func(*args, **kwargs)
  11. return wrapper
  12. class Datasets(Resource):
  13. method_decorators = [authenticate]
  14. def get(self):
  15. user = logic.get_user(request.args['token'])
  16. return [dict(name=d.name, id=d.id) for d in
  17. db.session.query(models.Dataset).\
  18. filter(models.Access.user == user).\
  19. all()]
  20. def post(self):
  21. parser = reqparse.RequestParser()
  22. parser.add_argument('name', type=str, help="Dataset name")
  23. parser.add_argument('parent', type=int, help="Dataset parent", default=None)
  24. args = parser.parse_args()
  25. user = logic.get_user(request.args['token'])
  26. dataset = logic.create_dataset(args.name, user, parent_id=args.parent)
  27. return dict(id=dataset.id)
  28. class Dataset(Resource):
  29. method_decorators = [authenticate]
  30. def get(self, dataset_id):
  31. user = logic.get_user(request.args['token'])
  32. dataset = db.session.query(models.Dataset).\
  33. filter(models.Access.user == user).\
  34. filter(models.Dataset.id == dataset_id).\
  35. first()
  36. return dataset.to_dict()
  37. def put(self, dataset_id):
  38. user = logic.get_user(request.args['token'])
  39. dataset = db.session.query(models.Dataset).\
  40. filter(models.Access.user == user).\
  41. filter(models.Dataset.id == dataset_id).\
  42. first()
  43. dataset.closed = request.form.get('closed', False)
  44. db.session.commit()