Description:
fix utf8 for java
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r462:c960ef68f0b1 - - 2 files changed: 3 inserted, 1 deleted

@@ -18,97 +18,98
18 18
19 19 verify :method => :post, :only => [:submit],
20 20 :redirect_to => { :action => :index }
21 21
22 22 # COMMENT OUT: only need when having high load
23 23 # caches_action :index, :login
24 24
25 25 # NOTE: This method is not actually needed, 'config/routes.rb' has
26 26 # assigned action login as a default action.
27 27 def index
28 28 redirect_to :action => 'login'
29 29 end
30 30
31 31 def login
32 32 saved_notice = flash[:notice]
33 33 reset_session
34 34 flash.now[:notice] = saved_notice
35 35
36 36 # EXPERIMENT:
37 37 # Hide login if in single user mode and the url does not
38 38 # explicitly specify /login
39 39 #
40 40 # logger.info "PATH: #{request.path}"
41 41 # if GraderConfiguration['system.single_user_mode'] and
42 42 # request.path!='/main/login'
43 43 # @hidelogin = true
44 44 # end
45 45
46 46 @announcements = Announcement.find_for_frontpage
47 47 render :action => 'login', :layout => 'empty'
48 48 end
49 49
50 50 def list
51 51 prepare_list_information
52 52 end
53 53
54 54 def help
55 55 @user = User.find(session[:user_id])
56 56 end
57 57
58 58 def submit
59 59 user = User.find(session[:user_id])
60 60
61 61 @submission = Submission.new
62 62 @submission.problem_id = params[:submission][:problem_id]
63 63 @submission.user = user
64 64 @submission.language_id = 0
65 65 if (params['file']) and (params['file']!='')
66 - @submission.source = params['file'].read
66 + @submission.source = File.open(params['file'].path,'r:UTF-8',&:read)
67 + @submission.source.encode!('UTF-8','UTF-8',invalid: :replace, replace: '')
67 68 @submission.source_filename = params['file'].original_filename
68 69 end
69 70 @submission.submitted_at = Time.new.gmtime
70 71 @submission.ip_address = request.remote_ip
71 72
72 73 if GraderConfiguration.time_limit_mode? and user.contest_finished?
73 74 @submission.errors.add_to_base "The contest is over."
74 75 prepare_list_information
75 76 render :action => 'list' and return
76 77 end
77 78
78 79 if @submission.valid?
79 80 if @submission.save == false
80 81 flash[:notice] = 'Error saving your submission'
81 82 elsif Task.create(:submission_id => @submission.id,
82 83 :status => Task::STATUS_INQUEUE) == false
83 84 flash[:notice] = 'Error adding your submission to task queue'
84 85 end
85 86 else
86 87 prepare_list_information
87 88 render :action => 'list' and return
88 89 end
89 90 redirect_to :action => 'list'
90 91 end
91 92
92 93 def source
93 94 submission = Submission.find(params[:id])
94 95 if ((submission.user_id == session[:user_id]) and
95 96 (submission.problem != nil) and
96 97 (submission.problem.available))
97 98 send_data(submission.source,
98 99 {:filename => submission.download_filename,
99 100 :type => 'text/plain'})
100 101 else
101 102 flash[:notice] = 'Error viewing source'
102 103 redirect_to :action => 'list'
103 104 end
104 105 end
105 106
106 107 def compiler_msg
107 108 @submission = Submission.find(params[:id])
108 109 if @submission.user_id == session[:user_id]
109 110 render :action => 'compiler_msg', :layout => 'empty'
110 111 else
111 112 flash[:notice] = 'Error viewing source'
112 113 redirect_to :action => 'list'
113 114 end
114 115 end
@@ -79,96 +79,97
79 79 @result = :successful
80 80 else
81 81 @result = :email_used
82 82 end
83 83 else
84 84 @result = :failed
85 85 end
86 86 render :action => 'confirm', :layout => 'empty'
87 87 end
88 88
89 89 def forget
90 90 render :action => 'forget', :layout => 'empty'
91 91 end
92 92
93 93 def retrieve_password
94 94 email = params[:email]
95 95 user = User.find_by_email(email)
96 96 if user
97 97 last_updated_time = user.updated_at || user.created_at || (Time.now.gmtime - 1.hour)
98 98 if last_updated_time > Time.now.gmtime - 5.minutes
99 99 flash[:notice] = 'The account has recently created or new password has recently been requested. Please wait for 5 minutes'
100 100 else
101 101 user.password = user.password_confirmation = User.random_password
102 102 user.save
103 103 send_new_password_email(user)
104 104 flash[:notice] = 'New password has been mailed to you.'
105 105 end
106 106 else
107 107 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
108 108 end
109 109 redirect_to :action => 'forget'
110 110 end
111 111
112 112 def profile
113 113 @user = User.find(params[:id])
114 114 @submission = Submission.includes(:problem).where(user_id: params[:id])
115 115
116 116 range = 120
117 117 @histogram = { data: Array.new(range,0), summary: {} }
118 118 @summary = {count: 0, solve: 0, attempt: 0}
119 119 problem = Hash.new(0)
120 120
121 121 @submission.find_each do |sub|
122 122 #histogram
123 123 d = (DateTime.now.in_time_zone - sub.submitted_at) / 24 / 60 / 60
124 124 @histogram[:data][d.to_i] += 1 if d < range
125 125
126 126 @summary[:count] += 1
127 + next unless sub.problem
127 128 problem[sub.problem] = [problem[sub.problem], (sub.points >= sub.problem.full_score) ? 1 : 0].max
128 129 end
129 130
130 131 @histogram[:summary][:max] = [@histogram[:data].max,1].max
131 132 @summary[:attempt] = problem.count
132 133 problem.each_value { |v| @summary[:solve] += 1 if v == 1 }
133 134 end
134 135
135 136 protected
136 137
137 138 def verify_online_registration
138 139 if !GraderConfiguration['system.online_registration']
139 140 redirect_to :controller => 'main', :action => 'login'
140 141 end
141 142 end
142 143
143 144 def send_confirmation_email(user)
144 145 contest_name = GraderConfiguration['contest.name']
145 146 activation_url = url_for(:action => 'confirm',
146 147 :login => user.login,
147 148 :activation => user.activation_key)
148 149 home_url = url_for(:controller => 'main', :action => 'index')
149 150 mail_subject = "[#{contest_name}] Confirmation"
150 151 mail_body = t('registration.email_body', {
151 152 :full_name => user.full_name,
152 153 :contest_name => contest_name,
153 154 :login => user.login,
154 155 :password => user.password,
155 156 :activation_url => activation_url,
156 157 :admin_email => admin_email
157 158 })
158 159
159 160 logger.info mail_body
160 161
161 162 send_mail(user.email, mail_subject, mail_body)
162 163 end
163 164
164 165 def send_new_password_email(user)
165 166 contest_name = GraderConfiguration['contest.name']
166 167 mail_subject = "[#{contest_name}] Password recovery"
167 168 mail_body = t('registration.password_retrieval.email_body', {
168 169 :full_name => user.full_name,
169 170 :contest_name => contest_name,
170 171 :login => user.login,
171 172 :password => user.password,
172 173 :admin_email => admin_email
173 174 })
174 175
You need to be logged in to leave comments. Login now