diff --git a/src/main/scala/gitbucket/core/controller/ReleasesController.scala b/src/main/scala/gitbucket/core/controller/ReleasesController.scala index 76d4cf0..0b5c8d1 100644 --- a/src/main/scala/gitbucket/core/controller/ReleasesController.scala +++ b/src/main/scala/gitbucket/core/controller/ReleasesController.scala @@ -53,7 +53,7 @@ get("/:owner/:repository/releases")(referrersOnly {repository => html.list( repository, - getReleaseTagMap(repository.owner, repository.name), + getReleases(repository.owner, repository.name), getReleaseAssetsMap(repository.owner, repository.name), hasDeveloperRole(repository.owner, repository.name, context.loginAccount)) }) diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 48cc2d3..2361b91 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -627,8 +627,8 @@ /** * Displays tags. */ - get("/:owner/:repository/tags")(referrersOnly { - html.tags(_) + get("/:owner/:repository/tags")(referrersOnly { repository => + html.tags(repository, hasDeveloperRole(repository.owner, repository.name, context.loginAccount)) }) /** diff --git a/src/main/scala/gitbucket/core/model/BasicTemplate.scala b/src/main/scala/gitbucket/core/model/BasicTemplate.scala index fdaeb4e..5608bbd 100644 --- a/src/main/scala/gitbucket/core/model/BasicTemplate.scala +++ b/src/main/scala/gitbucket/core/model/BasicTemplate.scala @@ -81,15 +81,4 @@ def byBranch(owner: String, repository: String, branchName: String) = byRepository(owner, repository) && (branch === branchName.bind) def byBranch(owner: Rep[String], repository: Rep[String], branchName: Rep[String]) = byRepository(owner, repository) && (this.branch === branchName) } - - trait ReleaseTemplate extends BasicTemplate { self: Table[_] => - val releaseId = column[Int]("RELEASE_ID") - - def byRelease(owner: String, repository: String, releaseId: Int) = - byRepository(owner, repository) && (this.releaseId === releaseId.bind) - - def byRelease(userName: Rep[String], repositoryName: Rep[String], releaseId: Rep[Int]) = - byRepository(userName, repositoryName) && (this.releaseId === releaseId) - } - } diff --git a/src/main/scala/gitbucket/core/model/Release.scala b/src/main/scala/gitbucket/core/model/Release.scala index a46afff..5d1b4e8 100644 --- a/src/main/scala/gitbucket/core/model/Release.scala +++ b/src/main/scala/gitbucket/core/model/Release.scala @@ -8,7 +8,8 @@ lazy val Releases = TableQuery[Releases] - class Releases(tag_ : Tag) extends Table[Release](tag_, "RELEASE") with ReleaseTemplate { + class Releases(tag_ : Tag) extends Table[Release](tag_, "RELEASE") with BasicTemplate { + val releaseId = column[Int]("RELEASE_ID", O AutoInc) val name = column[String]("NAME") val tag = column[String]("TAG") val author = column[String]("AUTHOR") @@ -27,6 +28,12 @@ def byTag(userName: Rep[String], repositoryName: Rep[String], tag: Rep[String]) = byRepository(userName, repositoryName) && (this.tag === tag) + + def byRelease(owner: String, repository: String, releaseId: Int) = + byRepository(owner, repository) && (this.releaseId === releaseId.bind) + + def byRelease(userName: Rep[String], repositoryName: Rep[String], releaseId: Rep[Int]) = + byRepository(userName, repositoryName) && (this.releaseId === releaseId) } } diff --git a/src/main/scala/gitbucket/core/model/ReleasesAsset.scala b/src/main/scala/gitbucket/core/model/ReleasesAsset.scala index 166474d..156ef75 100644 --- a/src/main/scala/gitbucket/core/model/ReleasesAsset.scala +++ b/src/main/scala/gitbucket/core/model/ReleasesAsset.scala @@ -10,7 +10,8 @@ lazy val ReleaseAssets = TableQuery[ReleaseAssets] - class ReleaseAssets(tag : Tag) extends Table[ReleaseAsset](tag, "RELEASE_ASSET") with ReleaseTemplate { + class ReleaseAssets(tag : Tag) extends Table[ReleaseAsset](tag, "RELEASE_ASSET") with BasicTemplate { + val releaseId = column[Int]("RELEASE_ID") val releaseAssetId = column[Int]("RELEASE_ASSET_ID", O AutoInc) val fileName = column[String]("FILE_NAME") val label = column[String]("LABEL") @@ -22,6 +23,12 @@ def * = (userName, repositoryName, releaseId, releaseAssetId, fileName, label, size, uploader, registeredDate, updatedDate) <> (ReleaseAsset.tupled, ReleaseAsset.unapply) def byPrimaryKey(owner: String, repository: String, releaseId: Int, fileName: String) = byRelease(owner, repository, releaseId) && (this.fileName === fileName.bind) + + def byRelease(owner: String, repository: String, releaseId: Int) = + byRepository(owner, repository) && (this.releaseId === releaseId.bind) + + def byRelease(userName: Rep[String], repositoryName: Rep[String], releaseId: Rep[Int]) = + byRepository(userName, repositoryName) && (this.releaseId === releaseId) } } diff --git a/src/main/scala/gitbucket/core/service/ReleaseService.scala b/src/main/scala/gitbucket/core/service/ReleaseService.scala index 8d556ec..2203d3d 100644 --- a/src/main/scala/gitbucket/core/service/ReleaseService.scala +++ b/src/main/scala/gitbucket/core/service/ReleaseService.scala @@ -92,11 +92,6 @@ else None } - def getReleaseTagMap(owner: String, repository: String)(implicit s: Session): Map[String, Release] = { - val releases = getReleases(owner, repository) - releases.map(rel => (rel.tag -> rel)).toMap - } - def updateRelease(owner: String, repository: String, releaseId: Int, title: String, content: Option[String])(implicit s: Session): Int = { Releases .filter (_.byPrimaryKey(owner, repository, releaseId)) diff --git a/src/main/scala/gitbucket/core/service/RepositoryService.scala b/src/main/scala/gitbucket/core/service/RepositoryService.scala index 79e7e47..7b44eb5 100644 --- a/src/main/scala/gitbucket/core/service/RepositoryService.scala +++ b/src/main/scala/gitbucket/core/service/RepositoryService.scala @@ -542,6 +542,9 @@ (id, path.substring(id.length).stripPrefix("/")) } + def getReleaseByTag(tag: String)(implicit s: Session): Option[Release] = { + Releases filter (_.byTag(owner, name, tag)) firstOption + } } def httpUrl(owner: String, name: String)(implicit context: Context): String = s"${context.baseUrl}/git/${owner}/${name}.git" @@ -550,5 +553,4 @@ context.settings.sshAddress.map { x => s"ssh://${x.genericUser}@${x.host}:${x.port}/${owner}/${name}.git" } } else None def openRepoUrl(openUrl: String)(implicit context: Context): String = s"github-${context.platform}://openRepo/${openUrl}" - } diff --git a/src/main/twirl/gitbucket/core/releases/editrelease.scala.html b/src/main/twirl/gitbucket/core/releases/editrelease.scala.html index f7a3aef..6c46ecc 100644 --- a/src/main/twirl/gitbucket/core/releases/editrelease.scala.html +++ b/src/main/twirl/gitbucket/core/releases/editrelease.scala.html @@ -4,8 +4,8 @@ }
- - + +