def test_delete_results_from_project(self): """Test delte_results_from_project works.""" project = ProjectFactory.create() task = TaskFactory.create(project=project, n_answers=1) taskrun = TaskRunFactory.create(task=task, project=project) result = result_repo.get_by(project_id=task.project.id) assert result result_repo.delete_results_from_project(project) result = result_repo.get_by(project_id=task.project.id) assert result is None
def test_delete_results_from_project(self): """Test delte_results_from_project works.""" project = ProjectFactory.create() task = TaskFactory.create(project=project,n_answers=1) taskrun = TaskRunFactory.create(task=task, project=project) result = result_repo.get_by(project_id=task.project.id) assert result result_repo.delete_results_from_project(project) result = result_repo.get_by(project_id=task.project.id) assert result is None
def create_webhooks(projectId): """Create webhooks for a given project ID.""" from pybossa.core import project_repo, task_repo, result_repo from pybossa.model.webhook import Webhook project = project_repo.get(projectId) tasks = task_repo.filter_tasks_by(state='completed', project_id=projectId) print "Analyzing %s tasks" % len(tasks) for task in tasks: sql = text( '''select * from webhook where project_id=:project_id and payload@>'{"task_id": :task_id}';''') results = db.engine.execute( sql, project_id=project.id, task_id=task.id) webhook = None for result in results: webhook = result if not webhook: result = result_repo.get_by(project_id=project.id, task_id=task.id) payload = dict( fired_at=None, project_short_name=project.short_name, project_id=project.id, task_id=task.id, result_id=result.id, event='task_completed') wh = Webhook(project_id=projectId, payload=payload) print(wh) db.session.add(wh) db.session.commit() print "Project %s completed!" % project.short_name
def _update_object(self, inst): ensure_authorized_to('create', Result) if not inst.task_id: raise BadRequest('Invalid task id') task_id = inst.task_id results = result_repo.get_by(task_id=task_id) if results: raise BadRequest('Record is already present') task = task_repo.get_task(task_id) if not task or task.state != 'completed': raise BadRequest('Invalid task') inst.created = make_timestamp() inst.project_id = task.project_id inst.task_run_ids = [tr.id for tr in task.task_runs] inst.last_version = True
def notest_n_results_returns_number_of_total_results(self): project = ProjectFactory.create() task = TaskFactory.create(n_answers=1, project=project) TaskRunFactory.create(task=task, project=project) results = cached_projects.n_results(project.id) assert results == 0, results result = result_repo.get_by(project_id=project.id) result.info = dict(foo='bar') result_repo.update(result) results = cached_projects.n_results(project.id) assert results == 1, results
def test_n_results_returns_number_of_total_results(self): project = ProjectFactory.create() task = TaskFactory.create(n_answers=1, project=project) TaskRunFactory.create(task=task, project=project) results = cached_projects.n_results(project.id) assert results == 0, results result = result_repo.get_by(project_id=project.id) result.info = dict(foo='bar') result_repo.update(result) results = cached_projects.n_results(project.id) assert results == 1, results
def test_get_last_version(self): """Test API result returns always latest version.""" result = self.create_result() project = project_repo.get(result.project_id) task = task_repo.get_task(result.task_id) task.n_answers = 2 TaskRunFactory.create(task=task, project=project) result = result_repo.get_by(project_id=project.id) assert result.last_version is True, result.last_version result_id = result.id results = result_repo.filter_by(project_id=project.id, last_version=False) assert len(results) == 2, len(results) for r in results: if r.id == result_id: assert r.last_version is True, r.last_version else: assert r.last_version is False, r.last_version
def create_results(): """Create results when migrating.""" from pybossa.core import project_repo, task_repo, result_repo from pybossa.model.result import Result projects = project_repo.filter_by(published=True) for project in projects: print "Working on project: %s" % project.short_name tasks = task_repo.filter_tasks_by(state='completed', project_id=project.id) print "Analyzing %s tasks" % len(tasks) for task in tasks: result = result_repo.get_by(project_id=project.id, task_id=task.id) if result is None: result = Result(project_id=project.id, task_id=task.id, task_run_ids=[tr.id for tr in task.task_runs], last_version=True) db.session.add(result) db.session.commit() print "Project %s completed!" % project.short_name