|Version 28 (modified by 11 years ago) ( diff ),|
Blueprint for Web Setup
Video Demo: http://www.rpi.edu/~mcmilj/demo_record.ogv
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...
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;
- MySQL can:
Configuration settings are in the file
models/000_config.py which will have a simple structured format.
models/00_settings.pyreads these settings to do the actual configuration.
- The Web Setup should ideally read in the
000_config.pyfile, 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
Provide an option to import themes of settings (e.g. 'FEMA') using
shn_import from CSV files in
- Symbology (icons on maps)
- Terminology of Labels
- Forms used (which fields are used, which are mandatory, etc)
- Which modules are active