Index: /WAeUP_Doc/NewDocumentation/ImportData.html
===================================================================
--- /WAeUP_Doc/NewDocumentation/ImportData.html	(revision 3512)
+++ /WAeUP_Doc/NewDocumentation/ImportData.html	(revision 3512)
@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title></title>
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
+:Revision: $Revision: 4224 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document">
+<div class="section">
+<h1><a id="import-of-data-into-the-portal" name="import-of-data-into-the-portal">Import of data into the portal</a></h1>
+<div class="section">
+<h2><a id="general-procedure" name="general-procedure">General procedure</a></h2>
+<p>A record is read from the input source file located in the import folder of the Zope instance (or uploaded by the upload manager in the Upload Section. 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>
+<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>
+<p>The following import modes are recognized: edit, create and remove. The latter deletes the whole record. This mode is available for course results only.</p>
+<p>Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored.</p>
+<p>The following import layouts are available:</p>
+</div>
+</div>
+<div class="section">
+<h1><a id="student-section" name="student-section">1. Student Section</a></h1>
+<div class="section">
+<h2><a id="import-application" name="import-application">import_application</a></h2>
+<p>This data layout is meant for updating the applicants_catalog which is completely separated from the object-based part of the portal. An important role has the field 'status'. It should be either 'admitted', 'not admitted' or empty. If student objects have already been created, the status field can no longer be modified. If student_id and matric_no are specified, it is checked, if the student_id and matric_no belong to the same student.</p>
+<pre class="literal-block">
+import_mode        String
+course1            String
+course2            String
+course3a           String
+course_admitted    String
+department         String
+faculty            String
+firstname          String
+eng_score          Int
+subj1              Int
+subj1score         Int
+subj2              Int
+subj2score         Int
+subj3              Int
+subj3score         Int
+aggregate          Int
+lastname           String
+middlenames        String
+email              String
+phone              String
+pin                String
+reg_no             String
+date_of_birth      DateTime
+jamb_age           String
+jamb_state         String
+jamb_lga           String
+application_date   DateTime
+sex                Boolean
+lga                String
+screening_date     DateTime
+screening_type     String
+passport           String
+status             String
+screening_venue    String
+aos                String
+screening_score    String
+notice             String
+student_id         String
+fst_sit_fname      String
+fst_sit_no         String
+fst_sit_date       DateTime
+fst_sit_type       String
+fst_sit_results    StringList
+scd_sit_fname      String
+scd_sit_no         String
+scd_sit_date       DateTime
+scd_sit_type       String
+scd_sit_results    StringList
+hq_type            String
+hq_grade           String
+hq_school          String
+hq_matric_no       String
+hq_session         String
+hq_disc            String
+serial             String
+</pre>
+</div>
+<div class="section">
+<h2><a id="import-student" name="import-student">import_student</a></h2>
+<p>This is the most powerful import layout. It's a brute-force method which can be used to create student objects or to overwrite existing student objects (and the associated records in the students_catalog). The reg_transition can be either 'admit' or 'return'. The students will be in state admitted or returning respectively. Don't use this method to import current verdicts. Use the import_verdict layout instead.</p>
+<pre class="literal-block">
+id                 String
+import_mode        String
+reg_transition     String
+firstname          String
+middlename         String
+lastname           String
+sex                String
+birthday           String
+matric_no          String
+jamb_reg_no        String
+entry_mode         String
+entry_session      String
+jamb_score         Int
+jamb_age           String
+jamb_lga           String
+jamb_state         String
+jamb_sex           String
+lga                String
+state              String
+study_course       String
+nationality        String
+lga                String
+phone              String
+email              String
+app_email          String
+current_level      String
+current_session    String
+current_verdict    String
+previous_verdict   String
+current_mode       String
+perm_address       String
+</pre>
+</div>
+<div class="section">
+<h2><a id="import-student-study-level" name="import-student-study-level">import_student_study_level</a></h2>
+<p>This layout can be used to create or overwrite old study levels and to import their verdicts. The field 'code' corresponds with the study level. It can be either '000', '100', ..., '900'.</p>
+<pre class="literal-block">
+import_mode        String
+id                 String
+matric_no          String
+code               String
+session            String
+verdict            String
+validated_by       String
+validation_date    DateTime
+</pre>
+</div>
+<div class="section">
+<h2><a id="import-verdict" name="import-verdict">import_verdict</a></h2>
+<p>The import_verdict layout should be used to import the current verdict, i.e. the verdict of the current session and current level. This layout is special. It does not only import data but also performs a workflow transition. The student must be in state 'courses_validated' (all other states will be rejected) and will be moved to state 'return'.</p>
+<pre class="literal-block">
+import_mode        String
+id                 String
+matric_no          String
+current_level      String
+current_session    String
+current_verdict    String
+</pre>
+</div>
+<div class="section">
+<h2><a id="course-result" name="course-result">course_result</a></h2>
+<p>This layout creates or edits course results. The 'create' mode should only be used in old levels rather than in current levels which have been validated by course advisers. Creating course results in validated course lists is possible but counteracts the whole course registration policy.</p>
+<pre class="literal-block">
+import_mode        String
+id                 String
+matric_no          String
+code               String
+session_id         String
+level_id           String
+credits            Int
+score              String
+grade              String
+carry_over         Boolean
+core_or_elective   Boolean
+semester           Int
+</pre>
+</div>
+</div>
+<div class="section">
+<h1><a id="academic-section" name="academic-section">2. Academic Section</a></h1>
+<p>The following import layouts can be used to create or edit faculties, departments, certificates, certificates courses and or course objects respectively. There are quite a few dependencies which result from the nature of the academic section. For example, a certificate can only be created, if the respective department exists.</p>
+<div class="section">
+<h2><a id="import-faculty" name="import-faculty">import_faculty</a></h2>
+<pre class="literal-block">
+import_mode        String
+code               String
+title              String
+title_prefix       String
+</pre>
+</div>
+<div class="section">
+<h2><a id="import-department" name="import-department">import_department</a></h2>
+<pre class="literal-block">
+import_mode        String
+code               String
+faculty_code       String
+title              String
+title_prefix       String
+</pre>
+</div>
+<div class="section">
+<h2><a id="certificate" name="certificate">certificate</a></h2>
+<pre class="literal-block">
+import_mode        String
+title              String
+admin_status       String
+category           String
+department_code    String
+code               String
+end_level          String
+max_load           Int
+max_pass           Int
+nr_years           Int
+probation_credits  Int
+promotion_credits  Int
+start_level        String
+study_mode         String
+application_category  String
+</pre>
+</div>
+<div class="section">
+<h2><a id="certificate-course" name="certificate-course">certificate_course</a></h2>
+<pre class="literal-block">
+import_mode        String
+code               String
+certificate_code   String
+level              String
+core_or_elective   Boolean
+</pre>
+</div>
+<div class="section">
+<h2><a id="course" name="course">course</a></h2>
+<pre class="literal-block">
+import_mode        String
+title              String
+department_code    String
+code               String
+credits            Int
+passmark           Int
+semester           Int
+level              String
+</pre>
+</div>
+</div>
+</div>
+</body>
+</html>
Index: /WAeUP_Doc/NewDocumentation/ImportData.txt
===================================================================
--- /WAeUP_Doc/NewDocumentation/ImportData.txt	(revision 3512)
+++ /WAeUP_Doc/NewDocumentation/ImportData.txt	(revision 3512)
@@ -0,0 +1,254 @@
+Import of data into the portal 
+++++++++++++++++++++++++++++++
+
+General procedure 
+-----------------
+
+A record is read from the input source file located in the import folder of the Zope instance (or uploaded by the upload manager in the Upload Section. The data format is validated against the import data layout selected. If the record can be imported, it is **appended** to the file [layout]_imported.csv (in the same folder), otherwise it is **inserted** 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.
+
+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'.
+
+The following import modes are recognized: edit, create and remove. The latter deletes the whole record. This mode is available for course results only.
+
+Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored.
+
+The following import layouts are available:
+
+1. Student Section
+++++++++++++++++++
+
+import_application
+------------------
+
+
+This data layout is meant for updating the applicants_catalog which is completely separated from the object-based part of the portal. An important role has the field 'status'. It should be either 'admitted', 'not admitted' or empty. If student objects have already been created, the status field can no longer be modified. If student_id and matric_no are specified, it is checked, if the student_id and matric_no belong to the same student. 
+
+::
+
+ import_mode        String
+ course1            String
+ course2            String
+ course3a           String
+ course_admitted    String
+ department         String
+ faculty            String
+ firstname          String
+ eng_score          Int
+ subj1              Int
+ subj1score         Int
+ subj2              Int
+ subj2score         Int
+ subj3              Int
+ subj3score         Int
+ aggregate          Int
+ lastname           String
+ middlenames        String
+ email              String
+ phone              String
+ pin                String
+ reg_no             String
+ date_of_birth      DateTime
+ jamb_age           String
+ jamb_state         String
+ jamb_lga           String
+ application_date   DateTime
+ sex                Boolean
+ lga                String
+ screening_date     DateTime
+ screening_type     String
+ passport           String
+ status             String
+ screening_venue    String
+ aos                String
+ screening_score    String
+ notice             String
+ student_id         String
+ fst_sit_fname      String
+ fst_sit_no         String 
+ fst_sit_date       DateTime
+ fst_sit_type       String
+ fst_sit_results    StringList
+ scd_sit_fname      String
+ scd_sit_no         String
+ scd_sit_date       DateTime
+ scd_sit_type       String
+ scd_sit_results    StringList
+ hq_type            String
+ hq_grade           String
+ hq_school          String
+ hq_matric_no       String
+ hq_session         String
+ hq_disc            String
+ serial             String 
+
+
+import_student
+--------------
+
+This is the most powerful import layout. It's a brute-force method which can be used to create student objects or to overwrite existing student objects (and the associated records in the students_catalog). The reg_transition can be either 'admit' or 'return'. The students will be in state admitted or returning respectively. Don't use this method to import current verdicts. Use the import_verdict layout instead. 
+
+::
+
+ id                 String
+ import_mode        String
+ reg_transition     String
+ firstname          String
+ middlename         String
+ lastname           String
+ sex                String
+ birthday           String
+ matric_no          String
+ jamb_reg_no        String
+ entry_mode         String
+ entry_session      String
+ jamb_score         Int
+ jamb_age           String
+ jamb_lga           String
+ jamb_state         String
+ jamb_sex           String
+ lga                String
+ state              String
+ study_course       String
+ nationality        String
+ lga                String
+ phone              String
+ email              String
+ app_email          String
+ current_level      String
+ current_session    String
+ current_verdict    String
+ previous_verdict   String
+ current_mode       String
+ perm_address       String 
+
+
+import_student_study_level           
+--------------------------
+
+This layout can be used to create or overwrite old study levels and to import their verdicts. The field 'code' corresponds with the study level. It can be either '000', '100', ..., '900'.
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ code               String
+ session            String
+ verdict            String
+ validated_by       String
+ validation_date    DateTime 
+
+
+import_verdict
+--------------
+
+The import_verdict layout should be used to import the current verdict, i.e. the verdict of the current session and current level. This layout is special. It does not only import data but also performs a workflow transition. The student must be in state 'courses_validated' (all other states will be rejected) and will be moved to state 'return'.  
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ current_level      String
+ current_session    String
+ current_verdict    String 
+
+
+course_result           
+-------------
+
+This layout creates or edits course results. The 'create' mode should only be used in old levels rather than in current levels which have been validated by course advisers. Creating course results in validated course lists is possible but counteracts the whole course registration policy. 
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ code               String
+ session_id         String
+ level_id           String
+ credits            Int
+ score              String
+ grade              String
+ carry_over         Boolean
+ core_or_elective   Boolean
+ semester           Int 
+
+
+2. Academic Section
++++++++++++++++++++
+
+The following import layouts can be used to create or edit faculties, departments, certificates, certificates courses and or course objects respectively. There are quite a few dependencies which result from the nature of the academic section. For example, a certificate can only be created, if the respective department exists. 
+
+import_faculty
+--------------
+
+::
+           
+ import_mode        String
+ code               String
+ title              String
+ title_prefix       String 
+
+
+import_department           
+-----------------
+
+::
+
+ import_mode        String
+ code               String
+ faculty_code       String
+ title              String
+ title_prefix       String 
+
+
+certificate
+-----------
+
+::
+           
+ import_mode        String
+ title              String
+ admin_status       String
+ category           String
+ department_code    String
+ code               String
+ end_level          String
+ max_load           Int
+ max_pass           Int
+ nr_years           Int
+ probation_credits  Int
+ promotion_credits  Int
+ start_level        String
+ study_mode         String
+ application_category  String 
+
+
+certificate_course
+------------------
+
+::
+           
+ import_mode        String
+ code               String
+ certificate_code   String
+ level              String
+ core_or_elective   Boolean 
+
+
+course           
+------
+
+::
+
+ import_mode        String
+ title              String
+ department_code    String
+ code               String
+ credits            Int
+ passmark           Int
+ semester           Int
+ level              String 
+
+
Index: eUP_Doc/NewDocumentation/ImportNew.html
===================================================================
--- /WAeUP_Doc/NewDocumentation/ImportNew.html	(revision 3511)
+++ 	(revision )
@@ -1,392 +1,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
-<title>Import of data into the portal</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
-:Revision: $Revision: 4224 $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
-  border: 0 }
-
-table.borderless td, table.borderless th {
-  /* Override padding for "table.docutils td" with "! important".
-     The right padding separates the table cells. */
-  padding: 0 0.5em 0 0 ! important }
-
-.first {
-  /* Override more specific margin styles with "! important". */
-  margin-top: 0 ! important }
-
-.last, .with-subtitle {
-  margin-bottom: 0 ! important }
-
-.hidden {
-  display: none }
-
-a.toc-backref {
-  text-decoration: none ;
-  color: black }
-
-blockquote.epigraph {
-  margin: 2em 5em ; }
-
-dl.docutils dd {
-  margin-bottom: 0.5em }
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
-  font-weight: bold }
-*/
-
-div.abstract {
-  margin: 2em 5em }
-
-div.abstract p.topic-title {
-  font-weight: bold ;
-  text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
-  margin: 2em ;
-  border: medium outset ;
-  padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
-  font-weight: bold ;
-  font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
-  color: red ;
-  font-weight: bold ;
-  font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
-   compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
-  margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
-  margin-top: 0.5em }
-*/
-
-div.dedication {
-  margin: 2em 5em ;
-  text-align: center ;
-  font-style: italic }
-
-div.dedication p.topic-title {
-  font-weight: bold ;
-  font-style: normal }
-
-div.figure {
-  margin-left: 2em ;
-  margin-right: 2em }
-
-div.footer, div.header {
-  clear: both;
-  font-size: smaller }
-
-div.line-block {
-  display: block ;
-  margin-top: 1em ;
-  margin-bottom: 1em }
-
-div.line-block div.line-block {
-  margin-top: 0 ;
-  margin-bottom: 0 ;
-  margin-left: 1.5em }
-
-div.sidebar {
-  margin-left: 1em ;
-  border: medium outset ;
-  padding: 1em ;
-  background-color: #ffffee ;
-  width: 40% ;
-  float: right ;
-  clear: right }
-
-div.sidebar p.rubric {
-  font-family: sans-serif ;
-  font-size: medium }
-
-div.system-messages {
-  margin: 5em }
-
-div.system-messages h1 {
-  color: red }
-
-div.system-message {
-  border: medium outset ;
-  padding: 1em }
-
-div.system-message p.system-message-title {
-  color: red ;
-  font-weight: bold }
-
-div.topic {
-  margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
-  margin-top: 0.4em }
-
-h1.title {
-  text-align: center }
-
-h2.subtitle {
-  text-align: center }
-
-hr.docutils {
-  width: 75% }
-
-img.align-left {
-  clear: left }
-
-img.align-right {
-  clear: right }
-
-ol.simple, ul.simple {
-  margin-bottom: 1em }
-
-ol.arabic {
-  list-style: decimal }
-
-ol.loweralpha {
-  list-style: lower-alpha }
-
-ol.upperalpha {
-  list-style: upper-alpha }
-
-ol.lowerroman {
-  list-style: lower-roman }
-
-ol.upperroman {
-  list-style: upper-roman }
-
-p.attribution {
-  text-align: right ;
-  margin-left: 50% }
-
-p.caption {
-  font-style: italic }
-
-p.credits {
-  font-style: italic ;
-  font-size: smaller }
-
-p.label {
-  white-space: nowrap }
-
-p.rubric {
-  font-weight: bold ;
-  font-size: larger ;
-  color: maroon ;
-  text-align: center }
-
-p.sidebar-title {
-  font-family: sans-serif ;
-  font-weight: bold ;
-  font-size: larger }
-
-p.sidebar-subtitle {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-p.topic-title {
-  font-weight: bold }
-
-pre.address {
-  margin-bottom: 0 ;
-  margin-top: 0 ;
-  font-family: serif ;
-  font-size: 100% }
-
-pre.literal-block, pre.doctest-block {
-  margin-left: 2em ;
-  margin-right: 2em ;
-  background-color: #eeeeee }
-
-span.classifier {
-  font-family: sans-serif ;
-  font-style: oblique }
-
-span.classifier-delimiter {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-span.interpreted {
-  font-family: sans-serif }
-
-span.option {
-  white-space: nowrap }
-
-span.pre {
-  white-space: pre }
-
-span.problematic {
-  color: red }
-
-span.section-subtitle {
-  /* font-size relative to parent (h1..h6 element) */
-  font-size: 80% }
-
-table.citation {
-  border-left: solid 1px gray;
-  margin-left: 1px }
-
-table.docinfo {
-  margin: 2em 4em }
-
-table.docutils {
-  margin-top: 0.5em ;
-  margin-bottom: 0.5em }
-
-table.footnote {
-  border-left: solid 1px black;
-  margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
-  padding-left: 0.5em ;
-  padding-right: 0.5em ;
-  vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
-  font-weight: bold ;
-  text-align: left ;
-  white-space: nowrap ;
-  padding-left: 0 }
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
-  font-size: 100% }
-
-tt.docutils {
-  background-color: #eeeeee }
-
-ul.auto-toc {
-  list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="import-of-data-into-the-portal">
-<h1 class="title">Import of data into the portal</h1>
-<div class="section">
-<h1><a id="general-procedure" name="general-procedure">General procedure</a></h1>
-<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>
-<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>
-<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>
-<p>Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored.</p>
-</div>
-<div class="section">
-<h1><a id="the-import-form" name="the-import-form">The import form</a></h1>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<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>
-</tr>
-<tr class="field"><th class="field-name">Import Layout:</th><td class="field-body">Select the data layout of the import file.</td>
-</tr>
-</tbody>
-</table>
-<p>If the button <strong>Bypass QueueCatalog</strong> is shown, click it!</p>
-<p>Click &quot;Import&quot; to start the import.</p>
-</div>
-<div class="section">
-<h1><a id="verdicts-import" name="verdicts-import">Verdicts import</a></h1>
-<p>The import csv file must have one of these headlines:</p>
-<div class="line-block">
-<div class="line">student_id, current_session, current_level, current_verdict</div>
-<div class="line"><br /></div>
-<div class="line">matric_no, current_session, current_level, current_verdict</div>
-<div class="line"><br /></div>
-<div class="line">student_id,matric_no, current_session, current_level, current_verdict</div>
-</div>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">student_id:</th><td class="field-body">the id of the student</td>
-</tr>
-<tr class="field"><th class="field-name">matric_no:</th><td class="field-body">The student's matriculation number.
-If student_id and matric_no are specified, it is checked, if the student_id
-and matric_no belong to the same student.</td>
-</tr>
-<tr class="field"><th class="field-name" colspan="2">current_session:</th></tr>
-<tr><td>&nbsp;</td><td class="field-body">The session key (e.g. 6) or session string (e.g. 2006/2007) the verdict refers to.</td>
-</tr>
-<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
-level number + 10 or +20 (e.g. 110 for students on first probation).</td>
-</tr>
-<tr class="field"><th class="field-name" colspan="2">current_verdict:</th></tr>
-<tr><td>&nbsp;</td><td class="field-body">The verdict key from the vocabulary <em>verdicts</em>.</td>
-</tr>
-</tbody>
-</table>
-<p>Example file:</p>
-<pre class="literal-block">
-matric_no, current_session, current_level,current_verdict
-MGS0602342,06,200,B
-MGS0602346,06,200,A
-MGS0602350,06,200,B
-MGS0602360,06,200,A
-MGS0602375,06,200,B
-MGS0602388,06,200,A
-MGS0602390,06,200,A
-MGS0603494,06,200,B
-</pre>
-</div>
-<div class="section">
-<h1><a id="logging-messages" name="logging-messages">Logging messages</a></h1>
-<p>Start message</p>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-<p>Successful import message</p>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-<p>Unsuccessful import message</p>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-<p>Commit message</p>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-<p>Final message</p>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-</div>
-<div class="section">
-<h1><a id="error-messages-in-verdicts-pending" name="error-messages-in-verdicts-pending">Error messages in verdicts.pending</a></h1>
-<div class="line-block">
-<div class="line"><br /></div>
-</div>
-</div>
-</div>
-</body>
-</html>
Index: eUP_Doc/NewDocumentation/ImportNew.txt
===================================================================
--- /WAeUP_Doc/NewDocumentation/ImportNew.txt	(revision 3511)
+++ 	(revision )
@@ -1,106 +1,0 @@
-Import of data into the portal 
-++++++++++++++++++++++++++++++++++
-
-
-General procedure 
-----------------------------------
-
-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 **appended** to the file [layout]_imported.csv (in the same folder), otherwise it is **inserted** 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.
-
-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'.
-
-There following import modes are recognized: edit, create and remove. The latter deletes the whole record. This mode is available for course results only.
-
-Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored. 
-
-
-
-The import form  
----------------
-
-:Filename:
-  Select the file to be imported. This selct box shows all csv files in the import folder  
-:Import Layout:
-  Select the data layout of the import file.
-  
-If the button **Bypass QueueCatalog** is shown, click it!
-
-Click "Import" to start the import.
-
-
-Verdicts import
-----------------------------------
-
-
-The import csv file must have one of these headlines:
-
-| student_id, current_session, current_level, current_verdict
-| 
-| matric_no, current_session, current_level, current_verdict
-| 
-| student_id,matric_no, current_session, current_level, current_verdict
-
-
-:student_id: 
-  the id of the student
-  
-:matric_no:
-  The student's matriculation number.
-  If student_id and matric_no are specified, it is checked, if the student_id
-  and matric_no belong to the same student. 
-  
-:current_session:
-  The session key (e.g. 6) or session string (e.g. 2006/2007) the verdict refers to.
-  
-:current_level:
-  The level key the verdict refers to. On probation levels must be specified as
-  level number + 10 or +20 (e.g. 110 for students on first probation). 
-
-:current_verdict:
-  The verdict key from the vocabulary *verdicts*.
-  
-
-Example file::
-
- matric_no, current_session, current_level,current_verdict 
- MGS0602342,06,200,B
- MGS0602346,06,200,A
- MGS0602350,06,200,B
- MGS0602360,06,200,A
- MGS0602375,06,200,B
- MGS0602388,06,200,A
- MGS0602390,06,200,A
- MGS0603494,06,200,B
-
-
-
-Logging messages
-----------------
-
-Start message
-
-| 
-
-Successful import message
-
-| 
-
-Unsuccessful import message
-
-| 
-
-Commit message
-
-| 
-
-Final message
-
-| 
-
-Error messages in verdicts.pending
-----------------------------------
-
-| 
-
-
-
Index: /WAeUP_Doc/NewDocumentation/import_layouts.txt
===================================================================
--- /WAeUP_Doc/NewDocumentation/import_layouts.txt	(revision 3512)
+++ /WAeUP_Doc/NewDocumentation/import_layouts.txt	(revision 3512)
@@ -0,0 +1,254 @@
+Import of data into the portal 
+++++++++++++++++++++++++++++++
+
+General procedure 
+-----------------
+
+A record is read from the input source file located in the import folder of the Zope instance (or uploaded by the upload manager in the Upload Section. The data format is validated against the import data layout selected. If the record can be imported, it is appended to the file [layout]_imported.csv (in the same folder), otherwise it's appended to [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.
+
+The report files have four additional columns: imported_by (the member who did the import), import_date, import_from (input source file name) and error (error message). 
+
+The following import modes are recognized: edit, create and remove. The latter deletes the whole record. This mode is available for course results only.
+
+Single fields can be cleared in edit mode by inserting 'XXX' in the respective field. Empty fields are ignored.
+
+The following import layouts are available:
+
+1. Student Section
+++++++++++++++++++
+
+import_application
+------------------
+
+
+This data layout is meant for updating the applicants_catalog which is completely separated from the object-based part of the portal. An important role has the field 'status'. It should be either 'admitted', 'not admitted' or empty. If student objects have already been created, the status field can no longer be modified. If student_id and matric_no are specified, it is checked, if the student_id and matric_no belong to the same student. 
+
+::
+
+ import_mode        String
+ course1            String
+ course2            String
+ course3a           String
+ course_admitted    String
+ department         String
+ faculty            String
+ firstname          String
+ eng_score          Int
+ subj1              Int
+ subj1score         Int
+ subj2              Int
+ subj2score         Int
+ subj3              Int
+ subj3score         Int
+ aggregate          Int
+ lastname           String
+ middlenames        String
+ email              String
+ phone              String
+ pin                String
+ reg_no             String
+ date_of_birth      DateTime
+ jamb_age           String
+ jamb_state         String
+ jamb_lga           String
+ application_date   DateTime
+ sex                Boolean
+ lga                String
+ screening_date     DateTime
+ screening_type     String
+ passport           String
+ status             String
+ screening_venue    String
+ aos                String
+ screening_score    String
+ notice             String
+ student_id         String
+ fst_sit_fname      String
+ fst_sit_no         String 
+ fst_sit_date       DateTime
+ fst_sit_type       String
+ fst_sit_results    StringList
+ scd_sit_fname      String
+ scd_sit_no         String
+ scd_sit_date       DateTime
+ scd_sit_type       String
+ scd_sit_results    StringList
+ hq_type            String
+ hq_grade           String
+ hq_school          String
+ hq_matric_no       String
+ hq_session         String
+ hq_disc            String
+ serial             String 
+
+
+import_student
+--------------
+
+This is the most powerful import layout. It's a brute-force method which can be used to create student objects or to overwrite existing student objects (and the associated records in the students_catalog). The reg_transition can be either 'admit' or 'return'. The students will be in state admitted or returning respectively. Don't use this method to import current verdicts. Use the import_verdict layout instead. 
+
+::
+
+ id                 String
+ import_mode        String
+ reg_transition     String
+ firstname          String
+ middlename         String
+ lastname           String
+ sex                String
+ birthday           String
+ matric_no          String
+ jamb_reg_no        String
+ entry_mode         String
+ entry_session      String
+ jamb_score         Int
+ jamb_age           String
+ jamb_lga           String
+ jamb_state         String
+ jamb_sex           String
+ lga                String
+ state              String
+ study_course       String
+ nationality        String
+ lga                String
+ phone              String
+ email              String
+ app_email          String
+ current_level      String
+ current_session    String
+ current_verdict    String
+ previous_verdict   String
+ current_mode       String
+ perm_address       String 
+
+
+import_student_study_level           
+--------------------------
+
+This layout can be used to create or overwrite old study levels and to import their verdicts. The field 'code' corresponds with the study level. It can be either '000', '100', ..., '900'.
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ code               String
+ session            String
+ verdict            String
+ validated_by       String
+ validation_date    DateTime 
+
+
+import_verdict
+--------------
+
+The import_verdict layout should be used to import the current verdict, i.e. the verdict of the current session and current level. This layout is special. It does not only import data but also performs a workflow transition. The student must be in state 'courses_validated' (all other states will be rejected) and will be moved to state 'return'.  
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ current_level      String
+ current_session    String
+ current_verdict    String 
+
+
+course_result           
+-------------
+
+This layout creates or edits course results. The 'create' mode should only be used in old levels rather than in current levels which have been validated by course advisers. Creating course results in validated course lists is possible but counteracts the whole course registration policy. 
+
+::
+
+ import_mode        String
+ id                 String
+ matric_no          String
+ code               String
+ session_id         String
+ level_id           String
+ credits            Int
+ score              String
+ grade              String
+ carry_over         Boolean
+ core_or_elective   Boolean
+ semester           Int 
+
+
+2. Academic Section
++++++++++++++++++++
+
+The following import layouts can be used to create or edit faculties, departments, certificates, certificates courses and or course objects respectively. There are quite a few dependencies which result from the nature of the academic section. For example, a certificate can only be created, if the respective department exists. 
+
+import_faculty
+--------------
+
+::
+           
+ import_mode        String
+ code               String
+ title              String
+ title_prefix       String 
+
+
+import_department           
+-----------------
+
+::
+
+ import_mode        String
+ code               String
+ faculty_code       String
+ title              String
+ title_prefix       String 
+
+
+certificate
+-----------
+
+::
+           
+ import_mode        String
+ title              String
+ admin_status       String
+ category           String
+ department_code    String
+ code               String
+ end_level          String
+ max_load           Int
+ max_pass           Int
+ nr_years           Int
+ probation_credits  Int
+ promotion_credits  Int
+ start_level        String
+ study_mode         String
+ application_category  String 
+
+
+certificate_course
+------------------
+
+::
+           
+ import_mode        String
+ code               String
+ certificate_code   String
+ level              String
+ core_or_elective   Boolean 
+
+
+course           
+------
+
+::
+
+ import_mode        String
+ title              String
+ department_code    String
+ code               String
+ credits            Int
+ passmark           Int
+ semester           Int
+ level              String 
+
+
