mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-10 23:45:50 +01:00
Merge branch 'fix-498-dash-pr'
This commit is contained in:
@@ -80,7 +80,7 @@ trait DashboardControllerBase extends ControllerBase {
|
|||||||
}.copy(repo = repository))
|
}.copy(repo = repository))
|
||||||
|
|
||||||
val userName = context.loginAccount.get.userName
|
val userName = context.loginAccount.get.userName
|
||||||
val allRepos = getAllRepositories()
|
val allRepos = getAllRepositories(userName)
|
||||||
val userRepos = getUserRepositories(userName, context.baseUrl, true).map(repo => repo.owner -> repo.name)
|
val userRepos = getUserRepositories(userName, context.baseUrl, true).map(repo => repo.owner -> repo.name)
|
||||||
val filterUser = Map(filter -> userName)
|
val filterUser = Map(filter -> userName)
|
||||||
val page = IssueSearchCondition.page(request)
|
val page = IssueSearchCondition.page(request)
|
||||||
@@ -97,7 +97,7 @@ trait DashboardControllerBase extends ControllerBase {
|
|||||||
condition,
|
condition,
|
||||||
None,
|
None,
|
||||||
false),
|
false),
|
||||||
getPullRequestCountGroupByUser(condition.state == "closed", None, None),
|
getAllPullRequestCountGroupByUser(condition.state == "closed", userName),
|
||||||
userRepos.map { case (userName, repoName) =>
|
userRepos.map { case (userName, repoName) =>
|
||||||
(userName, repoName, counts.find { x => x._1 == userName && x._2 == repoName }.map(_._3).getOrElse(0))
|
(userName, repoName, counts.find { x => x._1 == userName && x._2 == repoName }.map(_._3).getOrElse(0))
|
||||||
}.sortBy(_._3).reverse,
|
}.sortBy(_._3).reverse,
|
||||||
|
|||||||
@@ -36,6 +36,24 @@ trait PullRequestService { self: IssuesService =>
|
|||||||
.list
|
.list
|
||||||
.map { x => PullRequestCount(x._1, x._2) }
|
.map { x => PullRequestCount(x._1, x._2) }
|
||||||
|
|
||||||
|
def getAllPullRequestCountGroupByUser(closed: Boolean, userName: String)(implicit s: Session): List[PullRequestCount] =
|
||||||
|
PullRequests
|
||||||
|
.innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
|
||||||
|
.innerJoin(Repositories).on { (t, t3) => t._2.byRepository(t3.userName, t3.repositoryName) }
|
||||||
|
.filter { case (t, t3) =>
|
||||||
|
(t._2.closed === closed.bind) &&
|
||||||
|
(
|
||||||
|
(t3.isPrivate === false.bind) ||
|
||||||
|
(t3.userName === userName.bind) ||
|
||||||
|
(Collaborators.filter { t4 => t4.byRepository(t3.userName, t3.repositoryName) && (t4.collaboratorName === userName.bind)} exists)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
.groupBy { case (t, t3) => t._2.openedUserName }
|
||||||
|
.map { case (userName, t) => userName -> t.length }
|
||||||
|
.sortBy(_._2 desc)
|
||||||
|
.list
|
||||||
|
.map { x => PullRequestCount(x._1, x._2) }
|
||||||
|
|
||||||
def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int,
|
def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int,
|
||||||
originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String,
|
originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String,
|
||||||
commitIdFrom: String, commitIdTo: String)(implicit s: Session): Unit =
|
commitIdFrom: String, commitIdTo: String)(implicit s: Session): Unit =
|
||||||
|
|||||||
@@ -166,8 +166,19 @@ trait RepositoryService { self: AccountService =>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def getAllRepositories()(implicit s: Session): List[(String, String)] = {
|
/**
|
||||||
Repositories.sortBy(_.lastActivityDate desc).map{ t =>
|
* Returns the repositories without private repository that user does not have access right.
|
||||||
|
* Include public repository, private own repository and private but collaborator repository.
|
||||||
|
*
|
||||||
|
* @param userName the user name of collaborator
|
||||||
|
* @return the repository infomation list
|
||||||
|
*/
|
||||||
|
def getAllRepositories(userName: String)(implicit s: Session): List[(String, String)] = {
|
||||||
|
Repositories.filter { t1 =>
|
||||||
|
(t1.isPrivate === false.bind) ||
|
||||||
|
(t1.userName === userName.bind) ||
|
||||||
|
(Collaborators.filter { t2 => t2.byRepository(t1.userName, t1.repositoryName) && (t2.collaboratorName === userName.bind)} exists)
|
||||||
|
}.sortBy(_.lastActivityDate desc).map{ t =>
|
||||||
(t.userName, t.repositoryName)
|
(t.userName, t.repositoryName)
|
||||||
}.list
|
}.list
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user