Add contest duration & complete ranking mode implementation
Some checks failed
CI / scan_ruby (push) Successful in 21s
CI / scan_js (push) Successful in 14s
CI / lint (push) Successful in 13s
CI / test (push) Failing after 37s

This commit is contained in:
sto
2025-11-18 09:18:18 +01:00
parent b88460ae71
commit e67ee92838
12 changed files with 62 additions and 12 deletions

View File

@@ -4,6 +4,8 @@
#
# id :integer not null, primary key
# allow_registration :boolean default(FALSE)
# duration :string
# duration_seconds :integer
# lang :string default("en")
# name :string
# offline_form :boolean default(FALSE)
@@ -37,9 +39,19 @@ class Contest < ApplicationRecord
friendly_id :name, use: :slugged
before_save :add_duration_seconds
validates :name, presence: true
validates :lang, inclusion: { in: Languages::AVAILABLE_LANGUAGES.map { |lang| lang[:id] } }
validates :ranking_mode, inclusion: { in: Ranking::AVAILABLE_RANKING_MODES.map { |lang| lang[:id] } }
validates :duration, format: { with: /\A(\d\d:\d\d|\d:\d\d)\z/ }
generates_token_for :token
def add_duration_seconds
arr = self.duration.split(":")
if arr.size == 2
self.duration_seconds = arr[0].to_i * 3600 + arr[1].to_i * 60
end
end
end