From fe9f31bbbc13a243060a6eaa3ffee189d540c19b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 20 Mar 2020 12:04:51 -0600 Subject: [PATCH] allow creating more team tournaments --- app/controllers/Tournament.scala | 8 ++++---- modules/tournament/src/main/DataForm.scala | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/controllers/Tournament.scala b/app/controllers/Tournament.scala index 68f1ea357f..2fff143f44 100644 --- a/app/controllers/Tournament.scala +++ b/app/controllers/Tournament.scala @@ -261,7 +261,7 @@ final class Tournament( fuccess(Redirect(routes.Tournament.home(1))) } - private def rateLimitCreation(me: UserModel, password: Option[String], req: RequestHeader)( + private def rateLimitCreation(me: UserModel, isPrivate: Boolean, req: RequestHeader)( create: => Fu[Result] ): Fu[Result] = { val cost = @@ -269,7 +269,7 @@ final class Tournament( env.streamer.liveStreamApi.isStreaming(me.id) || isGranted(_.ManageTournament, me) || me.isVerified || - password.isDefined) 1 + isPrivate) 1 else 3 CreateLimitPerUser(me.id, cost = cost) { CreateLimitPerIP(HTTPRequest lastRemoteAddress req, cost = cost) { @@ -286,7 +286,7 @@ final class Tournament( html = forms(me).bindFromRequest.fold( err => BadRequest(html.tournament.form(err, me, teams)).fuccess, setup => - rateLimitCreation(me, setup.password, ctx.req) { + rateLimitCreation(me, setup.isPrivate, ctx.req) { api.createTournament(setup, me, teams, getUserTeamIds) map { tour => Redirect { if (tour.isTeamBattle) routes.Tournament.teamBattleEdit(tour.id) @@ -310,7 +310,7 @@ final class Tournament( forms(me).bindFromRequest.fold( jsonFormErrorDefaultLang, setup => - rateLimitCreation(me, setup.password, req) { + rateLimitCreation(me, setup.isPrivate, req) { teamC.teamsIBelongTo(me) flatMap { teams => api.createTournament(setup, me, teams, getUserTeamIds) flatMap { tour => jsonView( diff --git a/modules/tournament/src/main/DataForm.scala b/modules/tournament/src/main/DataForm.scala index a87649631f..d14799cbc0 100644 --- a/modules/tournament/src/main/DataForm.scala +++ b/modules/tournament/src/main/DataForm.scala @@ -150,6 +150,8 @@ private[tournament] case class TournamentSetup( def sufficientDuration = estimateNumberOfGamesOneCanPlay >= 3 def excessiveDuration = estimateNumberOfGamesOneCanPlay <= 70 + def isPrivate = password.isDefined || conditions.teamMember.isDefined + private def estimateNumberOfGamesOneCanPlay: Double = (minutes * 60) / estimatedGameSeconds // There are 2 players, and they don't always use all their time (0.8)