The organization of the custom functionality used by the schools networks associated with Ark is somewhat influenced by the sequence in which it was developed. Peas was the first customer, with no specific plans to add additional networks. When Rising and then ISLI were added, we knew we would need to maintain some shared packages used by all the Ark clients, as well as specific customizations for each network. We then backported Peas to use the shared packages, but it is still has more site-specific code than the other two.
The schooltool.peas package has the PEAS specific functionality. The main development branch in Launchpad is lp:schooltool.peas.
The assessment system in Uganda is painfully complex, and to understand fully how it is supposed to be implemented you will probably need some additional explanation and documentation from Peas and/or Ayesha.
The assessment structure is not based on flexible assessment sets containing assessment sheets, but on a simpler hard-coded structure stored in the AssessmentPreferences object that you can get for a year:
>>> from schooltool.peas.assessment import IAssessmentPreferences >>> preferences = IAssessmentPreferences(schoolyear)
This object carries attributes that specify which gradebook worksheets should be enabled for any section:
- bot: Beginning of Term sheet
- mot: Middle of Term sheet
- eot: End of Term sheet
- mock: MOCK - PEAS sheet
- mock_other: MOCK - Other sheet
Other preferences stored in this object include weights for the term sheets and options for defining in which terms should the MOCK sheets be deployed. See the schooltool.peas.assessment.IAssessmentPreferences interface.
Also, all the courses get a “Target” sheet on the section of the first term of the school year.
A custom discrete score system has been added for calculating division scores based on the schooltool.peas.assessment.PEASScoreSystem object.
Division scores are calculated by organizing courses in four different areas (Humanities, Science, English and Mathematics), setting the minimum value of 6 as a “credit level” score and applying different sets of rules to get each division.
The schooltool.peas.assessment.find_division function takes a list of tuples of (course government_id codes, score) and calculates the division score based on different rules.
For example the rule for a “Division 1” score is: Pass a minimum of eight subjects which must include English (with credit level), a Humanity subject, Mathematics and a Science subject. At least seven of the subjects must be a credit level or better. The aggregate for the best eight done subjects must not exceed 32
PEAS has its own term report card. It’s a PDF report coded in the schooltool.peas.browser.assessment.TermReportCardPDFView class.
The schooltool.rising package has the Rising Academies specific functionality. The main development branch in Launchpad is lp:schooltool.rising.
All the courses get a “Target” sheet on the section of the first term of the school year.
Rising has its own term report card. It’s a PDF report coded in the schooltool.rising.browser.assessment.TermReportCardPDFView class.
Rising provides additional demographics fields for student contacts. See the schooltool.rising.contact module. This functionality is also integrated in the standard XLS importer/exporter.
The schooltool.isli package has the ISLI specific functionality. The main development branch in Launchpad is lp:schooltool.isli.
First branch the base branches:
mkdir mysandbox cd mysandbox bzr branch lp:~schooltool-owners/schooltool/ark schooltool bzr branch lp:~schooltool-owners/schooltool.gradebook/ark schooltool.gradebook bzr branch lp:~schooltool-owners/schooltool.lyceum.journal/ark schooltool.lyceum.journal bzr branch lp:schooltool.ark bzr branch lp:schooltool.fee
Then branch the project specific branches:
bzr branch lp:schooltool.peas bzr branch lp:schooltool.isli bzr branch lp:schooltool.rising
Now when you want to work on a project branch:
Set the development environment:
Due to incomplete configuration this command could throw an error at first.
Edit the buildout.cfg file and change the develop = . line to add the base branches:
develop = . ../schooltool ../schooltool.gradebook ../schooltool.lyceum.journal ../schooltool.ark ../schooltool.fee
Then add the base branches to the [versions] section:
[versions] # Unset versions of packages you want to develop schooltool.isli = schooltool = schooltool.gradebook = schooltool.lyceum.journal = schooltool.ark = schooltool.fee =
After saving the changes to buildout.cfg, run:
The project branch is finally set up.