Description:
merge with master
Commit status:
[Not Reviewed]
References:
merge java
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r665:ecbd1a5dbc27 - - 7 files changed: 108 inserted, 8 deleted

@@ -0,0 +1,34
1 + .container-fluid
2 + %h1 Editing announcement
3 + = error_messages_for :announcement
4 + .row
5 + .col-md-6
6 + = form_for(@announcement) do |f|
7 + .form-group
8 + %label Title
9 + = f.text_field :title, class: 'form-control'
10 + .form-group
11 + %label Notes
12 + (shown internally, used to organize announcements)
13 + = f.text_field :notes, class: 'form-control'
14 + .form-group
15 + %label Body
16 + = f.text_area :body, class: 'form-control', style: 'height: 200px;'
17 + .form-group
18 + %label Author
19 + = f.text_field :author, class: 'form-control'
20 + .checkbox
21 + %label
22 + = f.check_box :published
23 + Published
24 + .checkbox
25 + %label
26 + = f.check_box :frontpage
27 + Show on front page?
28 + .checkbox
29 + %label
30 + = f.check_box :contest_only
31 + Show only in contest?
32 + = f.submit "Update", class: 'btn btn-primary'
33 + = link_to 'Show', @announcement, class: 'btn btn-default'
34 + = link_to 'Back', announcements_path, class: 'btn btn-default'
@@ -0,0 +1,52
1 + = error_messages_for 'problem'
2 + / [form:problem]
3 + .form-group
4 + %label{:for => "problem_name"} Name
5 + = text_field 'problem', 'name', class: 'form-control'
6 + %small
7 + Do not directly edit the problem name, unless you know what you are doing. If you want to change the name, use the name change button in the problem management menu instead.
8 + .form-group
9 + %label{:for => "problem_full_name"} Full name
10 + = text_field 'problem', 'full_name', class: 'form-control'
11 + .form-group
12 + %label{:for => "problem_full_score"} Full score
13 + = text_field 'problem', 'full_score', class: 'form-control'
14 + .form-group
15 + %label{:for => "problem_date_added"} Date added
16 + = date_select 'problem', 'date_added', class: 'form-control'
17 + - # TODO: these should be put in model Problem, but I can't think of
18 + - # nice default values for them. These values look fine only
19 + - # in this case (of lazily adding new problems).
20 + - @problem.available = true if @problem!=nil and @problem.available==nil
21 + - @problem.test_allowed = true if @problem!=nil and @problem.test_allowed==nil
22 + - @problem.output_only = false if @problem!=nil and @problem.output_only==nil
23 + .checkbox
24 + %label{:for => "problem_available"}
25 + = check_box :problem, :available
26 + Available?
27 + .checkbox
28 + %label{:for => "problem_test_allowed"}
29 + = check_box :problem, :test_allowed
30 + Test allowed?
31 + .checkbox
32 + %label{:for => "problem_output_only"}
33 + = check_box :problem, :output_only
34 + Output only?
35 + = error_messages_for 'description'
36 + .form-group
37 + %label{:for => "description_body"} Description
38 + %br/
39 + = text_area :description, :body, :rows => 10, :cols => 80,class: 'form-control'
40 + .form-group
41 + %label{:for => "description_markdowned"} Markdowned?
42 + = select "description", |
43 + "markdowned", |
44 + [['True',true],['False',false]], |
45 + {:selected => (@description) ? @description.markdowned : false } |
46 + .form-group
47 + %label{:for => "problem_url"} URL
48 + %br/
49 + = text_field 'problem', 'url',class: 'form-control'
50 + %p
51 + Task PDF #{file_field_tag 'file'}
52 + / [eoform:problem]
@@ -0,0 +1,14
1 + .container-fluid
2 + = form_for @problem,url:{action: 'update'},html: {multipart: true} do
3 + .row
4 + .col-md-6
5 + %h1 Editing problem
6 + = render :partial => 'form'
7 + .row
8 + .col-md-4
9 + = submit_tag 'Edit', class: 'btn btn-primary btn-block'
10 + .col-md-4
11 + = link_to 'Show', {:action => 'show', :id => @problem}, class: 'btn btn-default btn-block'
12 + .col-md-4
13 + = link_to 'Back', problems_path, class: 'btn btn-default btn-block'
14 + .div{style: 'height: 5em'}
@@ -0,0 +1,5
1 + require 'spec_helper'
2 +
3 + describe Testcases do
4 + pending "add some examples to (or delete) #{__FILE__}"
5 + end
@@ -216,25 +216,25
216 first: { avail: false, value: DateTime.new(3000,1,1) }
216 first: { avail: false, value: DateTime.new(3000,1,1) }
217 }
217 }
218 end
218 end
219
219
220 if sub.max_runtime and sub.max_runtime < @by_lang[lang.pretty_name][:runtime][:value]
220 if sub.max_runtime and sub.max_runtime < @by_lang[lang.pretty_name][:runtime][:value]
221 @by_lang[lang.pretty_name][:runtime] = { avail: true, user_id: sub.user_id, value: sub.max_runtime, sub_id: sub.id }
221 @by_lang[lang.pretty_name][:runtime] = { avail: true, user_id: sub.user_id, value: sub.max_runtime, sub_id: sub.id }
222 end
222 end
223
223
224 if sub.peak_memory and sub.peak_memory < @by_lang[lang.pretty_name][:memory][:value]
224 if sub.peak_memory and sub.peak_memory < @by_lang[lang.pretty_name][:memory][:value]
225 @by_lang[lang.pretty_name][:memory] = { avail: true, user_id: sub.user_id, value: sub.peak_memory, sub_id: sub.id }
225 @by_lang[lang.pretty_name][:memory] = { avail: true, user_id: sub.user_id, value: sub.peak_memory, sub_id: sub.id }
226 end
226 end
227
227
228 - if sub.submitted_at and sub.submitted_at < @by_lang[lang.pretty_name][:first][:value] and
228 + if sub.submitted_at and sub.submitted_at < @by_lang[lang.pretty_name][:first][:value] and sub.user and
229 !sub.user.admin?
229 !sub.user.admin?
230 @by_lang[lang.pretty_name][:first] = { avail: true, user_id: sub.user_id, value: sub.submitted_at, sub_id: sub.id }
230 @by_lang[lang.pretty_name][:first] = { avail: true, user_id: sub.user_id, value: sub.submitted_at, sub_id: sub.id }
231 end
231 end
232
232
233 if @by_lang[lang.pretty_name][:length][:value] > sub.effective_code_length
233 if @by_lang[lang.pretty_name][:length][:value] > sub.effective_code_length
234 @by_lang[lang.pretty_name][:length] = { avail: true, user_id: sub.user_id, value: sub.effective_code_length, sub_id: sub.id }
234 @by_lang[lang.pretty_name][:length] = { avail: true, user_id: sub.user_id, value: sub.effective_code_length, sub_id: sub.id }
235 end
235 end
236 end
236 end
237
237
238 #process user_id
238 #process user_id
239 @by_lang.each do |lang,prop|
239 @by_lang.each do |lang,prop|
240 prop.each do |k,v|
240 prop.each do |k,v|
@@ -102,25 +102,26
102 user.save
102 user.save
103 send_new_password_email(user)
103 send_new_password_email(user)
104 flash[:notice] = 'New password has been mailed to you.'
104 flash[:notice] = 'New password has been mailed to you.'
105 end
105 end
106 else
106 else
107 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
107 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
108 end
108 end
109 redirect_to :action => 'forget'
109 redirect_to :action => 'forget'
110 end
110 end
111
111
112 def stat
112 def stat
113 @user = User.find(params[:id])
113 @user = User.find(params[:id])
114 - @submission = Submission.includes(:problem).where(user_id: params[:id])
114 + @submission = Submission.joins(:problem).where(user_id: params[:id])
115 + @submission = @submission.where('problems.available = true') unless current_user.admin?
115
116
116 range = 120
117 range = 120
117 @histogram = { data: Array.new(range,0), summary: {} }
118 @histogram = { data: Array.new(range,0), summary: {} }
118 @summary = {count: 0, solve: 0, attempt: 0}
119 @summary = {count: 0, solve: 0, attempt: 0}
119 problem = Hash.new(0)
120 problem = Hash.new(0)
120
121
121 @submission.find_each do |sub|
122 @submission.find_each do |sub|
122 #histogram
123 #histogram
123 d = (DateTime.now.in_time_zone - sub.submitted_at) / 24 / 60 / 60
124 d = (DateTime.now.in_time_zone - sub.submitted_at) / 24 / 60 / 60
124 @histogram[:data][d.to_i] += 1 if d < range
125 @histogram[:data][d.to_i] += 1 if d < range
125
126
126 @summary[:count] += 1
127 @summary[:count] += 1
@@ -38,30 +38,24
38
38
39 # Configure sensitive parameters which will be filtered from the log file.
39 # Configure sensitive parameters which will be filtered from the log file.
40 config.filter_parameters += [:password]
40 config.filter_parameters += [:password]
41
41
42 # Enable escaping HTML in JSON.
42 # Enable escaping HTML in JSON.
43 config.active_support.escape_html_entities_in_json = true
43 config.active_support.escape_html_entities_in_json = true
44
44
45 # Use SQL instead of Active Record's schema dumper when creating the database.
45 # Use SQL instead of Active Record's schema dumper when creating the database.
46 # This is necessary if your schema can't be completely dumped by the schema dumper,
46 # This is necessary if your schema can't be completely dumped by the schema dumper,
47 # like if you have constraints or database-specific column types
47 # like if you have constraints or database-specific column types
48 # config.active_record.schema_format = :sql
48 # config.active_record.schema_format = :sql
49
49
50 - # Enforce whitelist mode for mass assignment.
51 - # This will create an empty whitelist of attributes available for mass-assignment for all models
52 - # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
53 - # parameters by using an attr_accessible or attr_protected declaration.
54 - config.active_record.whitelist_attributes = false
55 -
56 # Enable the asset pipeline
50 # Enable the asset pipeline
57 config.assets.enabled = true
51 config.assets.enabled = true
58
52
59 # Version of your assets, change this if you want to expire all your assets
53 # Version of your assets, change this if you want to expire all your assets
60 config.assets.version = '1.0'
54 config.assets.version = '1.0'
61
55
62 # ---------------- IMPORTANT ----------------------
56 # ---------------- IMPORTANT ----------------------
63 # If we deploy the app into a subdir name "grader", be sure to do "rake assets:precompile RAILS_RELATIVE_URL_ROOT=/grader"
57 # If we deploy the app into a subdir name "grader", be sure to do "rake assets:precompile RAILS_RELATIVE_URL_ROOT=/grader"
64 # moreover, using the following line instead also known to works
58 # moreover, using the following line instead also known to works
65 #config.action_controller.relative_url_root = '/grader'
59 #config.action_controller.relative_url_root = '/grader'
66
60
67 #font path
61 #font path
You need to be logged in to leave comments. Login now