Skip to content

Inter app dependencies

Ben Cipollini edited this page Apr 29, 2014 · 2 revisions

The relationship between apps should be explicit and intentional.

All apps within the kalite directory are dependent on settings.py (at least until #1644 is complete).

KA Lite app definitions

  • i18n: knows about languages, language packs, and language mappings between youtube_id and video_id
  • facility: authentication and user grouping system. Accesses i18n to allow users to set a default language limited to the languages currently available.
  • main: associates facility users with khan academy (exercise & video logs) and login (userlog) data.
  • khanload: allow importing of data from khan academy, either into the main data sources, or into the database (main models)
  • coachreports: reports on top of main data
  • control_panel: views on users, user groups, and hooks into their data.
  • updates: allows updating of language packs (via i18n), videos (via main), and software.
  • distributed: combines all apps together.

KA Lite inter-app dependencies

Project-independent (and so won't be included in the list of dependencies):

  • fle-utils - no dependencies. internal utilities for FLE. pretty much everything depends on it :)
  • fle-utils/chronograph - no dependencies.
  • fle-utils/config - no dependencies. Similar to settings.py, but written into the database.
  • securesync - depends on config (to store the crypto keys) and fle-utils

Downloaded, tweaked, but don't have intra-app dependencies (outside of settings.py):

  • django_cherrypy_wsgiserver - the main server process for the distributed server

New modules for KA Lite

  • distributed - Depends on all apps that have distributed server end-points (coachreports, control_panel, facility, main, etc.)
  • coachreports - Depends on main (for models)
  • control_panel - Depends on main (for models) and coachreports (to integrate them into the interface)
  • facility - depends on config (for default facility) and securesync
  • i18n - depends on config (for default language), main (for mappings of youtube_id to video_id)
  • kalite - The project; depends on all apps :)
  • khanload - Depends on main (so it can write into main's data structures; could be refactored)
  • main - depends on facility (for facility user logins). SHOULD not have circular dependencies, but currently depends on i18n (to map youtube_ids to video_ids) and khanload (unnecessarily).
  • shared - None / Not applicable
  • testing - None / Not applicable
  • updates - Depends on main... but could be refactored to become an independent library
Clone this wiki locally