from flask import make_response, abort from flask.views import View, request from pycs import db from pycs.database.File import File from pycs.database.Result import Result from pycs.frontend.notifications.NotificationManager import NotificationManager class ResetResults(View): """ removes all results from a given file """ # pylint: disable=arguments-differ methods = ['POST'] def dispatch_request(self, file_id: int): # extract request data data = request.get_json(force=True) if not data.get('reset', False): abort(400) # find file file = File.query.get(file_id) if file is None: return abort(404) # get results results = file.results.all() # start transaction removed = [] with db.session.begin_nested(): for result in results: removed.append(result.serialize()) result.remove() for result in removed: NotificationManager.removed("result", result, Result) return make_response()