= Blueprint for Web Setup = == Status == Video Demo: http://www.rpi.edu/~mcmilj/demo_record.ogv Source: {{{ hg clone https://rcos-sahana-eden.googlecode.com/hg/ rcos-sahana-eden }}} We need to think about how we package this since it's designed as a parallel app to eden, so would normally sit at the same level as the current repo's root folder. Don't really want to move the root up one as then we'll find it harder to maintain parallel app versions. Thinking about storing it within /eden but then having it copy this stuff out to the root applications folder on run, if it's not there already....thinking about how it updates that version & how we'd manage with eden, eden2, eden_test as alternate app versions... == Requirements == Provide a 1st-time configuration screen. Setting the 1st username/password here & then running {{{models/zzz_1st_run.py}}} means that: * User can be given admin rights even on databases which support referential integrity. * MySQL can: {{{ SET FOREIGN_KEY_CHECKS=0; do import SET FOREIGN_KEY_CHECKS=1; }}} Configuration settings are in the file {{{models/000_config.py}}} which will have a simple structured format. * {{{models/00_settings.py}}} reads these settings to do the actual configuration. * The Web Setup should ideally read in the {{{000_config.py}}} file, make any amendments as-required & then write it out. * This means that developers can edit the settings live (we remain RAD) & there are no unncessary DB calls every request. * Ideally the Web setup should have a UI which works via introspection, so doesn't need to be maintained separately when settings are added/amended (this means the settings file needs to include labels/help text). * 000_config.py instantiates the '''S3Config''' class as ''deployment_settings'': * S3Config is a subclass of ''Storage'' and can therefore be written in dot-notation * S3Config implements methods to read the config values (instead of accessing the instance attributes themselves), which also implement any fallback values. These methods should be used throughout the application (=do not store their return values in any global variables). * additionally, a S3Config instance could (should) be made read-only during the current request (=safer) by amending the ''!__setattr!__'' method to not accept updates * S3Config could contain a method to generate a web form to create a new instance (+pre-populate the form with values of another instance) * S3Config could then even contain a method to write the instance to a config file like 000_config.py There should be an option to be able to run with settings in the DB instead of config file to support: * Load-balanced webservers * GAE Provide an option to import themes of settings (e.g. 'FEMA') using {{{shn_import}}} from CSV files in {{{private/import}}}: * Symbology (icons on maps) * Terminology of Labels * Forms used (which fields are used, which are mandatory, etc) * Which modules are active Sahana Phase2 version: * http://wiki.sahanafoundation.org/doku.php?id=dev:websetup * http://wiki.sahanafoundation.org/doku.php?id=dev:saws ---- BluePrints