Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,10 @@ def basic(**kwargs):
msg = "The five taskruns reported no animal"
if type(vc) == pd.Series and ((str(vc.index[0]) == 'nan' or
vc.index[0] == -1) and vc.values[0] == 5):
return msg
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, settings.no_animal, result)
else:
task = get_task(t.project_id, t.id)
task.n_answers += 1
Expand All @@ -219,7 +222,7 @@ def basic(**kwargs):
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, 'no animal', result)
return create_result(t, settings.no_animal, result)
else:
answers = get_consensus(df, th=10)
if len(answers) == 0:
Expand All @@ -229,6 +232,11 @@ def basic(**kwargs):
task.n_answers += 1
task.state = 'ongoing'
return enki.pbclient.update_task(task)
else:
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, settings.no_consensus, result)
else:
for a in answers:
iucn_red_list_status, species = get_red_list_status(a['speciesScientificName'], project_id)
Expand Down
4 changes: 4 additions & 0 deletions settings.py.template
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ endpoint = 'http://localhost:5001'
enable_background_jobs = False
# Queue name: use your own name in case you're using also python-rq
queue_name = 'mywebhooks'
# String for no animal
no_animal = 'no animal'
# String for no consensus
no_consensus = 'no consensus'
4 changes: 4 additions & 0 deletions settings_testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@
enable_background_jobs = True
# Queue name: use your own name in case you're using also python-rq
queue_name = 'mywebhooks'
# String for no animal
no_animal = 'no animal'
# String for no consensus
no_consensus = 'no consensus'
78 changes: 71 additions & 7 deletions test/test_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,14 +141,29 @@ def test_basic_5_taskruns(self, enki_mock, pbclient):
task.n_answers = 5
task.state = 'completed'
enki_mock.tasks = [task]
result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
task_runs = []
for i in range(5):
task_runs.append(self.create_task_runs_no_animal())
enki_mock.task_runs = dict([(task.id,task_runs)])

res = basic(**self.payload)
assert res == 'The five taskruns reported no animal', res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal

@patch('enki.pbclient', autospec=True)
@patch('enki.Enki', autospec=True)
Expand Down Expand Up @@ -241,7 +256,20 @@ def test_basic_10_nan_(self, enki_mock, pbclient):
task.n_answers = 10
task.state = 'completed'
enki_mock.tasks = [task]
pbclient.update_result.return_value = '10 taskruns reported no animal'
result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
task_runs = []
for i in range(10):
Expand All @@ -250,7 +278,8 @@ def test_basic_10_nan_(self, enki_mock, pbclient):

res = basic(**self.payload)
assert task.n_answers == 10, task.n_answers
assert res == "10 taskruns reported no animal", res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal


@patch('enki.pbclient', autospec=True)
Expand All @@ -260,13 +289,27 @@ def test_basic_10_nan_2_animal(self, enki_mock, pbclient):
enki_mock = enki.Enki(endpoint='server',
api_key='api',
project_short_name='project')
pbclient.update_result.return_value = '10 taskruns reported no animal'
enki_mock.pbclient = pbclient
task = MagicMock()
task.id = 1
task.project_id = 1
task.n_answers = 12
task.state = 'completed'

result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
enki_mock.tasks = [task]
task_runs = []
task_runs.append(self.create_task_runs_animal())
Expand All @@ -278,7 +321,9 @@ def test_basic_10_nan_2_animal(self, enki_mock, pbclient):
res = basic(**self.payload)
assert task.n_answers == 12, task.n_answers
assert task.state == 'completed', task.state
assert res == "10 taskruns reported no animal", res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal


@patch('enki.pbclient', autospec=True)
@patch('enki.Enki', autospec=True)
Expand Down Expand Up @@ -395,12 +440,28 @@ def test_basic_25_animal(self, enki_mock, pbclient):
enki_mock = enki.Enki(endpoint='server',
api_key='api',
project_short_name='project')
enki_mock.pbclient = pbclient
task = MagicMock()
task.id = 1
task.project_id = 1
task.n_answers = 25
task.state = 'completed'

result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_consensus,
iucn_red_list_status=settings.no_consensus,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result

enki_mock.pbclient = pbclient
enki_mock.tasks = [task]
task_runs = []
for i in range(9):
Expand All @@ -412,6 +473,9 @@ def test_basic_25_animal(self, enki_mock, pbclient):
enki_mock.task_runs = dict([(task.id,task_runs)])

res = basic(**self.payload)
assert res.info['iucn_red_list_status'] == settings.no_consensus
assert res.info['speciesCommonName'] == settings.no_consensus

assert task.n_answers == 25, task.n_answers
assert task.state == 'completed', task.state

Expand Down