Description:
added problem description import
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r211:3a4974a6747f - - 3 files changed: 35 inserted, 3 deleted

@@ -13,26 +13,35
13 13 .submitbox
14 14 %table
15 15 %tr
16 16 %td Name:
17 17 %td= text_field_tag 'name'
18 18 %tr
19 19 %td Full name:
20 20 %td
21 21 = text_field_tag 'full_name'
22 22 %span{:class => 'help'} Leave blank to use the same value as the name above.
23 23 %tr
24 24 %td Testdata file:
25 + %td= file_field_tag 'file'
26 + %tr
25 27 %td
26 - = file_field_tag 'file'
28 + %td
29 + %span{:class => 'help'}
30 + In .zip, .tgz, tar.gz, .tar format.
31 + It should includes inputs (e.g., 1.in, 2a.in, 2b.in)
32 + and solutions (e.g., 1.sol, 2a.sol, 2b.sol).
33 + %br/
34 + You may put task description in *.html for raw html
35 + and *.md or *.markdown for markdown.
27 36 %tr
28 37 %td
29 38 %td
30 39 = check_box_tag 'import_to_db'
31 40 Import test data to database (for a test-pair task)
32 41 %tr
33 42 %td Time limit:
34 43 %td
35 44 = text_field_tag 'time_limit'
36 45 %span{:class => 'help'} In seconds. Leave blank to use 1 sec.
37 46 %tr
38 47 %td Memory limit:
@@ -2,21 +2,19
2 2 <td>
3 3 <a name="<%= problem.name %>"></a>
4 4 <%= "#{problem.full_name} (#{problem.name})" %>
5 5 </td>
6 6 </tr>
7 7 <tr>
8 8 <% td_class = (problem_counter%2==0) ? "desc-even" : "desc-odd" %>
9 9 <td class="<%= td_class %>">
10 10 <% if problem.description!=nil %>
11 11 <% if problem.description.markdowned %>
12 12 <%= markdown(problem.description.body) %>
13 13 <% else %>
14 - <pre>
15 14 <%= problem.description.body %>
16 - </pre>
17 15 <% end %>
18 16 <% else %>
19 17 (not available)
20 18 <% end %>
21 19 </td>
22 20 </tr>
@@ -22,24 +22,27
22 22 memory_limit)
23 23 else
24 24 # Import test data to test pairs.
25 25
26 26 @problem.test_pairs.clear
27 27 if import_test_pairs(dirname)
28 28 test_pair_count = TestPair.count :conditions => "problem_id = #{@problem.id}"
29 29 @log_msg = "Importing test pair successful. (#{test_pair_count} test pairs imported)"
30 30 else
31 31 @log_msg = "Importing test pair failed. (0 test pairs imported)"
32 32 end
33 33 end
34 +
35 + @log_msg << import_problem_description(dirname)
36 +
34 37 return true
35 38 end
36 39
37 40 protected
38 41
39 42 def self.long_ext(filename)
40 43 i = filename.index('.')
41 44 len = filename.length
42 45 return filename.slice(i..len)
43 46 end
44 47
45 48 def extract(tempfile)
@@ -97,13 +100,35
97 100 break if not FileTest.exists? sol_filename
98 101
99 102 test_pair = TestPair.new(:input => open(in_filename).read,
100 103 :solution => open(sol_filename).read,
101 104 :problem => @problem)
102 105 break if not test_pair.save
103 106
104 107 test_num += 1
105 108 end
106 109 return test_num > 1
107 110 end
108 111
112 + def import_problem_description(dirname)
113 + html_files = Dir["#{dirname}/*.html"]
114 + markdown_files = Dir["#{dirname}/*.md"] + Dir["#{dirname}/*.markdown"]
115 + if (html_files.length != 0) or (markdown_files.length != 0)
116 + description = @problem.description || Description.new
117 +
118 + if html_files.length != 0
119 + filename = html_files[0]
120 + description.markdowned = false
121 + else
122 + filename = markdown_files[0]
123 + description.markdowned = true
109 124 end
125 +
126 + description.body = open(filename).read
127 + description.save
128 + @problem.description = description
129 + @problem.save
130 + return "\nProblem description imported from #{filename}."
131 + end
132 + end
133 +
134 + end
You need to be logged in to leave comments. Login now