Description:
allow ta to set model submission
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r856:9a927c70d5aa - - 4 files changed: 13 inserted, 10 deleted

@@ -111,49 +111,49
111 result = [ ]
111 result = [ ]
112 http.start do |http|
112 http.start do |http|
113 req = Net::HTTP::Post.new('/cas/api/?q=studentAuthenticate')
113 req = Net::HTTP::Post.new('/cas/api/?q=studentAuthenticate')
114 #req = Net::HTTP::Post.new('/appX/prod/?q=studentAuthenticate')
114 #req = Net::HTTP::Post.new('/appX/prod/?q=studentAuthenticate')
115 #req = Net::HTTP::Post.new('/app2/prod/api/?q=studentAuthenticate')
115 #req = Net::HTTP::Post.new('/app2/prod/api/?q=studentAuthenticate')
116 param = "appid=#{appid}&appsecret=#{appsecret}&username=#{login}&password=#{password}"
116 param = "appid=#{appid}&appsecret=#{appsecret}&username=#{login}&password=#{password}"
117 resp = http.request(req,param)
117 resp = http.request(req,param)
118 result = JSON.parse resp.body
118 result = JSON.parse resp.body
119 puts result
119 puts result
120 end
120 end
121 return true if result["type"] == "beanStudent"
121 return true if result["type"] == "beanStudent"
122 rescue => e
122 rescue => e
123 puts e
123 puts e
124 puts e.message
124 puts e.message
125 return false
125 return false
126 end
126 end
127 return false
127 return false
128 end
128 end
129
129
130 def admin?
130 def admin?
131 has_role?('admin')
131 has_role?('admin')
132 end
132 end
133
133
134 def has_role?(role)
134 def has_role?(role)
135 - self.roles.where(name: role).count > 0
135 + self.roles.where(name: [role,'admin']).count > 0
136 end
136 end
137
137
138 def email_for_editing
138 def email_for_editing
139 if self.email==nil
139 if self.email==nil
140 "(unknown)"
140 "(unknown)"
141 elsif self.email==''
141 elsif self.email==''
142 "(blank)"
142 "(blank)"
143 else
143 else
144 self.email
144 self.email
145 end
145 end
146 end
146 end
147
147
148 def email_for_editing=(e)
148 def email_for_editing=(e)
149 self.email=e
149 self.email=e
150 end
150 end
151
151
152 def alias_for_editing
152 def alias_for_editing
153 if self.alias==nil
153 if self.alias==nil
154 "(unknown)"
154 "(unknown)"
155 elsif self.alias==''
155 elsif self.alias==''
156 "(blank)"
156 "(blank)"
157 else
157 else
158 self.alias
158 self.alias
159 end
159 end
@@ -33,54 +33,56
33 %canvas#chart{height: '50px'}
33 %canvas#chart{height: '50px'}
34
34
35 .col-md-4
35 .col-md-4
36 .card
36 .card
37 .card-body
37 .card-body
38 %h2.card-title General Info
38 %h2.card-title General Info
39 .row
39 .row
40 .col-sm-6
40 .col-sm-6
41 Subs
41 Subs
42 .col-sm-6
42 .col-sm-6
43 = @summary[:count]
43 = @summary[:count]
44 .row
44 .row
45 .col-sm-6
45 .col-sm-6
46 Solved/Attempted User
46 Solved/Attempted User
47 .col-sm-6
47 .col-sm-6
48 #{@summary[:solve]}/#{@summary[:attempt]} (#{(@summary[:solve]*100.0/@summary[:attempt]).round(1)}%)
48 #{@summary[:solve]}/#{@summary[:attempt]} (#{(@summary[:solve]*100.0/@summary[:attempt]).round(1)}%)
49 .row
49 .row
50 .col-md-4
50 .col-md-4
51 .card
51 .card
52 .card-body
52 .card-body
53 %h2.card-title Model submission
53 %h2.card-title Model submission
54 %table.table.table-hover
54 %table.table.table-hover
55 %thead
55 %thead
56 %tr
56 %tr
57 - %th #Sub
57 + %th #Sub (lang)
58 %th Author
58 %th Author
59 %tbody
59 %tbody
60 - @model_subs.each do |sub|
60 - @model_subs.each do |sub|
61 %tr
61 %tr
62 - %td= link_to "##{sub.id}", submission_path(sub)
62 + %td
63 + = link_to "##{sub.id}", submission_path(sub)
64 + = "(#{sub.language.pretty_name})"
63 %td= sub.user.full_name
65 %td= sub.user.full_name
64 .col-md-8
66 .col-md-8
65 - if @best
67 - if @best
66 .card
68 .card
67 .card-body
69 .card-body
68 %h2.card-title Top Submissions
70 %h2.card-title Top Submissions
69 %table.table.table-hover
71 %table.table.table-hover
70 %thead
72 %thead
71 %tr
73 %tr
72 %th Language
74 %th Language
73 %th Best runtime (ms)
75 %th Best runtime (ms)
74 %th Best memory (kbytes)
76 %th Best memory (kbytes)
75 %th Shortest Code (bytes)
77 %th Shortest Code (bytes)
76 %th First solver
78 %th First solver
77 %tbody
79 %tbody
78 %tr.bg-warning
80 %tr.bg-warning
79 %td
81 %td
80 Overall
82 Overall
81 %td
83 %td
82 by #{link_to @best[:runtime][:user], stat_user_path(@best[:runtime][:user_id])}
84 by #{link_to @best[:runtime][:user], stat_user_path(@best[:runtime][:user_id])}
83 %br
85 %br
84 using <span class="text-success">#{@best[:runtime][:lang]}</span>
86 using <span class="text-success">#{@best[:runtime][:lang]}</span>
85 %br
87 %br
86 with <span class="text-success">#{@best[:runtime][:value] * 1000} milliseconds</span>
88 with <span class="text-success">#{@best[:runtime][:value] * 1000} milliseconds</span>
@@ -1,29 +1,30
1
1
2 /- if params[:id]
2 /- if params[:id]
3 / %h1 Tasks Hall of Fame
3 / %h1 Tasks Hall of Fame
4 / = link_to('[back to All-Time Hall of Fame]', action: 'problem_hof', id: nil )
4 / = link_to('[back to All-Time Hall of Fame]', action: 'problem_hof', id: nil )
5 /- else
5 /- else
6 / %h1 All-Time Hall of Fame
6 / %h1 All-Time Hall of Fame
7
7
8 .panel.panel-info
8 .panel.panel-info
9 .panel-heading
9 .panel-heading
10 Select Task
10 Select Task
11 .panel-body
11 .panel-body
12 .form-inline
12 .form-inline
13 = select 'report',
13 = select 'report',
14 'problem_id',
14 'problem_id',
15 @problems.collect {|p| ["[#{p.name}] #{p.full_name}", problem_hof_report_path(p)]},
15 @problems.collect {|p| ["[#{p.name}] #{p.full_name}", problem_hof_report_path(p)]},
16 {:selected => problem_hof_report_path(@problem)},
16 {:selected => problem_hof_report_path(@problem)},
17 { class: 'select2 form-control' }
17 { class: 'select2 form-control' }
18 %button.btn.btn-primary.btn-sm.go-button#problem_go{data: {source: "#report_problem_id"}} Go
18 %button.btn.btn-primary.btn-sm.go-button#problem_go{data: {source: "#report_problem_id"}} Go
19
19
20
20
21 - unless params[:id]
21 - unless params[:id]
22 /=render partial: 'all_time_hof'
22 /=render partial: 'all_time_hof'
23 Please select a problem.
23 Please select a problem.
24 - else
24 - else
25 - %h1 [#{Problem.find(params[:id]).name}] #{Problem.find(params[:id]).full_name}
25 + %h1
26 - -# %h2 Submission History
26 + [#{Problem.find(params[:id]).name}] #{Problem.find(params[:id]).full_name}
27 - -# =render partial: 'application/bar_graph', locals: { histogram: @histogram }
27 + - if @current_user.has_role?('ta')
28 + %a{href:stat_problem_path(@problem)} (stat)
28 =render partial: 'task_hof'
29 =render partial: 'task_hof'
29
30
@@ -73,56 +73,56
73 %td #{@submission.points}/#{@submission.try(:problem).try(:full_score)}
73 %td #{@submission.points}/#{@submission.try(:problem).try(:full_score)}
74 %tr
74 %tr
75 %td.text-right
75 %td.text-right
76 %strong Comment
76 %strong Comment
77 %td #{@submission.grader_comment}
77 %td #{@submission.grader_comment}
78 %tr
78 %tr
79 %td.text-right
79 %td.text-right
80 %strong Runtime (s)
80 %strong Runtime (s)
81 %td #{@submission.max_runtime}
81 %td #{@submission.max_runtime}
82 %tr
82 %tr
83 %td.text-right
83 %td.text-right
84 %strong Memory (kb)
84 %strong Memory (kb)
85 %td #{@submission.peak_memory}
85 %td #{@submission.peak_memory}
86 %tr
86 %tr
87 %td.text-right
87 %td.text-right
88 %strong Compiler result
88 %strong Compiler result
89 %td
89 %td
90 %button.btn.btn-info.btn-xs{type: 'button', data: {toggle: 'modal', target: '#compiler'}}
90 %button.btn.btn-info.btn-xs{type: 'button', data: {toggle: 'modal', target: '#compiler'}}
91 view
91 view
92 %tr
92 %tr
93 %td.text-right
93 %td.text-right
94 %strong Grading Task Status
94 %strong Grading Task Status
95 %td
95 %td
96 = @task.status_str if @task
96 = @task.status_str if @task
97 - - if session[:admin]
97 + - if @current_user.admin?
98 = link_to "rejudge", rejudge_submission_path, data: {remote: true}, class: 'btn btn-info btn-xs'
98 = link_to "rejudge", rejudge_submission_path, data: {remote: true}, class: 'btn btn-info btn-xs'
99 - - if session[:admin]
99 + - if @current_user.has_role?('ta')
100 %tr
100 %tr
101 %td.text-right
101 %td.text-right
102 %strong IP
102 %strong IP
103 %td #{@submission.ip_address}
103 %td #{@submission.ip_address}
104 %tr
104 %tr
105 %td.text-right
105 %td.text-right
106 %strong Model solution
106 %strong Model solution
107 %td
107 %td
108 - if @submission.tag_model?
108 - if @submission.tag_model?
109 YES
109 YES
110 - - if session[:admin]
110 + - if @current_user.has_role?('ta')
111 = link_to "remove model status", set_tag_submission_path(@submission, tag: :default), class: 'btn btn-warning btn-xs'
111 = link_to "remove model status", set_tag_submission_path(@submission, tag: :default), class: 'btn btn-warning btn-xs'
112 - else
112 - else
113 No
113 No
114 - - if session[:admin]
114 + - if @current_user.has_role?('ta')
115 = link_to "set as model solution", set_tag_submission_path(@submission, tag: :model), class: 'btn btn-success btn-xs'
115 = link_to "set as model solution", set_tag_submission_path(@submission, tag: :model), class: 'btn btn-success btn-xs'
116
116
117
117
118 .modal.fade#compiler{tabindex: -1,role: 'dialog'}
118 .modal.fade#compiler{tabindex: -1,role: 'dialog'}
119 .modal-dialog.modal-lg{role:'document'}
119 .modal-dialog.modal-lg{role:'document'}
120 .modal-content
120 .modal-content
121 .modal-header
121 .modal-header
122 %button.close{type: 'button', data: {dismissed: :modal}, aria: {label: 'close'}}
122 %button.close{type: 'button', data: {dismissed: :modal}, aria: {label: 'close'}}
123 %span{aria: {hidden: 'true'}, data: {dismiss: 'modal'}} &times;
123 %span{aria: {hidden: 'true'}, data: {dismiss: 'modal'}} &times;
124 %h4 Compiler message
124 %h4 Compiler message
125 .modal-body
125 .modal-body
126 %pre#compiler_msg= @submission.compiler_message
126 %pre#compiler_msg= @submission.compiler_message
127 .modal-footer
127 .modal-footer
128 %button.btn.btn-default{type: 'button', data: {dismiss: 'modal'}} Close
128 %button.btn.btn-default{type: 'button', data: {dismiss: 'modal'}} Close
You need to be logged in to leave comments. Login now