Messages to completions conversion
Some checks failed
CI / scan_ruby (push) Failing after 15s
CI / scan_js (push) Successful in 11s
CI / lint (push) Successful in 14s
CI / test (push) Successful in 31s

This commit is contained in:
sto
2025-05-15 08:57:25 +02:00
parent e65d639ca6
commit c4902d85d5
16 changed files with 127 additions and 20 deletions

View File

@@ -27,8 +27,6 @@ class CompletionsController < ApplicationController
extend_completions!(@completion.contestant)
redirect_to contest_path(@contest)
else
logger = Logger.new(STDOUT)
logger.info(@completion.errors)
render :new, status: :unprocessable_entity
end
end
@@ -36,9 +34,7 @@ class CompletionsController < ApplicationController
def update
authorize @contest
if params[:contestant_id]
@completion.contestant_id = params[:contestant_id]
end
@completion.contestant_id = params[:contestant_id] if params[:contestant_id]
if @completion.update(completion_params)
extend_completions!(@completion.contestant)
redirect_to @contest
@@ -74,6 +70,6 @@ class CompletionsController < ApplicationController
end
def completion_params
params.expect(completion: [ :time_seconds, :contestant_id, :puzzle_id ])
params.expect(completion: [ :display_time_from_start, :contestant_id, :puzzle_id ])
end
end

View File

@@ -17,7 +17,7 @@ class ContestsController < ApplicationController
@action_path = edit_contest_path(@contest)
@contestants = @contest.contestants.order(:name)
@puzzles = @contest.puzzles.order(:id)
@messages = @contest.messages.order(:id)
@messages = @contest.messages.order(:time_seconds)
set_badges
end

View File

@@ -1,8 +1,15 @@
class MessagesController < ApplicationController
include CompletionsConcern
skip_before_action :verify_authenticity_token, only: %i[ create ]
before_action :set_contest, only: %i[ destroy ]
before_action :set_message, only: %i[ destroy ]
before_action :set_contest, only: %i[ convert destroy ]
before_action :set_message, only: %i[ convert destroy ]
before_action :set_data, only: %i[ convert ]
def self.local_prefixes
super + [ "completions" ]
end
def create
allow_unauthenticated_access
@@ -10,7 +17,8 @@ class MessagesController < ApplicationController
@message_params = message_params
@contest = Contest.find_by_token_for(:token, params[:token])
@message = Message.new(text: params[:text], time_seconds: params[:time_seconds], contest: @contest)
@message = Message.new(text: params[:text], time_seconds: params[:time_seconds],
display_time: display_time(params[:time_seconds]), contest: @contest)
if @contest && @message.save
respond_to do |format|
format.json { render json: {}, status: 200 }
@@ -22,6 +30,15 @@ class MessagesController < ApplicationController
end
end
def convert
authorize @contest
@completion = Completion.new()
@completion.display_time_from_start = @message.display_time
render "completions/new"
end
def destroy
authorize @contest
@@ -36,10 +53,15 @@ class MessagesController < ApplicationController
end
def set_message
@message = Message.find(params[:id])
@message = Message.find(params[:message_id])
end
def set_data
@contestants = @contest.contestants
@puzzles = @contest.puzzles
end
def message_params
params.expect(message: [ :text, :time_seconds, :token ])
params.expect(message: [ :author, :text, :time_seconds, :token ])
end
end