From 327092d6ed20afc5d34add7a3c7fc05f5b0e6066 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 15 May 2020 16:19:35 -0700 Subject: [PATCH 01/11] Add new challenge model properties --- maproulette/models/challenge.py | 67 +++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/maproulette/models/challenge.py b/maproulette/models/challenge.py index 2a3bcf6..89b88c7 100644 --- a/maproulette/models/challenge.py +++ b/maproulette/models/challenge.py @@ -26,6 +26,24 @@ def name(self): def name(self, value): self._name = value + @property + def created(self): + """Time stamp of when the challenge was created""" + return self._created + + @created.setter + def created(self, value): + self._created = value + + @property + def modified(self): + """Time stamp pf when the challenge was last modified""" + return self._modified + + @modified.setter + def modified(self, value): + self._modified = value + @property def description(self): """The description for the challenge""" @@ -35,6 +53,15 @@ def description(self): def description(self, value): self._description = value + @property + def deleted(self): + """Whether a challenge has been deleted or not""" + return self._deleted + + @deleted.setter + def deleted(self, value): + self._deleted = value + @property def parent(self): """The parent ID for the challenge""" @@ -98,6 +125,15 @@ def featured(self): def featured(self, value): self._featured = value + @property + def virtual_parents(self): + """The virtual parents of a challenge""" + return self._virtual_parents + + @virtual_parents.setter + def virtual_parents(self, value): + self._virtual_parents = value + @property def overpassQL(self): """The Overpass query for this challenge""" @@ -143,12 +179,34 @@ def max_zoom(self): def max_zoom(self, value): self._max_zoom = value - def __init__(self, name, id=None, description=None, parent=None, instruction=None, difficulty=None, blurb=None, - enabled=None, challenge_type=None, featured=None, overpassQL=None, default_priority=None, default_zoom=None, - min_zoom=None, max_zoom=None): + @property + def last_task_refresh(self): + """Timestamp of when the challenge's tasks were last refreshed""" + return self._last_task_refresh + + @last_task_refresh.setter + def last_task_refresh(self, value): + self._last_task_refresh = value + + @property + def data_origin_date(self): + """Timestamp of when data was originated""" + return self._data_origin_date + + @data_origin_date.setter + def data_origin_date(self, value): + self._data_origin_date = value + + def __init__(self, name, id=None, created=None, modified=None, description=None, deleted = None, parent=None, + instruction=None, difficulty=None, blurb=None, enabled=None, challenge_type=None, featured=None, + virtual_parents=None, overpassQL=None, default_priority=None, default_zoom=None, min_zoom=None, + max_zoom=None, last_task_refresh=None, data_origin_date=None): self._id = id self._name = name + self._created = created + self._modified = modified self._description = description + self._deleted = deleted self._parent = parent self._instruction = instruction self._difficulty = difficulty @@ -156,11 +214,14 @@ def __init__(self, name, id=None, description=None, parent=None, instruction=Non self._enabled = enabled self._challenge_type = challenge_type self._featured = featured + self._virtual_parents = virtual_parents self._overpassQL = overpassQL self._default_priority = default_priority self._default_zoom = default_zoom self._min_zoom = min_zoom self._max_zoom = max_zoom + self._last_task_refresh = last_task_refresh + self._data_origin_date = data_origin_date def to_dict(self): """Converts all non-null properties of a challenge object into a dictionary""" From 7f2d9617ac8f55406d9da70642c97297b96edc96 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Mon, 18 May 2020 10:23:56 -0700 Subject: [PATCH 02/11] Add new props to to_dict --- maproulette/models/challenge.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/maproulette/models/challenge.py b/maproulette/models/challenge.py index 89b88c7..9e4a123 100644 --- a/maproulette/models/challenge.py +++ b/maproulette/models/challenge.py @@ -228,7 +228,10 @@ def to_dict(self): properties = { "id": self._id, "name": self._name, + "created": self._created, + "modified": self._modified, "description": self._description, + "deleted": self.description, "parent": self._parent, "instruction": self._instruction, "difficulty": self._difficulty, @@ -236,11 +239,14 @@ def to_dict(self): "enabled": self._enabled, "challengeType": self._challenge_type, "featured": self._featured, + "virtualParents": self._virtual_parents, "overpassQL": self._overpassQL, "defaultPriority": self._default_priority, "defaultZoom": self._default_zoom, "minZoom": self._min_zoom, - "maxZoom": self._max_zoom + "maxZoom": self._max_zoom, + "lastTaskRefresh": self._last_task_refresh, + "dataOriginDate": self._data_origin_date } return {k: v for (k, v) in properties.items() if v is not None} From 4ee4b3ecfd70f558e37eb541011c52ff3318e4fa Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Mon, 18 May 2020 10:42:21 -0700 Subject: [PATCH 03/11] Add new properties to task model --- maproulette/models/task.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/maproulette/models/task.py b/maproulette/models/task.py index 7c0f2c4..41178db 100644 --- a/maproulette/models/task.py +++ b/maproulette/models/task.py @@ -27,6 +27,24 @@ def name(self): def name(self, value): self._name = value + @property + def created(self): + """Timestamp of when the task was created""" + return self._created + + @created.setter + def created(self, value): + self._created = value + + @property + def modified(self): + """Timestamp of when the task was modified""" + return self._modified + + @modified.setter + def modified(self, value): + self._modified = value + @property def parent(self): """The parent ID for the task""" @@ -153,11 +171,13 @@ def mapillary_images(self): def mapillary_images(self, value): self._mapillary_images = value - def __init__(self, name, parent, geometries, id=None, instruction=None, location=None, suggested_fix=None, - status=None, mapped_on=None, review=None, priority=None, changeset_id=None, completion_responses=None, - bundle_id=None, is_bundle_primary=None, mapillary_images=None): + def __init__(self, name, parent, geometries, created=None, modified=None, id=None, instruction=None, location=None, + suggested_fix=None, status=None, mapped_on=None, review=None, priority=None, changeset_id=None, + completion_responses=None, bundle_id=None, is_bundle_primary=None, mapillary_images=None): self._id = id self._name = name + self._created = created + self._modified = modified self._parent = parent self._geometries = geometries self._instruction = instruction @@ -178,6 +198,8 @@ def to_dict(self): properties = { "id": self._id, "name": self._name, + "created": self._created, + "modified": self._modified, "parent": self._parent, "instruction": self._instruction, "location": self._location, From 6660f058ce6ab99a93bd2efd778d9c7f1a4287c2 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Wed, 3 Jun 2020 10:35:31 -0700 Subject: [PATCH 04/11] Change properties --- maproulette/models/challenge.py | 77 +++++---------------------------- 1 file changed, 11 insertions(+), 66 deletions(-) diff --git a/maproulette/models/challenge.py b/maproulette/models/challenge.py index 9e4a123..c66b307 100644 --- a/maproulette/models/challenge.py +++ b/maproulette/models/challenge.py @@ -26,24 +26,6 @@ def name(self): def name(self, value): self._name = value - @property - def created(self): - """Time stamp of when the challenge was created""" - return self._created - - @created.setter - def created(self, value): - self._created = value - - @property - def modified(self): - """Time stamp pf when the challenge was last modified""" - return self._modified - - @modified.setter - def modified(self, value): - self._modified = value - @property def description(self): """The description for the challenge""" @@ -53,15 +35,6 @@ def description(self): def description(self, value): self._description = value - @property - def deleted(self): - """Whether a challenge has been deleted or not""" - return self._deleted - - @deleted.setter - def deleted(self, value): - self._deleted = value - @property def parent(self): """The parent ID for the challenge""" @@ -125,15 +98,6 @@ def featured(self): def featured(self, value): self._featured = value - @property - def virtual_parents(self): - """The virtual parents of a challenge""" - return self._virtual_parents - - @virtual_parents.setter - def virtual_parents(self, value): - self._virtual_parents = value - @property def overpassQL(self): """The Overpass query for this challenge""" @@ -180,33 +144,20 @@ def max_zoom(self, value): self._max_zoom = value @property - def last_task_refresh(self): - """Timestamp of when the challenge's tasks were last refreshed""" - return self._last_task_refresh - - @last_task_refresh.setter - def last_task_refresh(self, value): - self._last_task_refresh = value - - @property - def data_origin_date(self): - """Timestamp of when data was originated""" - return self._data_origin_date + def osm_id_property(self): + """The id property of an osm feature""" + return self._osm_id_property - @data_origin_date.setter - def data_origin_date(self, value): - self._data_origin_date = value + @osm_id_property.setter + def osm_id_property(self, value): + self._osm_id_property = value - def __init__(self, name, id=None, created=None, modified=None, description=None, deleted = None, parent=None, - instruction=None, difficulty=None, blurb=None, enabled=None, challenge_type=None, featured=None, - virtual_parents=None, overpassQL=None, default_priority=None, default_zoom=None, min_zoom=None, - max_zoom=None, last_task_refresh=None, data_origin_date=None): + def __init__(self, name, id=None, description=None, parent=None, instruction=None, difficulty=None, blurb=None, + enabled=None, challenge_type=None, featured=None, overpassQL=None, default_priority=None, + default_zoom=None, min_zoom=None, max_zoom=None, osm_id_property=None): self._id = id self._name = name - self._created = created - self._modified = modified self._description = description - self._deleted = deleted self._parent = parent self._instruction = instruction self._difficulty = difficulty @@ -214,22 +165,18 @@ def __init__(self, name, id=None, created=None, modified=None, description=None, self._enabled = enabled self._challenge_type = challenge_type self._featured = featured - self._virtual_parents = virtual_parents self._overpassQL = overpassQL self._default_priority = default_priority self._default_zoom = default_zoom self._min_zoom = min_zoom self._max_zoom = max_zoom - self._last_task_refresh = last_task_refresh - self._data_origin_date = data_origin_date + self._osm_id_property = osm_id_property def to_dict(self): """Converts all non-null properties of a challenge object into a dictionary""" properties = { "id": self._id, "name": self._name, - "created": self._created, - "modified": self._modified, "description": self._description, "deleted": self.description, "parent": self._parent, @@ -239,14 +186,12 @@ def to_dict(self): "enabled": self._enabled, "challengeType": self._challenge_type, "featured": self._featured, - "virtualParents": self._virtual_parents, "overpassQL": self._overpassQL, "defaultPriority": self._default_priority, "defaultZoom": self._default_zoom, "minZoom": self._min_zoom, "maxZoom": self._max_zoom, - "lastTaskRefresh": self._last_task_refresh, - "dataOriginDate": self._data_origin_date + "osmIdProperty": self._osm_id_property } return {k: v for (k, v) in properties.items() if v is not None} From 280d70cc5e081f32213a13132ee6a9e54954f485 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 5 Jun 2020 11:32:47 -0700 Subject: [PATCH 05/11] Add more challenge properties --- maproulette/models/challenge.py | 162 +++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 2 deletions(-) diff --git a/maproulette/models/challenge.py b/maproulette/models/challenge.py index c66b307..adc7779 100644 --- a/maproulette/models/challenge.py +++ b/maproulette/models/challenge.py @@ -116,6 +116,24 @@ def default_priority(self): def default_priority(self, value): self._default_priority = value + @property + def high_priority_rule(self): + """The high priority for this challenge""" + return self._high_priority_rule + + @high_priority_rule.setter + def high_priority_rule(self, value): + self._high_priority_rule = value + + @property + def low_priority_rule(self): + """The low priority of this challenge""" + return self._low_priority_rule + + @low_priority_rule.setter + def low_priority_rule(self, value): + self._low_priority_rule = value + @property def default_zoom(self): """The default zoom level for this challenge""" @@ -152,9 +170,121 @@ def osm_id_property(self): def osm_id_property(self, value): self._osm_id_property = value + @property + def cooperative_type(self): + """""" + return self._cooperative_type + + @cooperative_type.setter + def cooperative_type(self, value): + self._cooperative_type = value + + @property + def popularity(self): + """The popularity of a challenge""" + return self._popularity + + @popularity.setter + def popularity(self, value): + self._popularity = value + + @property + def check_in_comment(self): + """Comment to be associated with changes made by users""" + return self._check_in_comment + + @check_in_comment.setter + def check_in_comment(self, value): + self._check_in_comment = value + + @property + def check_in_source(self): + """Hashtag appended to changeset comments""" + return self._check_in_source + + @check_in_source.setter + def check_in_source(self, value): + self._check_in_source = value + + @property + def requires_local(self): + """Whether or not tasks require local knowledge to complete""" + return self._requires_local + + @requires_local.setter + def requires_local(self, value): + self._requires_local = value + + @property + def default_basemap(self): + """The default basemap to use for this challenge""" + return self._default_basemap + + @default_basemap.setter + def default_basemap(self, value): + self._default_basemap = value + + @property + def default_basemap_id(self): + """The id of the default basemap""" + return self._default_basemap_id + + @default_basemap_id.setter + def default_basemap_id(self, value): + self._default_basemap_id = value + + @property + def custom_basemap(self): + """The custom basemap of this challenge""" + return self._custom_basemap + + @custom_basemap.setter + def custom_basemap(self, value): + self._custom_basemap = value + + @property + def update_tasks(self): + """Whether or not to periodically delete old tasks""" + return self._update_tasks + + @update_tasks.setter + def update_tasks(self, value): + self._update_tasks = value + + @property + def exportable_properties(self): + """Comma separated list of properties to be exportable""" + return self._exportable_properties + + @exportable_properties.setter + def exportable_properties(self, value): + self._exportable_properties = value + + @property + def preferred_tags(self): + """List of preferred tags the user can use when completing tasks""" + return self._preferred_tags + + @preferred_tags.setter + def preferred_tags(self, value): + self._preferred_tags = value + + @property + def task_styles(self): + """Custom task styling based on specific task feature properties""" + return self._task_styles + + @task_styles.setter + def task_styles(self, value): + self._task_styles = value + def __init__(self, name, id=None, description=None, parent=None, instruction=None, difficulty=None, blurb=None, enabled=None, challenge_type=None, featured=None, overpassQL=None, default_priority=None, - default_zoom=None, min_zoom=None, max_zoom=None, osm_id_property=None): + high_priority_rule=None, low_priority_rule=None, default_zoom=None, min_zoom=None, max_zoom=None, + osm_id_property=None, cooperative_type=None, popularity=None, check_in_comment=None, + check_in_source=None, requires_local=None, default_basemap=None, default_basemap_id=None, + custom_basemap=None, update_tasks=None, exportable_properties=None, preferred_tags=None, + task_styles=None): self._id = id self._name = name self._description = description @@ -167,10 +297,24 @@ def __init__(self, name, id=None, description=None, parent=None, instruction=Non self._featured = featured self._overpassQL = overpassQL self._default_priority = default_priority + self._high_priority_rule = high_priority_rule + self._low_priority_rule = low_priority_rule self._default_zoom = default_zoom self._min_zoom = min_zoom self._max_zoom = max_zoom self._osm_id_property = osm_id_property + self._cooperative_type = cooperative_type + self._popularity = popularity + self._check_in_comment = check_in_comment + self._check_in_source = check_in_source + self._requires_local = requires_local + self._default_basemap = default_basemap + self._default_basemap_id = default_basemap_id + self._custom_basemap = custom_basemap + self._update_tasks = update_tasks + self._exportable_properties = exportable_properties + self._preferred_tags = preferred_tags + self._task_styles = task_styles def to_dict(self): """Converts all non-null properties of a challenge object into a dictionary""" @@ -188,10 +332,24 @@ def to_dict(self): "featured": self._featured, "overpassQL": self._overpassQL, "defaultPriority": self._default_priority, + "highPriorityRule": self._high_priority_rule, + "lowPriorityRule": self._low_priority_rule, "defaultZoom": self._default_zoom, "minZoom": self._min_zoom, "maxZoom": self._max_zoom, - "osmIdProperty": self._osm_id_property + "osmIdProperty": self._osm_id_property, + "cooperativeType": self._cooperative_type, + "popularity": self._popularity, + "checkInComment": self._check_in_comment, + "checkInSource": self._check_in_source, + "requiresLocal": self._requires_local, + "defaultBasemap": self._default_basemap, + "defautlBasemapId": self._default_basemap_id, + "customBasemap": self._custom_basemap, + "updateTasks": self._update_tasks, + "exportableProperties": self._exportable_properties, + "preferredTags": self._preferred_tags, + "taskStyles": self._task_styles } return {k: v for (k, v) in properties.items() if v is not None} From 34474546e4b66938c82ab8efa2ab9d866f2fe1bd Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 5 Jun 2020 12:06:35 -0700 Subject: [PATCH 06/11] Add project property --- maproulette/models/project.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/maproulette/models/project.py b/maproulette/models/project.py index 5d32dce..a0e37e7 100644 --- a/maproulette/models/project.py +++ b/maproulette/models/project.py @@ -65,22 +65,22 @@ def display_name(self, value): self._display_name = value @property - def is_virtual(self): - """Whether or not this project is virtual""" - return self._is_virtual + def featured(self): + """Whether or not the project is featured""" + return self._featured - @is_virtual.setter - def is_virtual(self, value): - self._is_virtual = value + @featured.setter + def featured(self, value): + self._featured = value - def __init__(self, name, id=None, description=None, groups=None, enabled=None, display_name=None, is_virtual=None): + def __init__(self, name, id=None, description=None, groups=None, enabled=None, display_name=None, featured=None): self._id = id self._name = name self._description = description self._groups = groups self._enabled = enabled self._display_name = display_name - self._is_virtual = is_virtual + self._featured = featured def to_dict(self): """Converts all non-null properties of a project object into a dictionary""" @@ -91,7 +91,7 @@ def to_dict(self): "groups": self._groups, "enabled": self._enabled, "display_name": self._display_name, - "is_virtual": self._is_virtual + "featured": self._featured } return {k: v for (k, v) in properties.items() if v is not None} From 93d06144dbdfeb620f5fdc7cf7e3249abdf30b23 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 5 Jun 2020 12:14:34 -0700 Subject: [PATCH 07/11] Adjust tests to reflect properties --- tests/test_project_api.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/test_project_api.py b/tests/test_project_api.py index 718831a..ef9b4b4 100644 --- a/tests/test_project_api.py +++ b/tests/test_project_api.py @@ -48,8 +48,7 @@ def test_create_project(self, mock_request, api_instance=api): @patch('maproulette.api.maproulette_server.requests.Session.post') def test_add_challenge_to_project(self, mock_request, api_instance=api): test_virtual_project_model = maproulette.ProjectModel(name='Test Virtual Project Name', - id=1234, - is_virtual=True) + id=1234) test_challenge_model = maproulette.ChallengeModel(name='Test Challenge Name', id=246) test_virtual_project_id = test_virtual_project_model.id @@ -61,8 +60,7 @@ def test_add_challenge_to_project(self, mock_request, api_instance=api): @patch('maproulette.api.maproulette_server.requests.Session.post') def test_remove_challenge_from_project(self, mock_request, api_instance=api): test_virtual_project_model = maproulette.ProjectModel(name='Test Virtual Project Name', - id=1234, - is_virtual=True) + id=1234) test_challenge_model = maproulette.ChallengeModel(name='Test Challenge Name', id=246) test_virtual_project_id = test_virtual_project_model.id test_challenge_id = test_challenge_model.id From 5a5d5a34ab8b213b730b4a774a2475fa3f4e6183 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 5 Jun 2020 13:10:02 -0700 Subject: [PATCH 08/11] Add is virtual back to project props --- maproulette/models/project.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/maproulette/models/project.py b/maproulette/models/project.py index a0e37e7..aa5b453 100644 --- a/maproulette/models/project.py +++ b/maproulette/models/project.py @@ -64,6 +64,15 @@ def display_name(self): def display_name(self, value): self._display_name = value + @property + def is_virtual(self): + """Whether or not a project is virtual""" + return self._is_virtual + + @is_virtual.setter + def is_virtual(self, value): + self._is_virtual = value + @property def featured(self): """Whether or not the project is featured""" @@ -73,7 +82,8 @@ def featured(self): def featured(self, value): self._featured = value - def __init__(self, name, id=None, description=None, groups=None, enabled=None, display_name=None, featured=None): + def __init__(self, name, id=None, description=None, groups=None, enabled=None, + is_virtual=None, display_name=None, featured=None): self._id = id self._name = name self._description = description @@ -81,6 +91,7 @@ def __init__(self, name, id=None, description=None, groups=None, enabled=None, d self._enabled = enabled self._display_name = display_name self._featured = featured + self._is_virtual = is_virtual def to_dict(self): """Converts all non-null properties of a project object into a dictionary""" @@ -91,7 +102,8 @@ def to_dict(self): "groups": self._groups, "enabled": self._enabled, "display_name": self._display_name, - "featured": self._featured + "featured": self._featured, + "isVirtual": self._is_virtual } return {k: v for (k, v) in properties.items() if v is not None} From b927e063c3727d52c7a0399628f10798104da5b7 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Fri, 5 Jun 2020 15:59:25 -0700 Subject: [PATCH 09/11] Remove created and modified task props --- maproulette/models/task.py | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/maproulette/models/task.py b/maproulette/models/task.py index 41178db..11ea3cb 100644 --- a/maproulette/models/task.py +++ b/maproulette/models/task.py @@ -27,24 +27,6 @@ def name(self): def name(self, value): self._name = value - @property - def created(self): - """Timestamp of when the task was created""" - return self._created - - @created.setter - def created(self, value): - self._created = value - - @property - def modified(self): - """Timestamp of when the task was modified""" - return self._modified - - @modified.setter - def modified(self, value): - self._modified = value - @property def parent(self): """The parent ID for the task""" @@ -171,13 +153,11 @@ def mapillary_images(self): def mapillary_images(self, value): self._mapillary_images = value - def __init__(self, name, parent, geometries, created=None, modified=None, id=None, instruction=None, location=None, - suggested_fix=None, status=None, mapped_on=None, review=None, priority=None, changeset_id=None, + def __init__(self, name, parent, geometries, id=None, instruction=None, location=None, suggested_fix=None, + status=None, mapped_on=None, review=None, priority=None, changeset_id=None, completion_responses=None, bundle_id=None, is_bundle_primary=None, mapillary_images=None): self._id = id self._name = name - self._created = created - self._modified = modified self._parent = parent self._geometries = geometries self._instruction = instruction @@ -198,8 +178,6 @@ def to_dict(self): properties = { "id": self._id, "name": self._name, - "created": self._created, - "modified": self._modified, "parent": self._parent, "instruction": self._instruction, "location": self._location, From fe6755d364cd2feb3dc9f3d08b0688b6c91d1915 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Tue, 9 Jun 2020 11:44:56 -0700 Subject: [PATCH 10/11] Add remote geojson prop to challenge model --- maproulette/models/challenge.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/maproulette/models/challenge.py b/maproulette/models/challenge.py index adc7779..0df3f49 100644 --- a/maproulette/models/challenge.py +++ b/maproulette/models/challenge.py @@ -278,13 +278,22 @@ def task_styles(self): def task_styles(self, value): self._task_styles = value + @property + def remote_geojson(self): + """Create a challenge from a GeoJSON URL""" + return self._remote_geojson + + @remote_geojson.setter + def remote_geojson(self, value): + self._remote_geojson = value + def __init__(self, name, id=None, description=None, parent=None, instruction=None, difficulty=None, blurb=None, enabled=None, challenge_type=None, featured=None, overpassQL=None, default_priority=None, high_priority_rule=None, low_priority_rule=None, default_zoom=None, min_zoom=None, max_zoom=None, osm_id_property=None, cooperative_type=None, popularity=None, check_in_comment=None, check_in_source=None, requires_local=None, default_basemap=None, default_basemap_id=None, custom_basemap=None, update_tasks=None, exportable_properties=None, preferred_tags=None, - task_styles=None): + task_styles=None, remote_geojson=None): self._id = id self._name = name self._description = description @@ -315,6 +324,7 @@ def __init__(self, name, id=None, description=None, parent=None, instruction=Non self._exportable_properties = exportable_properties self._preferred_tags = preferred_tags self._task_styles = task_styles + self._remote_geojson = remote_geojson def to_dict(self): """Converts all non-null properties of a challenge object into a dictionary""" @@ -349,7 +359,8 @@ def to_dict(self): "updateTasks": self._update_tasks, "exportableProperties": self._exportable_properties, "preferredTags": self._preferred_tags, - "taskStyles": self._task_styles + "taskStyles": self._task_styles, + "remoteGeoJson": self.remote_geojson } return {k: v for (k, v) in properties.items() if v is not None} From c3d646037bd49cca2a97f6355d44067f7bf45c5a Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Tue, 9 Jun 2020 12:02:00 -0700 Subject: [PATCH 11/11] Add cooperativeWork prop to Task model --- maproulette/models/task.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/maproulette/models/task.py b/maproulette/models/task.py index 11ea3cb..f3a4112 100644 --- a/maproulette/models/task.py +++ b/maproulette/models/task.py @@ -153,9 +153,19 @@ def mapillary_images(self): def mapillary_images(self, value): self._mapillary_images = value + @property + def cooperative_work(self): + """A tag that is or will be used for a new type of task resolution""" + return self._cooperative_work + + @cooperative_work.setter + def cooperative_work(self, value): + self._cooperative_work = value + def __init__(self, name, parent, geometries, id=None, instruction=None, location=None, suggested_fix=None, status=None, mapped_on=None, review=None, priority=None, changeset_id=None, - completion_responses=None, bundle_id=None, is_bundle_primary=None, mapillary_images=None): + completion_responses=None, bundle_id=None, is_bundle_primary=None, mapillary_images=None, + cooperative_work=None): self._id = id self._name = name self._parent = parent @@ -172,6 +182,7 @@ def __init__(self, name, parent, geometries, id=None, instruction=None, location self._bundle_id = bundle_id self._is_bundle_primary = is_bundle_primary self._mapillary_images = mapillary_images + self._cooperative_work = cooperative_work def to_dict(self): """Converts all non-null properties of a task object into a dictionary""" @@ -190,7 +201,8 @@ def to_dict(self): "completionResponses": self._completion_responses, "bundleId": self._bundle_id, "isBundlePrimary": self._is_bundle_primary, - "mapillaryImages": self._mapillary_images + "mapillaryImages": self._mapillary_images, + "cooperativeWork": self._cooperative_work } return {k: v for (k, v) in properties.items() if v is not None}