1 | <?xml version="1.0" encoding="utf-8" ?>
|
---|
2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
---|
3 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
---|
4 | <head>
|
---|
5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
---|
6 | <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
|
---|
7 | <title>Import of data into the portal</title>
|
---|
8 | <style type="text/css">
|
---|
9 |
|
---|
10 | /*
|
---|
11 | :Author: David Goodger
|
---|
12 | :Contact: goodger@users.sourceforge.net
|
---|
13 | :Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
|
---|
14 | :Revision: $Revision: 4224 $
|
---|
15 | :Copyright: This stylesheet has been placed in the public domain.
|
---|
16 |
|
---|
17 | Default cascading style sheet for the HTML output of Docutils.
|
---|
18 |
|
---|
19 | See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
|
---|
20 | customize this style sheet.
|
---|
21 | */
|
---|
22 |
|
---|
23 | /* used to remove borders from tables and images */
|
---|
24 | .borderless, table.borderless td, table.borderless th {
|
---|
25 | border: 0 }
|
---|
26 |
|
---|
27 | table.borderless td, table.borderless th {
|
---|
28 | /* Override padding for "table.docutils td" with "! important".
|
---|
29 | The right padding separates the table cells. */
|
---|
30 | padding: 0 0.5em 0 0 ! important }
|
---|
31 |
|
---|
32 | .first {
|
---|
33 | /* Override more specific margin styles with "! important". */
|
---|
34 | margin-top: 0 ! important }
|
---|
35 |
|
---|
36 | .last, .with-subtitle {
|
---|
37 | margin-bottom: 0 ! important }
|
---|
38 |
|
---|
39 | .hidden {
|
---|
40 | display: none }
|
---|
41 |
|
---|
42 | a.toc-backref {
|
---|
43 | text-decoration: none ;
|
---|
44 | color: black }
|
---|
45 |
|
---|
46 | blockquote.epigraph {
|
---|
47 | margin: 2em 5em ; }
|
---|
48 |
|
---|
49 | dl.docutils dd {
|
---|
50 | margin-bottom: 0.5em }
|
---|
51 |
|
---|
52 | /* Uncomment (and remove this text!) to get bold-faced definition list terms
|
---|
53 | dl.docutils dt {
|
---|
54 | font-weight: bold }
|
---|
55 | */
|
---|
56 |
|
---|
57 | div.abstract {
|
---|
58 | margin: 2em 5em }
|
---|
59 |
|
---|
60 | div.abstract p.topic-title {
|
---|
61 | font-weight: bold ;
|
---|
62 | text-align: center }
|
---|
63 |
|
---|
64 | div.admonition, div.attention, div.caution, div.danger, div.error,
|
---|
65 | div.hint, div.important, div.note, div.tip, div.warning {
|
---|
66 | margin: 2em ;
|
---|
67 | border: medium outset ;
|
---|
68 | padding: 1em }
|
---|
69 |
|
---|
70 | div.admonition p.admonition-title, div.hint p.admonition-title,
|
---|
71 | div.important p.admonition-title, div.note p.admonition-title,
|
---|
72 | div.tip p.admonition-title {
|
---|
73 | font-weight: bold ;
|
---|
74 | font-family: sans-serif }
|
---|
75 |
|
---|
76 | div.attention p.admonition-title, div.caution p.admonition-title,
|
---|
77 | div.danger p.admonition-title, div.error p.admonition-title,
|
---|
78 | div.warning p.admonition-title {
|
---|
79 | color: red ;
|
---|
80 | font-weight: bold ;
|
---|
81 | font-family: sans-serif }
|
---|
82 |
|
---|
83 | /* Uncomment (and remove this text!) to get reduced vertical space in
|
---|
84 | compound paragraphs.
|
---|
85 | div.compound .compound-first, div.compound .compound-middle {
|
---|
86 | margin-bottom: 0.5em }
|
---|
87 |
|
---|
88 | div.compound .compound-last, div.compound .compound-middle {
|
---|
89 | margin-top: 0.5em }
|
---|
90 | */
|
---|
91 |
|
---|
92 | div.dedication {
|
---|
93 | margin: 2em 5em ;
|
---|
94 | text-align: center ;
|
---|
95 | font-style: italic }
|
---|
96 |
|
---|
97 | div.dedication p.topic-title {
|
---|
98 | font-weight: bold ;
|
---|
99 | font-style: normal }
|
---|
100 |
|
---|
101 | div.figure {
|
---|
102 | margin-left: 2em ;
|
---|
103 | margin-right: 2em }
|
---|
104 |
|
---|
105 | div.footer, div.header {
|
---|
106 | clear: both;
|
---|
107 | font-size: smaller }
|
---|
108 |
|
---|
109 | div.line-block {
|
---|
110 | display: block ;
|
---|
111 | margin-top: 1em ;
|
---|
112 | margin-bottom: 1em }
|
---|
113 |
|
---|
114 | div.line-block div.line-block {
|
---|
115 | margin-top: 0 ;
|
---|
116 | margin-bottom: 0 ;
|
---|
117 | margin-left: 1.5em }
|
---|
118 |
|
---|
119 | div.sidebar {
|
---|
120 | margin-left: 1em ;
|
---|
121 | border: medium outset ;
|
---|
122 | padding: 1em ;
|
---|
123 | background-color: #ffffee ;
|
---|
124 | width: 40% ;
|
---|
125 | float: right ;
|
---|
126 | clear: right }
|
---|
127 |
|
---|
128 | div.sidebar p.rubric {
|
---|
129 | font-family: sans-serif ;
|
---|
130 | font-size: medium }
|
---|
131 |
|
---|
132 | div.system-messages {
|
---|
133 | margin: 5em }
|
---|
134 |
|
---|
135 | div.system-messages h1 {
|
---|
136 | color: red }
|
---|
137 |
|
---|
138 | div.system-message {
|
---|
139 | border: medium outset ;
|
---|
140 | padding: 1em }
|
---|
141 |
|
---|
142 | div.system-message p.system-message-title {
|
---|
143 | color: red ;
|
---|
144 | font-weight: bold }
|
---|
145 |
|
---|
146 | div.topic {
|
---|
147 | margin: 2em }
|
---|
148 |
|
---|
149 | h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
---|
150 | h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
---|
151 | margin-top: 0.4em }
|
---|
152 |
|
---|
153 | h1.title {
|
---|
154 | text-align: center }
|
---|
155 |
|
---|
156 | h2.subtitle {
|
---|
157 | text-align: center }
|
---|
158 |
|
---|
159 | hr.docutils {
|
---|
160 | width: 75% }
|
---|
161 |
|
---|
162 | img.align-left {
|
---|
163 | clear: left }
|
---|
164 |
|
---|
165 | img.align-right {
|
---|
166 | clear: right }
|
---|
167 |
|
---|
168 | ol.simple, ul.simple {
|
---|
169 | margin-bottom: 1em }
|
---|
170 |
|
---|
171 | ol.arabic {
|
---|
172 | list-style: decimal }
|
---|
173 |
|
---|
174 | ol.loweralpha {
|
---|
175 | list-style: lower-alpha }
|
---|
176 |
|
---|
177 | ol.upperalpha {
|
---|
178 | list-style: upper-alpha }
|
---|
179 |
|
---|
180 | ol.lowerroman {
|
---|
181 | list-style: lower-roman }
|
---|
182 |
|
---|
183 | ol.upperroman {
|
---|
184 | list-style: upper-roman }
|
---|
185 |
|
---|
186 | p.attribution {
|
---|
187 | text-align: right ;
|
---|
188 | margin-left: 50% }
|
---|
189 |
|
---|
190 | p.caption {
|
---|
191 | font-style: italic }
|
---|
192 |
|
---|
193 | p.credits {
|
---|
194 | font-style: italic ;
|
---|
195 | font-size: smaller }
|
---|
196 |
|
---|
197 | p.label {
|
---|
198 | white-space: nowrap }
|
---|
199 |
|
---|
200 | p.rubric {
|
---|
201 | font-weight: bold ;
|
---|
202 | font-size: larger ;
|
---|
203 | color: maroon ;
|
---|
204 | text-align: center }
|
---|
205 |
|
---|
206 | p.sidebar-title {
|
---|
207 | font-family: sans-serif ;
|
---|
208 | font-weight: bold ;
|
---|
209 | font-size: larger }
|
---|
210 |
|
---|
211 | p.sidebar-subtitle {
|
---|
212 | font-family: sans-serif ;
|
---|
213 | font-weight: bold }
|
---|
214 |
|
---|
215 | p.topic-title {
|
---|
216 | font-weight: bold }
|
---|
217 |
|
---|
218 | pre.address {
|
---|
219 | margin-bottom: 0 ;
|
---|
220 | margin-top: 0 ;
|
---|
221 | font-family: serif ;
|
---|
222 | font-size: 100% }
|
---|
223 |
|
---|
224 | pre.literal-block, pre.doctest-block {
|
---|
225 | margin-left: 2em ;
|
---|
226 | margin-right: 2em ;
|
---|
227 | background-color: #eeeeee }
|
---|
228 |
|
---|
229 | span.classifier {
|
---|
230 | font-family: sans-serif ;
|
---|
231 | font-style: oblique }
|
---|
232 |
|
---|
233 | span.classifier-delimiter {
|
---|
234 | font-family: sans-serif ;
|
---|
235 | font-weight: bold }
|
---|
236 |
|
---|
237 | span.interpreted {
|
---|
238 | font-family: sans-serif }
|
---|
239 |
|
---|
240 | span.option {
|
---|
241 | white-space: nowrap }
|
---|
242 |
|
---|
243 | span.pre {
|
---|
244 | white-space: pre }
|
---|
245 |
|
---|
246 | span.problematic {
|
---|
247 | color: red }
|
---|
248 |
|
---|
249 | span.section-subtitle {
|
---|
250 | /* font-size relative to parent (h1..h6 element) */
|
---|
251 | font-size: 80% }
|
---|
252 |
|
---|
253 | table.citation {
|
---|
254 | border-left: solid 1px gray;
|
---|
255 | margin-left: 1px }
|
---|
256 |
|
---|
257 | table.docinfo {
|
---|
258 | margin: 2em 4em }
|
---|
259 |
|
---|
260 | table.docutils {
|
---|
261 | margin-top: 0.5em ;
|
---|
262 | margin-bottom: 0.5em }
|
---|
263 |
|
---|
264 | table.footnote {
|
---|
265 | border-left: solid 1px black;
|
---|
266 | margin-left: 1px }
|
---|
267 |
|
---|
268 | table.docutils td, table.docutils th,
|
---|
269 | table.docinfo td, table.docinfo th {
|
---|
270 | padding-left: 0.5em ;
|
---|
271 | padding-right: 0.5em ;
|
---|
272 | vertical-align: top }
|
---|
273 |
|
---|
274 | table.docutils th.field-name, table.docinfo th.docinfo-name {
|
---|
275 | font-weight: bold ;
|
---|
276 | text-align: left ;
|
---|
277 | white-space: nowrap ;
|
---|
278 | padding-left: 0 }
|
---|
279 |
|
---|
280 | h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
---|
281 | h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
---|
282 | font-size: 100% }
|
---|
283 |
|
---|
284 | tt.docutils {
|
---|
285 | background-color: #eeeeee }
|
---|
286 |
|
---|
287 | ul.auto-toc {
|
---|
288 | list-style-type: none }
|
---|
289 |
|
---|
290 | </style>
|
---|
291 | </head>
|
---|
292 | <body>
|
---|
293 | <div class="document" id="import-of-data-into-the-portal">
|
---|
294 | <h1 class="title">Import of data into the portal</h1>
|
---|
295 | <div class="section">
|
---|
296 | <h1><a id="general-procedure" name="general-procedure">General procedure</a></h1>
|
---|
297 | <p>A record is read from the input source file located in the import folder of the Zope instance. The data format is validated against the import data layout selected. If the record can be imported, it is <strong>appended</strong> to the file [layout]_imported.csv (in the same folder), otherwise it is <strong>inserted</strong> into the file [layout]_pending.csv, if no record with exactly the same data already exists. Technically speaking, the md5-digests of the new record is being compared with the existing records.</p>
|
---|
298 | <p>The report files have five additional columns: import_mode, imported_by (the member who did the import), import_date, import_from (input source file name) and error (error message). The pending file can be edited and re-imported by selecting 'pending data only'.</p>
|
---|
299 | <p>There following import modes are recognized: edit, create and remove. The latter deletes the whole record. This mode is available for course results only.</p>
|
---|
300 | <p>Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored.</p>
|
---|
301 | </div>
|
---|
302 | <div class="section">
|
---|
303 | <h1><a id="the-import-form" name="the-import-form">The import form</a></h1>
|
---|
304 | <table class="docutils field-list" frame="void" rules="none">
|
---|
305 | <col class="field-name" />
|
---|
306 | <col class="field-body" />
|
---|
307 | <tbody valign="top">
|
---|
308 | <tr class="field"><th class="field-name">Filename:</th><td class="field-body">Select the file to be imported. This selct box shows all csv files in the import folder</td>
|
---|
309 | </tr>
|
---|
310 | <tr class="field"><th class="field-name">Import Layout:</th><td class="field-body">Select the data layout of the import file.</td>
|
---|
311 | </tr>
|
---|
312 | </tbody>
|
---|
313 | </table>
|
---|
314 | <p>If the button <strong>Bypass QueueCatalog</strong> is shown, click it!</p>
|
---|
315 | <p>Click "Import" to start the import.</p>
|
---|
316 | </div>
|
---|
317 | <div class="section">
|
---|
318 | <h1><a id="verdicts-import" name="verdicts-import">Verdicts import</a></h1>
|
---|
319 | <p>The import csv file must have one of these headlines:</p>
|
---|
320 | <div class="line-block">
|
---|
321 | <div class="line">student_id, current_session, current_level, current_verdict</div>
|
---|
322 | <div class="line"><br /></div>
|
---|
323 | <div class="line">matric_no, current_session, current_level, current_verdict</div>
|
---|
324 | <div class="line"><br /></div>
|
---|
325 | <div class="line">student_id,matric_no, current_session, current_level, current_verdict</div>
|
---|
326 | </div>
|
---|
327 | <table class="docutils field-list" frame="void" rules="none">
|
---|
328 | <col class="field-name" />
|
---|
329 | <col class="field-body" />
|
---|
330 | <tbody valign="top">
|
---|
331 | <tr class="field"><th class="field-name">student_id:</th><td class="field-body">the id of the student</td>
|
---|
332 | </tr>
|
---|
333 | <tr class="field"><th class="field-name">matric_no:</th><td class="field-body">The student's matriculation number.
|
---|
334 | If student_id and matric_no are specified, it is checked, if the student_id
|
---|
335 | and matric_no belong to the same student.</td>
|
---|
336 | </tr>
|
---|
337 | <tr class="field"><th class="field-name" colspan="2">current_session:</th></tr>
|
---|
338 | <tr><td> </td><td class="field-body">The session key (e.g. 6) or session string (e.g. 2006/2007) the verdict refers to.</td>
|
---|
339 | </tr>
|
---|
340 | <tr class="field"><th class="field-name">current_level:</th><td class="field-body">The level key the verdict refers to. On probation levels must be specified as
|
---|
341 | level number + 10 or +20 (e.g. 110 for students on first probation).</td>
|
---|
342 | </tr>
|
---|
343 | <tr class="field"><th class="field-name" colspan="2">current_verdict:</th></tr>
|
---|
344 | <tr><td> </td><td class="field-body">The verdict key from the vocabulary <em>verdicts</em>.</td>
|
---|
345 | </tr>
|
---|
346 | </tbody>
|
---|
347 | </table>
|
---|
348 | <p>Example file:</p>
|
---|
349 | <pre class="literal-block">
|
---|
350 | matric_no, current_session, current_level,current_verdict
|
---|
351 | MGS0602342,06,200,B
|
---|
352 | MGS0602346,06,200,A
|
---|
353 | MGS0602350,06,200,B
|
---|
354 | MGS0602360,06,200,A
|
---|
355 | MGS0602375,06,200,B
|
---|
356 | MGS0602388,06,200,A
|
---|
357 | MGS0602390,06,200,A
|
---|
358 | MGS0603494,06,200,B
|
---|
359 | </pre>
|
---|
360 | </div>
|
---|
361 | <div class="section">
|
---|
362 | <h1><a id="logging-messages" name="logging-messages">Logging messages</a></h1>
|
---|
363 | <p>Start message</p>
|
---|
364 | <div class="line-block">
|
---|
365 | <div class="line"><br /></div>
|
---|
366 | </div>
|
---|
367 | <p>Successful import message</p>
|
---|
368 | <div class="line-block">
|
---|
369 | <div class="line"><br /></div>
|
---|
370 | </div>
|
---|
371 | <p>Unsuccessful import message</p>
|
---|
372 | <div class="line-block">
|
---|
373 | <div class="line"><br /></div>
|
---|
374 | </div>
|
---|
375 | <p>Commit message</p>
|
---|
376 | <div class="line-block">
|
---|
377 | <div class="line"><br /></div>
|
---|
378 | </div>
|
---|
379 | <p>Final message</p>
|
---|
380 | <div class="line-block">
|
---|
381 | <div class="line"><br /></div>
|
---|
382 | </div>
|
---|
383 | </div>
|
---|
384 | <div class="section">
|
---|
385 | <h1><a id="error-messages-in-verdicts-pending" name="error-messages-in-verdicts-pending">Error messages in verdicts.pending</a></h1>
|
---|
386 | <div class="line-block">
|
---|
387 | <div class="line"><br /></div>
|
---|
388 | </div>
|
---|
389 | </div>
|
---|
390 | </div>
|
---|
391 | </body>
|
---|
392 | </html>
|
---|