A student online information and registration portal
What is WAeUP.Kofa ?
Kofa means ‘entrance’ or ‘portal’ in Hausa language.
WAeUP.Kofa is a multifunctional, open source, web based student management system to provide transparent and comprehensive information about application and study progress. The system controls all kinds of application and student registration processes at large schools and universities in Nigeria. It is a generic system which can be deployed by, and is useful to most universities, colleges or schools worldwide.
WAeUP.Kofa is the flagship of the West African eUniversity Project (WAeUP). See http://www.waeup.org to learn more about WAeUP.
WAeUP.Kofa is really an allrounder. The best way to briefly describe its functionality, is to explain what the software can not do for you, rather than trying to describe all its features in just a few words. Kofa is primarily not an e-learning system, although, it has some basic content management features which can be used by lecturers to disseminate course material. Kofa is also not a scheduler which generates lesson plans or timetables for lecturers or students. Although students register their courses with Kofa and can see or print course lists for each academic session, so far, courses do not contain information, when or where they take place. However, due to the modular design of Kofa, a scheduler or room planner could be easily added.
WAeUP.Kofa is divided into sections. Each section has its own folder in Kofa’s object database. When starting Kofa in debug mode:
$ ./bin/kofactl debug
we can use simple Python expression to view the first two levels of the database structure:
>>> list(root.keys()) [u'app'] >>> list(root['app'].keys()) [u'accesscodes', u'applicants', u'configuration', u'datacenter', u'documents', u'faculties', u'hostels', u'mandates', u'reports', u'students', u'users']
The section/folder structure can be figured as follows:
root (Database Root) | +---> app (University) | +---> faculties (Academic Section) | +---> students (Students Section) | +---> applicants (Aplicants Section) | +---> documents (Documents Section) | +---> hostels (Accommodation Section) | +---> accesscodes (Access Codes Section) | +---> configuration (Configuration Section) | +---> users (Officers) | +---> datacenter (Data Center) | +---> mandates (Mandates) | +---> reports (Reports)
The user handbook follows this organizational structure and adds further chapters where needed. Also installation instructions and basic information about customization can be found there.
You can also find latest docs at https://kofa-doc.waeup.org/
- Add ticket level and session filter to CourseTicketExporter.
- Add ‘Student Record Creation’ Report page.
- Add CreateStudents permission and StudentsCreator role.
- Do not allow uploading data with trailing whitespaces.
- Do no longer hide the ‘Create students’ buttons but switch the portal to maintenance mode to ensure that nobody can enter the portal during record creation except for user ‘admin’. This guarantees that record creation is only started once.
- Replace gpa_boundaries utility attribute by GPABoundaries method which may return different values in custom packages depending on faculty, department or certificate code (requested by AAU Ekpoma).
- Allow ApplicantOnlinePaymentProcessor to import records without p_id column in create mode.
- Add waeup.showStudents permission to ExportManager role.
- Fix CertificateProcessor.checkHeaders. The processor requires both faculty_code and department_code in create mode.
- Add ‘Update all tickets’ button to StudyLevelEditFormPage.
- Do not allow to create more than 10 students with a single request to avoid a timeout of Nginx/Apache.
- Redirect to manage page after editing of certificate courses.
- Add course_category attribute to course tickets. In the base package, this attribute is omitted from display and manage pages.
- Add course_category attribute to certificate courses.
- Simplify configuration of maximum or minimum total credits.
- Add outstanding attribute to course tickets.
- Exclude graduated students from LevelReport, SessionResultsPresentation and RawScoreReport.
- Allow applicants in states admitted, not admitted or created to download the payment slip.
- Catch traceback (RequiredMissing) if a required field is cleared by import.
- Add role FingerprintReaderDeviceRole intended for fingerprint reader devices that access the portal via XMLRPC.
- Happy Valentines Day everybody!
- Sort arguments in table of ReportsContainerPage.
- Add entry_session and p_session filter to Student Payment Statistics generator. Adjust reports: Change footer and filename formats.
- Add officer name fields do IDepartment and IFaculty. Plugins must be updated!
- Add serial number column to Session Results Presentations.
- Add Raw Score Report to base package.
- Only user ‘admin’ is allowed to access the DatacenterSettings page.
- Show correct level title on Level Reports and Session Results Presentations.
- Get set of selected students also from list of matric numbers.
- Confine Level Reports and Session Results Presentations to certificates.
- Show report number (job_id) on report pdf slips.
- Level report: Count and display the number of courses registered but not taken.
- Add control button to create graduated students.
- Add option to render transcripts without passport picture and QR code.
- Catch Reportlab LayoutError.
- Replace course_registration_allowed by course_registration_forbidden method.
- Add export purge button.
- Add report purge button.
- Add property attribute total_score in order to make provision for additional scores (like contineous assessments) in custom packages.
- Make provision against storing other objects than applicant payments in applicant containers.
- Count mandates on configuration page and provide ‘Purge’ button.
- Start ApplicantExporter and ApplicantPaymentExporter at the same time when calling ExportJobContainerJobStart.
- Add ApplicantPaymentExporter.
- Add file upload functionality to EditScoresPage.
- Add LecturerLandingPage and LecturerCourses ManageLink viewlet.
- Add ExportPDFScoresSlip.
- Add DownloadScoresView which is for lecturers only. Remove waeup.showStudents from Lecturer role. Adjust DataForLecturerExporter. Only editable course tickets are being exported.
- Remove application fee fallback option. Application fees can only be set via applicants containers. Hide Payment Tickets section on application pages if fee isn’t set.
- Add ApplicantOnlinePaymentProcessor.
- Improve AddStudyLevelFormPage.
- Create new exporter for lecturers and further restrict the usage of exporters at course level. Lecturers can only export data of current academic session.
- Show certificate-specific p_level value on payment pages. Ensure that only allowed payment levels can be selected when adding a balance payment.
- Add flash_notice field.
- Documentation updates.
- Update pinned versions: six
- Add new application workflow state (processed) and transition (process).
- Add DegreeSource and degree field to ICertificate. Plugins must be updated!
- Upgrade bootstrap.py script and update some dependencies. For already running instances a new init might be neccessary, i.e. you might have to create a new virtualenv and run bootstap.py and buildout from that new virtualenv to get rid of old package versions in the runtime environment.
- Upgrade versions.cfg to contain bugfix releases of packages we depend on.
- Add button and view which allow students to unregister their current course list unless the courses have not been validated.
- Configure transfer payments and let students enter their desired study course. Save entered text in p_item attribute.
- Add further permissions to the local ApplicationsManager role and make it assignable at applicants container level.
- Disable rendering of HTML tags in fullnames.
- Add bed statistics components.
- Add option which allows students to select a desired hostel before booking accommodation.
- Add BedProcessor.
- Add portal maintenance mode.
- Allow also reg_number on public page to check application status without password.
- Remove beds_reserved attribute from hostels. Hostels do no longer contain information about reserved bed spaces.
- Add methods and page to release expired bed allocations.
- Use lastname instead of firstname for first-time password requests.
- When building docs, ignore members with dots in name.
- Show file size of pdf documents in the documents section.
- Add MANIFEST.in.
- Add public page to check application status without password.
- Fix department breakdown of student statistics.
- Enable purging of applicants containers.
- Enable pre-filling of applicants containers with empty application records which are used during self-registration to avoid excessive growth of the Data.fs.
- Do only allow one running export job.
- Add switch to disable all exports.
- Enable import of list-of-choices fields.
- Include ‘end day’ when searching for payments in a given period.
- Do not create special application payment tickets with zero amount.
- Remove manual clearance lock. Replace clearance_locked field by property attribute.
- Make student email field required.
- Rename application workflow transitions and remove forbidden transitions.
- Rename ‘application section’ for the sake of consistency.
- Rename student views which are not layout-aware and thus not pages.
- Register KofaSourceOrderedMultiSelectWidget for IterableSource and KofaSourceOrderedMultiSelectWidget for IVocabularyTokenized.
- Implement session-specific course registration deadline and late registration payment.
- Remove quite old bug in doImport: Replace empty strings and lists with ignore-markers in update and create mode.
- Add StudentUnpaidPaymentExporter to export only unpaid tickets. This exporter is designed for finding and finally purging outdated payment ticket.
- Remove deprecated xml importer and exporter components.
- Rearrange datacenter upload page. Provide modal windows to view all processors and sources and vocabularies.
- Reorganize doctests. Remove deprecated doctests.
- Enable temporary suspension of officer accounts. Plugins must be updated after restart.
- Rename ‘Portal Users’ ‘Officers’.
- Add link ‘Kofa Docs for this page’ at the end of the content box which refers to the corresponding section of the Kofa Documentation.
- Filter students by current level in reports.
- Add StudentsUtils.increaseMatricInteger method which allows to use various matric number counters when computing the matric number.
- Bypass school fee payment activation code creation if student is allowed to proceed to next session.
- Convert level into a schema field to be consistent with the documentation.
- Rename classes StudentPaymentsExporter and BedTicketsExporter to be in accordance with other exporter names.
- Add ReportsOfficer and ReportsManager roles with corresponding permissions.
- Do not automatically allow import managers to import user data.
- Skip empty rows produced by spreadsheet software.
- Add components to configure a student export jobs in faculties.
- StudentOnlinePaymentProcessor : Raise DuplicationError if payment (in state paid) with same p_session and p_category exists.
- Add new payment state waived. This state can only be set by import and is only used for the payments overview exporter to mark sessions with waived fees.
- Add exporter methods and export page to filter student data exports by entering a list of student ids.
- Student statistic can now be broken down by faculties or by departments.
- Check if p_id exists in payments catalog when importing payment tickets in create mode.
- 1.3 was a brown bag release. Fix uploaded files.
- Add documents package.
- Do not compare ResultEntry objects but their attributes.
- Modify getWidgetsData so that we always get the same error format.
- Validate all codes in university.
- Catch traceback when creating an application slip with a corrupted image file.
- Remove deprecated HTML and REST widgets and use html2dict and rest2dict instead.
- UserProcessor: Check if imported roles do exist in the portal.
- Enable localization of batch processing modules.
- Hide ‘Create students’ button. Only user admin can see this button.
- Add application_slip_notice field to ApplicantsContainer.
- Remove ‘Size’ column from logfiles table.
- Add permission, page and button to mass-clear all students in a department.
- Hide export download button 24 hours after file generation.
- Add helper to allow meminfo checks for cached memory, etc.
- Allow external checks of system load before performing expensive actions.
- Add new dependency: psutil (required to check system state).
- Show flash message on general search page for the academic section.
- Fix CertificateCourseProcessor. Mandatory is not a required field and might be missing in import files. Improve logging. Extend and fix CertCourseProcessorTests.
- Provide customizable method for disabling clearance by clearance officers.
- Use lastname (surname) instead of firstname to verify found application record on ApplicantRegistrationPage.
- Append hash ‘#’ also to datetimes to circumvent unwanted excel automatic.
- Method for (customizable) application passport upload requirements added.
- Filter payment ticket data exports by specifying the payment_date period.
- Method for (customizable) application payment slip download requirements added.
- Method for (customizable) application payment ticket upload requirements added.
- certcode and reg_number added to DataForBursaryExporter.
- Some batch processor names corrected.
- Fixed ReST markup in setup.py long description.
- Redirect to login page after using password mandate.
- Adding student payment tickets is logged.
- Provide XMLRPC services for storing and retrieving fingerprint scans.
- Sort ContextualDictSource by dictionary values not by keys.
- Add regular school fee and balance payments when exporting payments overviews.
- Add samePaymentMade method to StudentsUtils.
- Fingerprint file upload enabled.
- is_fresh property method added to Student class.
- Special application procedure modified. Special applicants must submit their form before they can download payment slips. Thus the regular workflow is now applied but, in contrast to regular applications, special applicants can create and pay more than one payment ticket. Also application slips are hidden.
- Add setMatricNumber and constructMatricNumber methods to StudentsUtils.
- When sending mails, always set from-address to ‘firstname.lastname@example.org’. Real from-addresses are now set in Cc and Reply-To fields. This is to tackle problems with yahoo (does not allow yahoo.com mails to be sent from non-yahoo servers).
- Multiple payments in special application containers enabled. Special payment applicants remain in state started after payment.
- File input fields brought into shape with Bootstrap 3.
- Transcript and access code pagetemplates adjusted.
- Print QR codes on all student slips.
- Allow adding current_level to base data section on all student slips (requested by Uniben).
- Windows is no longer supported. Installation manual removed.
- Added JS helper to scroll to sequencelists after adding/removing items.
- Add display_fullname column to CourseTicketExporter (requested by Uniben).
- Do also export student and course ticket data of students on probation.
- ‘Create student’ option removed from ‘Application Transition’ select field.
- API docs added.
- Back-to links replaced by animated jQuery plugins.
- Default frontpage text updated.
- Use absolute urls on datacenter pages.
- Provide customizable method for disabling student payments.
- After login and logout, regular users (officers) are redirected to the portal’s index page not to the portal’s root. The root URL can now be rewritten be Nginx or Apache so that the user is being redirected to the university website when entering the root URL directly or clicking the acronym.
- Show tooltip alert and warning window before updating plugins.
- JSAction has been deprecated. KofaAction can be used instead. Additional parameters can be used in @action decorators to enable tooltips and/or warning windows. The old @jsaction decorator still triggers a default warning message.
- jquery-ui.min.js is also used for tooltips.
- Do not create TSC AC batch when updating plugins. All TSC batches are created.
- Make table on applicantsrootpage responsive.
- Change width of input, select and textarea fields.
- Use only https in theme.html.
- INSTALL.txt updated and integrated into Sphinx documentation.
- Redundancies removed in docs.
- Diazofied the complete package.
- Send mails to from-address, if site-wide config admin is different from it.
- Change flash message for successful applicants.
- Use more attributes of applicants with payer objects.
- Update copyright infos (year).
- Localization updates.
Tons of changes.
0.1 (never released)
Initial version. Copy from waeup.sirp.