Skip to content

Commit 4c89647

Browse files
author
Kenneth Daily
authored
Merge pull request #33 from Sage-Bionetworks/develop
Develop
2 parents 5716c5b + 6288a1c commit 4c89647

File tree

8 files changed

+60
-57
lines changed

8 files changed

+60
-57
lines changed

DESCRIPTION

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
Package: synapseusagereports
22
Title: Generate a Reports of Synapse Project Usage
3-
Version: 0.3-alpha
3+
Version: 0.3
44
Authors@R: person("Kenneth", "Daily", email = "[email protected]", role = c("aut", "cre"))
55
Description: Generate a RMarkdown report of Synapse Project usage, including users, page views and downloads.
66
Depends: R (>= 3.3.1)
77
License: MIT
88
Encoding: UTF-8
99
LazyData: true
10+
URL: https://github.com/Sage-Bionetworks/synapseusagereports
11+
BugReports: https://github.com/Sage-Bionetworks/synapseusagereports/issues
1012
RoxygenNote: 6.1.0
1113
Imports:
1214
dplyr,
@@ -18,6 +20,6 @@ Imports:
1820
optparse,
1921
readr,
2022
testthat,
21-
synapseClient
22-
Remotes:
23-
Sage-Bionetworks/rSynapseClient
23+
synapser
24+
Additional_repositories:
25+
https://sage-bionetworks.github.io/ran

