ResetResults.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from flask import make_response, abort
  2. from flask.views import View, request
  3. from pycs import db
  4. from pycs.database.File import File
  5. from pycs.database.Result import Result
  6. from pycs.frontend.notifications.NotificationManager import NotificationManager
  7. class ResetResults(View):
  8. """
  9. removes all results from a given file
  10. """
  11. # pylint: disable=arguments-differ
  12. methods = ['POST']
  13. def dispatch_request(self, file_id: int):
  14. # extract request data
  15. data = request.get_json(force=True)
  16. if not data.get('reset', False):
  17. abort(400)
  18. # find file
  19. file = File.query.get(file_id)
  20. if file is None:
  21. return abort(404)
  22. # get results
  23. results = file.results.all()
  24. # start transaction
  25. removed = []
  26. with db.session.begin_nested():
  27. for result in results:
  28. removed.append(result.serialize())
  29. result.remove()
  30. for result in removed:
  31. NotificationManager.removed("result", result, Result)
  32. return make_response()