1
1

controller.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import json
  2. from bottle import request, response
  3. import model
  4. def missing_attributes(attributes):
  5. for attr in attributes:
  6. if attr not in request.json:
  7. return attr
  8. else:
  9. return False
  10. def login():
  11. missing = missing_attributes(['username', 'password'])
  12. if missing:
  13. return bad_request('Missing value for attribute ' + str(missing))
  14. username = request.json['username']
  15. password = request.json['password']
  16. session_id = model.login(username, password)
  17. if session_id:
  18. return {'session_id': session_id}
  19. else:
  20. return forbidden('Invalid login data')
  21. def register():
  22. missing = missing_attributes(['username', 'password'])
  23. if missing:
  24. return bad_request('Missing value for attribute ' + str(missing))
  25. username = request.json['username']
  26. password = request.json['password']
  27. if model.user_exists(username):
  28. return forbidden('User already exists.')
  29. if model.register(username, password):
  30. return {'message': "successfully registered user"}
  31. else:
  32. bad_request('registration not successful')
  33. def not_found(msg=None):
  34. response.status = 404
  35. response.content_type = 'application/json'
  36. if msg is None:
  37. return json.dumps({"error": "404: Page not found"})
  38. else:
  39. return json.dumps({"error": "404: Page not found: " + msg})
  40. def forbidden(msg=None):
  41. response.status = 403
  42. response.content_type = 'application/json'
  43. if msg is None:
  44. return json.dumps({"error": "403: Forbidden"})
  45. else:
  46. return json.dumps({"error": "403: Forbidden: " + msg})
  47. def bad_request(msg=None):
  48. response.status = 400
  49. response.content_type = 'application/json'
  50. if msg is None:
  51. return json.dumps({"error": "400: Bad request"})
  52. else:
  53. return json.dumps({"error": "400: Bad request: " + msg})