Show More
Commit Description:
- add compiler comment...
Commit Description:
- add compiler comment - fix error when problem is not present (grafted from 5dcd02c21a697ca0a770d0aab8380eacc42eba04)
File last commit:
Show/Diff file:
Action:
app/controllers/submissions_controller.rb | 137 lines | 3.7 KiB | text/x-ruby | RubyLexer |
class SubmissionsController < ApplicationController
before_filter :authenticate
before_filter :submission_authorization, only: [:show, :direct_edit_submission]
# GET /submissions
# GET /submissions.json
# Show problem selection and user's submission of that problem
def index
@user = @current_user
@problems = @user.available_problems
if params[:problem_id]==nil
@problem = nil
@submissions = nil
else
@problem = Problem.find_by_id(params[:problem_id])
if (@problem == nil) or (not @problem.available)
redirect_to main_list_path
flash[:notice] = 'Error: submissions for that problem are not viewable.'
return
end
@submissions = Submission.find_all_by_user_problem(@user.id, @problem.id)
end
end
# GET /submissions/1
# GET /submissions/1.json
def show
@submission = Submission.find(params[:id])
#log the viewing
user = User.find(session[:user_id])
SubmissionViewLog.create(user_id: session[:user_id],submission_id: @submission.id) unless user.admin?
end
#on-site new submission on specific problem
def direct_edit_problem
@problem = Problem.find(params[:problem_id])
@source = ''
render 'edit'
end
# GET /submissions/1/edit
def edit
@submission = Submission.find(params[:id])
@source = @submission.source.to_s
@problem = @submission.problem
@lang_id = @submission.language.id
end
def get_latest_submission_status
@problem = Problem.find(params[:pid])
@submission = Submission.find_last_by_user_and_problem(params[:uid],params[:pid])
puts User.find(params[:uid]).login
puts Problem.find(params[:pid]).name
puts 'nil' unless @submission
respond_to do |format|
format.js
end
end
# # GET /submissions/new
# # GET /submissions/new.json
# def new
# @submission = Submission.new
#
# respond_to do |format|
# format.html # new.html.erb
# format.json { render json: @submission }
# end
# end
#
#
# # POST /submissions
# # POST /submissions.json
# def create
# @submission = Submission.new(params[:submission])
#
# respond_to do |format|
# if @submission.save
# format.html { redirect_to @submission, notice: 'Submission was successfully created.' }
# format.json { render json: @submission, status: :created, location: @submission }
# else
# format.html { render action: "new" }
# format.json { render json: @submission.errors, status: :unprocessable_entity }
# end
# end
# end
#
# # PUT /submissions/1
# # PUT /submissions/1.json
# def update
# @submission = Submission.find(params[:id])
#
# respond_to do |format|
# if @submission.update_attributes(params[:submission])
# format.html { redirect_to @submission, notice: 'Submission was successfully updated.' }
# format.json { head :no_content }
# else
# format.html { render action: "edit" }
# format.json { render json: @submission.errors, status: :unprocessable_entity }
# end
# end
# end
#
# # DELETE /submissions/1
# # DELETE /submissions/1.json
# def destroy
# @submission = Submission.find(params[:id])
# @submission.destroy
#
# respond_to do |format|
# format.html { redirect_to submissions_url }
# format.json { head :no_content }
# end
# end
protected
def submission_authorization
#admin always has privileged
if @current_user.admin?
return true
end
sub = Submission.find(params[:id])
if sub.problem.available?
puts "sub = #{sub.user.id}, current = #{@current_user.id}"
return true if GraderConfiguration["right.user_view_submission"] or sub.user == @current_user
end
#default to NO
unauthorized_redirect
return false
end
end