from flask import make_response, abort from flask.views import View, request from pycs import db from pycs.database.File import File from pycs.frontend.notifications.NotificationManager import NotificationManager class ResetResults(View): """ removes all results from a given file """ # pylint: disable=arguments-differ methods = ['POST'] def __init__(self, nm: NotificationManager): # pylint: disable=invalid-name self.nm = nm 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: self.nm.remove_result(result) return make_response()