Skip to content

Commit d29c922

Browse files
authored
Merge pull request #66 from osmlab/dev
Merge dev > master
2 parents 85004c1 + 5d09be1 commit d29c922

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

examples/challenge_examples.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
print(json.dumps(api.get_challenge_by_name(project_id=project_id,
2020
challenge_name=challenge_name), indent=4, sort_keys=True))
2121

22+
# We can also use challenges' set tags to retrieve them:
23+
challenge_tags = 'River'
24+
print(json.dumps(api.get_challenges_by_tags(challenge_tags=challenge_tags), indent=4, sort_keys=True))
25+
2226
# We can access challenge statistics as well:
2327
print(json.dumps(api.get_challenge_statistics_by_id(challenge_id)))
2428

maproulette/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@
1414
from .api.task import Task
1515
from .api.user import User
1616

17-
__version__ = '1.4.0'
17+
__version__ = '1.5.0'

maproulette/api/challenge.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,25 @@ def get_challenge_by_name(self, project_id, challenge_name):
5454
response = self.get(endpoint=f"/project/{project_id}/challenge/{challenge_name}")
5555
return response
5656

57+
def get_challenges_by_tags(self, challenge_tags, limit=10, page=0):
58+
"""Method to retrieve challenge information via tags applied to the challenge
59+
60+
:param challenge_tags: a comma-separated list of tags to search challenges for
61+
:param limit: the limit to the number of results returned in the response. Default is 10
62+
:param page: used in conjunction with the limit parameter to page through X number of responses. Default is 0.
63+
:returns: the API response from the GET request
64+
"""
65+
query_params = {
66+
"tags": str(challenge_tags),
67+
"limit ": str(limit),
68+
"page": str(page)
69+
}
70+
response = self.get(
71+
endpoint=f"/challenges/tags",
72+
params=query_params
73+
)
74+
return response
75+
5776
def get_virtual_challenge_by_id(self, challenge_id):
5877
"""Method to retrieve an existing virtual challenge
5978

maproulette/models/challenge.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def medium_priority_rule(self):
131131
return self._medium_priority_rule
132132

133133
@medium_priority_rule.setter
134-
def high_priority_rule(self, value):
134+
def medium_priority_rule(self, value):
135135
self._medium_priority_rule = value
136136

137137
@property

tests/test_challenge_api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ def test_get_challenge_by_name(self, mock_request, api_instance=api):
6666
response = api_instance.get_challenge_by_name(test_project_id, test_challenge_name)
6767
self.assertEqual(response['status'], '200')
6868

69+
@patch('maproulette.api.maproulette_server.requests.Session.get')
70+
def test_get_challenges_by_tags(self, mock_request, api_instance=api):
71+
test_challenge_tag = 'River'
72+
mock_request.return_value.status_code = '200'
73+
response = api_instance.get_challenges_by_tags(test_challenge_tag)
74+
self.assertEqual(response['status'], '200')
75+
6976
@patch('maproulette.api.maproulette_server.requests.Session.get')
7077
def test_get_virtual_challenge_by_id(self, mock_request, api_instance=api):
7178
test_virtual_challenge_id = '12345'

0 commit comments

Comments
 (0)