Skip to content
kaposto edited this page Nov 16, 2015 · 6 revisions

Project Structure

This document tries to give an overview about which module is supposed to contain what kind of functionality. Keep in mind: The structure of the Django project is not fixed, yet. Feel free to correct this overview in case something changed.

  • volunteer_planner
    • accounts: Accounts are the actual user accounts. The midterm plan is to separate the actual user accounts (containing things like user name, mail and password hash) from the actual profile. We could then use the Django user management extension for login stuff. Any domain-specific stuff could be handled by the profiles.
    • api: currently empty
    • blueprint: Blue prints are some kind of template for shift planners. A blue print can be used to assign tasks (e.g. kitchen work) to different shifts (e.g. time slots) of the day and defining the amount of people who are needed for the task. The template can, then, be applied to different days (e.g. each Monday or for the whole week).
    • common: Common stuff like template filters and configuration loading.
    • content: Management of flatpages. They are used for storing multilingual content in the database. Note: Translation strings and internationalisation are extensively used but flat pages are for large texts that do not change often (e.g. FAQ) but still vary in each country/language.
    • google_tools: Google tools configuration and google maps.
    • locale: Configuration files for different languages.
    • news: News that facilities and organisations publish.
    • non_logged_in_area: All parts of the app that are accessible to a user that has not logged in.
    • notifications: Locations can publish messages. This module takes care of this.
    • organizations: Organisations, facilities and memberships in this module.
    • places: Places, areas, countries in this module.
    • registration_history: Not used any more (?).
    • requirements: Requirements contains different files listing dependencies that are needed to run the project in different environments (e.g. production or locally).
    • resources: Javascript, CSS, images,...
    • scheduler: The scheduler is the page you see after logging into the service. It lists all the locations and available jobs.
    • scheduletemplates: Manage schedule templates (i.e. shift templates that are saved such that the administrator can easily generate identical shifts on a weekly basis)
    • shiftmailer: The shiftmailer contains logic for distributing shift plans by mail.
    • stats: (???) not used
    • templates: Contains templates that are common to all modules.
    • tests: Unit and behaviour tests.
    • volunteer_planner: The project's main module containing settings.