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