Skip to content

Commit 158dbab

Browse files
committed
add when in collection and space as well
1 parent c6b3190 commit 158dbab

File tree

4 files changed

+90
-39
lines changed

4 files changed

+90
-39
lines changed

app/api/Collections.scala

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -237,15 +237,15 @@ class Collections @Inject() (datasets: DatasetService,
237237
}
238238
}
239239

240-
def list(title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
241-
Ok(toJson(listCollections(title, date, limit, Set[Permission](Permission.ViewCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)))
240+
def list(when: Option[String], title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
241+
Ok(toJson(listCollections(when, title, date, limit, Set[Permission](Permission.ViewCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)))
242242
}
243243

244-
def listCanEdit(title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
245-
Ok(toJson(listCollections(title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)))
244+
def listCanEdit(when: Option[String], title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
245+
Ok(toJson(listCollections(when, title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)))
246246
}
247247

248-
def addDatasetToCollectionOptions(datasetId: UUID, title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
248+
def addDatasetToCollectionOptions(when: Option[String], datasetId: UUID, title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
249249
implicit val user = request.user
250250
var listAll = false
251251
var collectionList: List[Collection] = List.empty
@@ -265,7 +265,7 @@ class Collections @Inject() (datasets: DatasetService,
265265
}
266266
}
267267
if(listAll) {
268-
collectionList = listCollections(title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)
268+
collectionList = listCollections(when, title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false, request.user, request.user.fold(false)(_.superAdminMode), exact)
269269
}
270270
Ok(toJson(collectionList))
271271
}
@@ -274,10 +274,10 @@ class Collections @Inject() (datasets: DatasetService,
274274
collections.get(current_collections.map(_.child_collection_ids).flatten).found
275275
}
276276

277-
def listPossibleParents(currentCollectionId : String, title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
277+
def listPossibleParents(when: Option[String], currentCollectionId : String, title: Option[String], date: Option[String], limit: Int, exact: Boolean) = PrivateServerAction { implicit request =>
278278
val selfAndAncestors = collections.getSelfAndAncestors(UUID(currentCollectionId))
279279
val descendants = collections.getAllDescendants(UUID(currentCollectionId)).toList
280-
val allCollections = listCollections(title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false,
280+
val allCollections = listCollections(when, title, date, limit, Set[Permission](Permission.AddResourceToCollection, Permission.EditCollection), false,
281281
request.user, request.user.fold(false)(_.superAdminMode), exact)
282282
val possibleNewParents = allCollections.filter(c =>
283283
if(play.api.Play.current.plugin[services.SpaceSharingPlugin].isDefined) {
@@ -303,29 +303,55 @@ class Collections @Inject() (datasets: DatasetService,
303303
* Returns list of collections based on parameters and permissions.
304304
* TODO this needs to be cleaned up when do permissions for adding to a resource
305305
*/
306-
private def listCollections(title: Option[String], date: Option[String], limit: Int, permission: Set[Permission], mine: Boolean, user: Option[User], superAdmin: Boolean, exact: Boolean) : List[Collection] = {
306+
private def listCollections(when: Option[String], title: Option[String], date: Option[String], limit: Int, permission: Set[Permission], mine: Boolean, user: Option[User], superAdmin: Boolean, exact: Boolean) : List[Collection] = {
307307
if (mine && user.isEmpty) return List.empty[Collection]
308308

309-
(title, date) match {
310-
case (Some(t), Some(d)) => {
309+
(when, title, date) match {
310+
case (Some(w), Some(t), Some(d)) => {
311+
if (mine)
312+
collections.listUser(d, nextPage=(w=="a"), limit, t, user, superAdmin, user.get, exact)
313+
else
314+
collections.listAccess(d, nextPage=(w=="a"), limit, t, permission, user, superAdmin, true,false, exact)
315+
}
316+
case (Some(w), Some(t), None) => {
317+
if (mine)
318+
collections.listUser(limit, t, user, superAdmin, user.get, exact)
319+
else
320+
collections.listAccess(limit, t, permission, user, superAdmin, true,false, exact)
321+
}
322+
case (Some(w), None, Some(d)) => {
323+
if (mine)
324+
collections.listUser(d, nextPage=(w=="a"), limit, user, superAdmin, user.get)
325+
else
326+
collections.listAccess(d, nextPage=(w=="a"), limit, permission, user, superAdmin, true,false)
327+
}
328+
case (Some(w), None, None) => {
329+
if (mine)
330+
collections.listUser(limit, user, superAdmin, user.get)
331+
else
332+
collections.listAccess(limit, permission, user, superAdmin, true,false)
333+
}
334+
335+
// default when to be "after" if not present in parameters. i.e. nextPage=true
336+
case (None, Some(t), Some(d)) => {
311337
if (mine)
312338
collections.listUser(d, true, limit, t, user, superAdmin, user.get, exact)
313339
else
314340
collections.listAccess(d, true, limit, t, permission, user, superAdmin, true,false, exact)
315341
}
316-
case (Some(t), None) => {
342+
case (None, Some(t), None) => {
317343
if (mine)
318344
collections.listUser(limit, t, user, superAdmin, user.get, exact)
319345
else
320346
collections.listAccess(limit, t, permission, user, superAdmin, true,false, exact)
321347
}
322-
case (None, Some(d)) => {
348+
case (None, None, Some(d)) => {
323349
if (mine)
324350
collections.listUser(d, true, limit, user, superAdmin, user.get)
325351
else
326352
collections.listAccess(d, true, limit, permission, user, superAdmin, true,false)
327353
}
328-
case (None, None) => {
354+
case (None, None, None) => {
329355
if (mine)
330356
collections.listUser(limit, user, superAdmin, user.get)
331357
else

app/api/Datasets.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,16 @@ class Datasets @Inject()(
154154
*/
155155
private def listDatasets(when: Option[String], title: Option[String], date: Option[String], limit: Int, permission: Set[Permission], user: Option[User], superAdmin: Boolean, exact: Boolean) : List[Dataset] = {
156156
(when, title, date) match {
157-
case (Some(when), Some(t), Some(d)) => {
158-
datasets.listAccess(d, nextPage=(when=="a"), limit, t, permission, user, superAdmin, true,false, exact)
157+
case (Some(w), Some(t), Some(d)) => {
158+
datasets.listAccess(d, nextPage=(w=="a"), limit, t, permission, user, superAdmin, true,false, exact)
159159
}
160-
case (Some(when), Some(t), None) => {
160+
case (Some(w), Some(t), None) => {
161161
datasets.listAccess(limit, t, permission, user, superAdmin, true,false, exact)
162162
}
163-
case (Some(when), None, Some(d)) => {
164-
datasets.listAccess(d, nextPage=(when=="a"), limit, permission, user, superAdmin, true,false)
163+
case (Some(w), None, Some(d)) => {
164+
datasets.listAccess(d, nextPage=(w=="a"), limit, permission, user, superAdmin, true,false)
165165
}
166-
case (Some(when), None, None) => {
166+
case (Some(w), None, None) => {
167167
datasets.listAccess(limit, permission, user, superAdmin, true,false)
168168
}
169169
// default when to be "after" if not present in parameters. i.e. nextPage=true

app/api/Spaces.scala

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,45 +86,70 @@ class Spaces @Inject()(spaces: SpaceService,
8686
}
8787
}
8888

89-
def list(title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=false) { implicit request =>
90-
Ok(toJson(listSpaces(title, date, limit, Set[Permission](Permission.ViewSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
89+
def list(when: Option[String], title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=false) { implicit request =>
90+
Ok(toJson(listSpaces(when, title, date, limit, Set[Permission](Permission.ViewSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
9191
}
9292

93-
def listCanEdit(title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=true) { implicit request =>
94-
Ok(toJson(listSpaces(title, date, limit, Set[Permission](Permission.AddResourceToSpace, Permission.EditSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
93+
def listCanEdit(when: Option[String], title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=true) { implicit request =>
94+
Ok(toJson(listSpaces(when, title, date, limit, Set[Permission](Permission.AddResourceToSpace, Permission.EditSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
9595
}
9696

97-
def listCanEditNotAlreadyIn(collectionId : UUID, title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=true ){ implicit request =>
98-
Ok(toJson(listSpaces(title, date, limit, Set[Permission](Permission.AddResourceToSpace, Permission.EditSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
97+
def listCanEditNotAlreadyIn(when: Option[String], collectionId : UUID, title: Option[String], date: Option[String], limit: Int) = UserAction(needActive=true ){ implicit request =>
98+
Ok(toJson(listSpaces(when, title, date, limit, Set[Permission](Permission.AddResourceToSpace, Permission.EditSpace), false, request.user, request.user.fold(false)(_.superAdminMode), true).map(spaceToJson)))
9999
}
100100

101101
/**
102102
* Returns list of collections based on parameters and permissions.
103103
* TODO this needs to be cleaned up when do permissions for adding to a resource
104104
*/
105-
private def listSpaces(title: Option[String], date: Option[String], limit: Int, permission: Set[Permission], mine: Boolean, user: Option[User], superAdmin: Boolean, showPublic: Boolean, onlyTrial: Boolean = false) : List[ProjectSpace] = {
105+
private def listSpaces(when: Option[String], title: Option[String], date: Option[String], limit: Int, permission: Set[Permission], mine: Boolean, user: Option[User], superAdmin: Boolean, showPublic: Boolean, onlyTrial: Boolean = false) : List[ProjectSpace] = {
106106
if (mine && user.isEmpty) return List.empty[ProjectSpace]
107107

108-
(title, date) match {
109-
case (Some(t), Some(d)) => {
108+
(when, title, date) match {
109+
case (Some(w), Some(t), Some(d)) => {
110+
if (mine)
111+
spaces.listUser(d, nextPage=(w=="a"), limit, t, user, superAdmin, user.get)
112+
else
113+
spaces.listAccess(d, nextPage=(w=="a"), limit, t, permission, user, superAdmin, showPublic, showOnlyShared = false)
114+
}
115+
case (Some(w), Some(t), None) => {
116+
if (mine)
117+
spaces.listUser(limit, t, user, superAdmin, user.get)
118+
else
119+
spaces.listAccess(limit, t, permission, user, superAdmin, showPublic, showOnlyShared = false)
120+
}
121+
case (Some(w), None, Some(d)) => {
122+
if (mine)
123+
spaces.listUser(d, nextPage=(w=="a"), limit, user, superAdmin, user.get)
124+
else
125+
spaces.listAccess(d, nextPage=(w=="a"), limit, permission, user, superAdmin, showPublic, onlyTrial, showOnlyShared = false)
126+
}
127+
case (Some(w), None, None) => {
128+
if (mine)
129+
spaces.listUser(limit, user, superAdmin, user.get)
130+
else
131+
spaces.listAccess(limit, permission, user, superAdmin, showPublic, onlyTrial, showOnlyShared = false)
132+
}
133+
// default when to be "after" if not present in parameters. i.e. nextPage=true
134+
case (None, Some(t), Some(d)) => {
110135
if (mine)
111136
spaces.listUser(d, true, limit, t, user, superAdmin, user.get)
112137
else
113138
spaces.listAccess(d, true, limit, t, permission, user, superAdmin, showPublic, showOnlyShared = false)
114139
}
115-
case (Some(t), None) => {
140+
case (None, Some(t), None) => {
116141
if (mine)
117142
spaces.listUser(limit, t, user, superAdmin, user.get)
118143
else
119144
spaces.listAccess(limit, t, permission, user, superAdmin, showPublic, showOnlyShared = false)
120145
}
121-
case (None, Some(d)) => {
146+
case (None, None, Some(d)) => {
122147
if (mine)
123148
spaces.listUser(d, true, limit, user, superAdmin, user.get)
124149
else
125150
spaces.listAccess(d, true, limit, permission, user, superAdmin, showPublic, onlyTrial, showOnlyShared = false)
126151
}
127-
case (None, None) => {
152+
case (None, None, None) => {
128153
if (mine)
129154
spaces.listUser(limit, user, superAdmin, user.get)
130155
else

conf/routes

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -484,8 +484,8 @@ GET /api/files/:three_d_file_id/:filename
484484
# ----------------------------------------------------------------------
485485
# SPACES ENDPOINT
486486
# ----------------------------------------------------------------------
487-
GET /api/spaces @api.Spaces.list(title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12)
488-
GET /api/spaces/canEdit @api.Spaces.listCanEdit(title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12)
487+
GET /api/spaces @api.Spaces.list(when: Option[String] ?= None, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12)
488+
GET /api/spaces/canEdit @api.Spaces.listCanEdit(when: Option[String] ?= None, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12)
489489
GET /api/spaces/:id @api.Spaces.get(id: UUID)
490490
POST /api/spaces @api.Spaces.createSpace()
491491
DELETE /api/spaces/:id @api.Spaces.removeSpace(id: UUID)
@@ -508,10 +508,10 @@ GET /api/spaces/:id/collections
508508
# ----------------------------------------------------------------------
509509
# COLLECTIONS ENDPOINT
510510
# ----------------------------------------------------------------------
511-
GET /api/collections @api.Collections.list(title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
512-
GET /api/collections/canEdit @api.Collections.listCanEdit(title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
513-
GET /api/collections/datasetPossibleParents/:ds_id @api.Collections.addDatasetToCollectionOptions(ds_id: UUID, title: Option[String]?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
514-
GET /api/collections/possibleParents @api.Collections.listPossibleParents(currentCollectionId: String, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
511+
GET /api/collections @api.Collections.list(when: Option[String] ?= None, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
512+
GET /api/collections/canEdit @api.Collections.listCanEdit(when: Option[String] ?= None, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
513+
GET /api/collections/datasetPossibleParents/:ds_id @api.Collections.addDatasetToCollectionOptions(when: Option[String] ?= None, ds_id: UUID, title: Option[String]?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
514+
GET /api/collections/possibleParents @api.Collections.listPossibleParents(when: Option[String] ?= None, currentCollectionId: String, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
515515
POST /api/collections @api.Collections.createCollection()
516516
GET /api/collections/rootCollections @api.Collections.getRootCollections
517517
GET /api/collections/topLevelCollections @api.Collections.getTopLevelCollections
@@ -522,7 +522,7 @@ DELETE /api/collections/emptyTrash
522522
DELETE /api/collections/clearOldCollectionsTrash @api.Collections.clearOldCollectionsTrash(days : Int ?= 30)
523523
PUT /api/collections/restore/:collectionId @api.Collections.restoreCollection(collectionId : UUID)
524524
# deprecrated
525-
GET /api/collections/list @api.Collections.list(title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
525+
GET /api/collections/list @api.Collections.list(when: Option[String] ?= None, title: Option[String] ?= None, date: Option[String] ?= None, limit: Int ?= 12, exact: Boolean ?= false)
526526
POST /api/collections/:id/follow @api.Collections.follow(id: UUID)
527527
POST /api/collections/:id/unfollow @api.Collections.unfollow(id: UUID)
528528
GET /api/collections/:coll_id/datasets @api.Datasets.listInCollection(coll_id: UUID)

0 commit comments

Comments
 (0)