Skip to content

Commit 7801e6f

Browse files
authored
Challenge Rapid Dataset support (#1159)
* add dataset_url to challenge table * run formatter * remove test line
1 parent 8562798 commit 7801e6f

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

app/org/maproulette/framework/model/Challenge.scala

+1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ case class ChallengeExtra(
136136
isArchived: Boolean = false,
137137
reviewSetting: Int = Challenge.REVIEW_SETTING_NOT_REQUIRED,
138138
taskWidgetLayout: Option[JsValue] = None,
139+
datasetUrl: Option[String] = None,
139140
systemArchivedAt: Option[DateTime] = None,
140141
presets: Option[List[String]] = None
141142
) extends DefaultWrites

app/org/maproulette/framework/repository/ChallengeRepository.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ object ChallengeRepository {
264264
get[Option[List[Long]]]("virtual_parent_ids") ~
265265
get[Boolean]("challenges.is_archived") ~
266266
get[Int]("challenges.review_setting") ~
267+
get[Option[String]]("challenges.dataset_url") ~
267268
get[Option[JsValue]]("challenges.task_widget_layout") ~
268269
get[Option[DateTime]]("challenges.system_archived_at") map {
269270
case id ~ name ~ created ~ modified ~ description ~ infoLink ~ ownerId ~ parentId ~ instruction ~
@@ -272,7 +273,7 @@ object ChallengeRepository {
272273
mediumPriorityRule ~ lowPriorityRule ~ defaultZoom ~ minZoom ~ maxZoom ~ defaultBasemap ~ defaultBasemapId ~
273274
customBasemap ~ updateTasks ~ exportableProperties ~ osmIdProperty ~ taskBundleIdProperty ~ preferredTags ~ preferredReviewTags ~
274275
limitTags ~ limitReviewTags ~ taskStyles ~ lastTaskRefresh ~ dataOriginDate ~ requiresLocal ~ location ~ bounding ~
275-
deleted ~ virtualParents ~ isArchived ~ reviewSetting ~ taskWidgetLayout ~ systemArchivedAt =>
276+
deleted ~ virtualParents ~ isArchived ~ reviewSetting ~ datasetUrl ~ taskWidgetLayout ~ systemArchivedAt =>
276277
val hpr = highPriorityRule match {
277278
case Some(c) if StringUtils.isEmpty(c) || StringUtils.equals(c, "{}") => None
278279
case r => r
@@ -330,6 +331,7 @@ object ChallengeRepository {
330331
isArchived,
331332
reviewSetting,
332333
taskWidgetLayout,
334+
datasetUrl,
333335
systemArchivedAt
334336
),
335337
status,

app/org/maproulette/models/dal/ChallengeDAL.scala

+13-5
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ class ChallengeDAL @Inject() (
122122
get[Boolean]("deleted") ~
123123
get[Boolean]("challenges.is_archived") ~
124124
get[Int]("challenges.review_setting") ~
125+
get[Option[String]]("challenges.dataset_url") ~
125126
get[Option[JsValue]]("challenges.task_widget_layout") ~
126127
get[Option[Int]]("challenges.completion_percentage") ~
127128
get[Option[Int]]("challenges.tasks_remaining") map {
@@ -132,7 +133,7 @@ class ChallengeDAL @Inject() (
132133
minZoom ~ maxZoom ~ defaultBasemap ~ defaultBasemapId ~ customBasemap ~ updateTasks ~
133134
exportableProperties ~ osmIdProperty ~ taskBundleIdProperty ~ preferredTags ~ preferredReviewTags ~
134135
limitTags ~ limitReviewTags ~ taskStyles ~ lastTaskRefresh ~ dataOriginDate ~ location ~ bounding ~
135-
requiresLocal ~ deleted ~ isArchived ~ reviewSetting ~ taskWidgetLayout ~ completionPercentage ~ tasksRemaining =>
136+
requiresLocal ~ deleted ~ isArchived ~ reviewSetting ~ datasetUrl ~ taskWidgetLayout ~ completionPercentage ~ tasksRemaining =>
136137
val hpr = highPriorityRule match {
137138
case Some(c) if StringUtils.isEmpty(c) || StringUtils.equals(c, "{}") => None
138139
case r => r
@@ -189,7 +190,8 @@ class ChallengeDAL @Inject() (
189190
taskBundleIdProperty,
190191
isArchived,
191192
reviewSetting,
192-
taskWidgetLayout
193+
taskWidgetLayout,
194+
datasetUrl
193195
),
194196
status,
195197
statusMessage,
@@ -259,6 +261,7 @@ class ChallengeDAL @Inject() (
259261
get[Option[List[String]]]("presets") ~
260262
get[Boolean]("challenges.is_archived") ~
261263
get[Int]("challenges.review_setting") ~
264+
get[Option[String]]("challenges.dataset_url") ~
262265
get[Option[JsValue]]("challenges.task_widget_layout") ~
263266
get[Option[DateTime]]("challenges.system_archived_at") ~
264267
get[Option[Int]]("challenges.completion_percentage") ~
@@ -271,7 +274,7 @@ class ChallengeDAL @Inject() (
271274
customBasemap ~ updateTasks ~ exportableProperties ~ osmIdProperty ~ taskBundleIdProperty ~ preferredTags ~
272275
preferredReviewTags ~ limitTags ~ limitReviewTags ~ taskStyles ~ lastTaskRefresh ~
273276
dataOriginDate ~ location ~ bounding ~ requiresLocal ~ deleted ~ virtualParents ~
274-
presets ~ isArchived ~ reviewSetting ~ taskWidgetLayout ~ systemArchivedAt ~ completionPercentage ~ tasksRemaining =>
277+
presets ~ isArchived ~ reviewSetting ~ datasetUrl ~ taskWidgetLayout ~ systemArchivedAt ~ completionPercentage ~ tasksRemaining =>
275278
val hpr = highPriorityRule match {
276279
case Some(c) if StringUtils.isEmpty(c) || StringUtils.equals(c, "{}") => None
277280
case r => r
@@ -329,6 +332,7 @@ class ChallengeDAL @Inject() (
329332
isArchived,
330333
reviewSetting,
331334
taskWidgetLayout,
335+
datasetUrl,
332336
systemArchivedAt,
333337
presets
334338
),
@@ -481,7 +485,7 @@ class ChallengeDAL @Inject() (
481485
medium_priority_rule, low_priority_rule, default_zoom, min_zoom, max_zoom,
482486
default_basemap, default_basemap_id, custom_basemap, updatetasks, exportable_properties,
483487
osm_id_property, task_bundle_id_property, last_task_refresh, data_origin_date, preferred_tags, preferred_review_tags,
484-
limit_tags, limit_review_tags, task_styles, requires_local, is_archived, review_setting, task_widget_layout)
488+
limit_tags, limit_review_tags, task_styles, requires_local, is_archived, review_setting, dataset_url, task_widget_layout)
485489
VALUES (${challenge.name}, ${challenge.general.owner}, ${challenge.general.parent}, ${challenge.general.difficulty},
486490
${challenge.description}, ${challenge.infoLink}, ${challenge.general.blurb}, ${challenge.general.instruction},
487491
${challenge.general.enabled}, ${challenge.general.featured},
@@ -495,7 +499,7 @@ class ChallengeDAL @Inject() (
495499
${challenge.dataOriginDate.getOrElse(DateTime.now()).toString}::timestamptz,
496500
${challenge.extra.preferredTags}, ${challenge.extra.preferredReviewTags}, ${challenge.extra.limitTags},
497501
${challenge.extra.limitReviewTags}, ${challenge.extra.taskStyles}, ${challenge.general.requiresLocal}, ${challenge.extra.isArchived},
498-
${challenge.extra.reviewSetting},
502+
${challenge.extra.reviewSetting}, ${challenge.extra.datasetUrl},
499503
${asJson(challenge.extra.taskWidgetLayout.getOrElse(Json.parse("{}")))}
500504
) ON CONFLICT(parent_id, LOWER(name)) DO NOTHING RETURNING #${this.retrieveColumns}"""
501505
.as(this.parser.*)
@@ -683,6 +687,10 @@ class ChallengeDAL @Inject() (
683687
.asOpt[Int]
684688
.getOrElse(cachedItem.extra.reviewSetting)
685689

690+
val datasetUrl = (updates \ "datasetUrl")
691+
.asOpt[String]
692+
.getOrElse(cachedItem.extra.datasetUrl)
693+
686694
val taskWidgetLayout = (updates \ "taskWidgetLayout")
687695
.asOpt[JsValue]
688696
.getOrElse(cachedItem.extra.taskWidgetLayout.getOrElse(Json.parse("{}")))

conf/evolutions/default/97.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# --- !Ups
2+
ALTER TABLE challenges ADD COLUMN dataset_url VARCHAR DEFAULT NULL;;
3+
4+
# --- !Downs
5+
ALTER TABLE IF EXISTS challenges DROP COLUMN dataset_url;;

0 commit comments

Comments
 (0)