R/lib.R

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -136,36 +136,25 @@ getData <- function(con, qTemplate, projectId, timestampBreaksDf) {
136136
#' @export
137137
getTeamMemberDF <- function(teamId) {
138138

139-
totalNumberOfResults <- 1000
140-
offset <- 0
141-
limit <- 50
142-
userListREST <- list()
139+
foo <- synapser::synGetTeamMembers(teamId)
140+
foo <- foo$asList()
143141

144-
while(offset<totalNumberOfResults) {
145-
result <- synapseClient::synRestGET(sprintf("/teamMembers/%s?limit=%s&offset=%s", teamId, limit, offset))
146-
147-
totalNumberOfResults <- result$totalNumberOfResults
148-
149-
userListREST <- c(userListREST, result$results)
150-
151-
offset <- offset + limit
152-
}
142+
foo %>% {
143+
tibble(teamId=purrr::map_chr(., 'teamId'),
144+
userId=purrr::map_chr(., c("member", "ownerId")))
145+
}
153146

154-
userList <- plyr::ldply(userListREST,
155-
function(x) data.frame(userId=as.character(x$member$ownerId),
156-
teamId=as.character(x$teamId)))
157-
userList
158147
}
159148

160149
#' @export
161150
aclToMemberList <- function(acl) {
162-
aclMemberList <- plyr::ldply(acl@resourceAccess@content,
163-
function(x) data.frame(principalId=as.character(x@principalId),
164-
teamId=acl@id))
151+
aclMemberList <- plyr::ldply(acl$resourceAccess,
152+
function(x) data.frame(principalId=as.character(x$principalId),
153+
teamId=acl$id))
165154

166155
accessUsers <- plyr::llply(chunk(aclMemberList$principalId, 50),
167-
function(x) synapseClient::synRestGET(sprintf("/userGroupHeaders/batch?ids=%s",
168-
paste(x, collapse=",")))$children)
156+
function(x) synapser::synRestGET(sprintf("/userGroupHeaders/batch?ids=%s",
157+
paste(x, collapse=",")))$children)
169158

170159
userGroupHeaders <- do.call(c, accessUsers)
171160

@@ -174,11 +163,9 @@ aclToMemberList <- function(acl) {
174163
}
175164

176165
#' @export
177-
aclToUserList <- function(synId) {
178-
acl <- synapseClient::synGetEntityACL(synId)
179-
166+
aclToUserList <- function(acl) {
180167
aclMemberList <- aclToMemberList(acl)
181-
aclMemberList$teamId <- synId
168+
aclMemberList$teamId <- acl$id
182169

183170
userList <- plyr::ldply(aclMemberList$ownerId, getTeamMemberDF)
184171

@@ -194,7 +181,8 @@ aclToUserList <- function(synId) {
194181
processAclUserList <- function(projectId, aclTeamOrder) {
195182
# Get users at project level and select the team
196183
# they are on dependent on the ordering in aclTeamOrder
197-
aclUserList <- aclToUserList(paste0("syn", projectId))
184+
acl <- synapser::synRestGET(sprintf('/entity/%s/acl', paste0("syn", projectId)))
185+
aclUserList <- aclToUserList(acl)
198186
aclUserList$teamId <- factor(aclUserList$teamId,
199187
levels=aclTeamOrder,
200188
ordered=TRUE)
@@ -235,8 +223,8 @@ getQueryUserProfiles <- function(queryData, useTeamGrouping, aclUserList) {
235223

236224

237225
accessUsers <- plyr::llply(chunk(unique(queryData$userId), 50),
238-
function(x) synapseClient::synRestGET(sprintf("/userGroupHeaders/batch?ids=%s",
239-
paste(x, collapse=",")))$children)
226+
function(x) synapser::synRestGET(sprintf("/userGroupHeaders/batch?ids=%s",
227+
paste(x, collapse=",")))$children)
240228

241229
accessUsersChildren <- do.call(c, accessUsers)
242230

@@ -258,18 +246,18 @@ getQueryUserProfiles <- function(queryData, useTeamGrouping, aclUserList) {
258246
allUsers$teamId[allUsers$userId == "273950"] <- "Anonymous"
259247

260248
if (useTeamGrouping) {
261-
teamInfo <- plyr::ddply(allUsers %>%
262-
dplyr::filter(teamId != "Registered Synapse User",
263-
teamId != "Anonymous",
264-
!startsWith(as.character(allUsers$teamId),
265-
"syn")) %>%
266-
dplyr::select(teamId) %>% dplyr::distinct(),
267-
plyr::.(teamId),
268-
function(x) {
269-
tmp <- synapseClient::synRestGET(sprintf("/team/%s", x$teamId));
270-
data.frame(teamId=x$teamId, teamName=tmp$name)
271-
}
272-
)
249+
tmp_all_users <- allUsers %>%
250+
dplyr::filter(teamId != "Registered Synapse User",
251+
teamId != "Anonymous") %>%
252+
dplyr::select(teamId) %>% dplyr::distinct(.keep_all=TRUE)
253+
254+
teamInfo <- lapply(as.list(as.character(tmp_all_users$teamId)),
255+
function (x) synapser::synGetTeam(x)) %>%
256+
{
257+
tibble(teamId=tmp_all_users$teamId,
258+
teamName=purrr::map_chr(., 'name'))
259+
}
260+
273261
if (nrow(teamInfo) > 0) {
274262
allUsers <- dplyr::left_join(allUsers, teamInfo, by="teamId")
275263
} else {

inst/scripts/render_report.R

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env Rscript
22

3-
suppressPackageStartupMessages(library(synapseClient))
3+
suppressPackageStartupMessages(library(synapser))
44
suppressPackageStartupMessages(library(optparse))
55
suppressPackageStartupMessages(library(synapseusagereports))
66

@@ -12,7 +12,11 @@ option_list <- list(
1212
make_option(c("--acl_team_order"), type = "character",
1313
help = "comma separated list of teams in ACL.",
1414
dest = "acl_team_order",
15-
default = '')
15+
default = ''),
16+
make_option(c("--synapse_config"), type = "character",
17+
help = "Synapse configuration file.",
18+
dest = "synapse_config",
19+
default="~/.synapseConfig")
1620
)
1721

1822
arguments <- parse_args(OptionParser(usage = "%prog [options] file",
@@ -22,7 +26,7 @@ arguments <- parse_args(OptionParser(usage = "%prog [options] file",
2226
opts <- arguments$options
2327
data_file <- arguments$args
2428

25-
synapseLogin()
29+
login <- capture.output(synLogin())
2630

2731
render_report(project_id = opts$project_id,
2832
acl_team_order = opts$acl_team_order,

inst/scripts/report_data_query.R

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
suppressPackageStartupMessages(library(dplyr))
44
suppressPackageStartupMessages(library(readr))
5-
suppressPackageStartupMessages(library(synapseClient))
65
suppressPackageStartupMessages(library(RMySQL))
76
suppressPackageStartupMessages(library(yaml))
87
suppressPackageStartupMessages(library(testthat))
@@ -37,8 +36,6 @@ if (n_months_from_today > 6) {
3736
message("Your start date is more than 6 months ago. The results of your queries may be incorrect.")
3837
}
3938

40-
foo <- suppressMessages(synapseLogin())
41-
4239
config <- yaml.load_file(opts$config_file)
4340

4441
con <- dbConnect(MySQL(),

inst/templates/report.Rmd

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ params:
1010

1111
```{r libs, echo=FALSE, warning=FALSE, message=FALSE}
1212
library(dplyr)
13-
library(synapseClient)
13+
library(synapser)
1414
library(RMySQL)
1515
library(yaml)
1616
library(lubridate)
1717
library(synapseusagereports)
1818
19-
synapseLogin()
19+
foo <- capture.output(synLogin())
2020
2121
options(xtable.type="html")
2222
@@ -34,21 +34,21 @@ knitr::opts_chunk$set(
3434
int_project_id <- gsub("syn", "", params$projectId)
3535
proj <- synGet(params$projectId)
3636
37-
if (is.na(params$aclTeamOrder)) {
37+
if (is.na(params$aclTeamOrder) | params$aclTeamOrder == '') {
3838
useTeamGrouping <- FALSE
3939
} else {
4040
useTeamGrouping <- TRUE
4141
aclTeamOrder <- stringr::str_split(params$aclTeamOrder,
42-
pattern=',',
43-
simplify = FALSE)[[1]]
42+
pattern=',',
43+
simplify = FALSE)[[1]]
4444
}
4545
4646
4747
queryData <- readr::read_csv(params$queryDataFile) %>%
4848
mutate(userId=as.character(userId))
4949
```
5050

51-
### Activity on Synapse project `r proj@properties$name` (`r params$projectId`) from `r min(queryData$date)` to `r max(queryData$date)`.
51+
### Activity on Synapse project `r proj$properties$name` (`r params$projectId`) from `r min(queryData$date)` to `r max(queryData$date)`.
5252

5353
```{r users}
5454
if (useTeamGrouping) {

tests/testthat.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
library(testthat)
2+
library(synapseusagereports)
3+
4+
test_check("synapseusagereports")

tests/testthat/test-lib.R

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
context("test-lib")
2+
3+
test_acl_json <- '{"id":"syn12509922","resourceAccess":[{"principalId":3323072,"accessType":["DELETE","DOWNLOAD","READ","CHANGE_SETTINGS","UPDATE","MODERATE","CREATE","CHANGE_PERMISSIONS"]}],"etag":"19a13eb7-8d24-4d26-b9d7-b8fa97b8ce92","creationDate":"2018-06-11T18:41:45.244Z","uri":"/entity/syn12509922/acl"}'
4+
test_acl <- jsonlite::fromJSON(test_acl_json, simplifyVector = FALSE)
5+
6+
test_that("acl to user list", {
7+
expect_equal(aclToMemberList(test_acl), )
8+
})

0 commit comments

Comments
 (0)