= !BluePrint: Templates = [[TOC]] == Introduction == Templates allow selecting alternate configuration sets. This allows a separation between Code & Settings. This reduces the need for deployment branches & hence reduces the risk of forking. == Description == Builds on the 000_config.py configuration template and DeveloperGuidelines/PrePopulate. == Requirements == See Use-Cases == Use-Cases == === End-User wishing to trial the System === The end-user would like to download & run immediately with the minimimum of up-front configuration possible - the defaults should be sufficient to get started with. If they must select between alternate options then they'd definitely want this to be done through the web browser. * perhaps the most useful would be a single web page with a list of Templates to choose from, witha big button to say 'OK' to proceed with the default. Once they've played around some & wish to customise it, then they would like to be able to configure options via [BluePrint/WebSetup WebSetup]. Once they decide to go into production, it would be really useful to be able to save all the settings they've made in their local instance to a file & then use this file to configure their server instance. This could include population of lookup lists being saved as CSVs and then compressing these into a single file to be uncompressed on the server. === Deployer === The deployer want to be walked through the different settings...ideally through a [BluePrint/WebSetup WebSetup] Wizard, however they're OK at doing this through a text file or CLI prompts if-required. They want to minimise the number of interrupts during the setup process - i.e. they would like to run a single script to download/install all the software & then run through a single set of configuration options. The current supported scripts do this reasonably well. === Developer/Tester === The developer/tester would like to be able to quickly move their system between different configuration options === Merger === Whilst all developers need to merge to some extent, those on the interfaces between deployment branches have extra work. The old deployment_templates/000_config.py always had regular merge conflicts, so separating these into separate template folders should improve things. == Design == We need a front-end decision maker to decide which template(s) we are using: * configuration settings: 000_config.py * prepopulate: tasks.cfg * tbc Theme: static/styles/sahana.css, views/layout.html, modules/eden/layouts.py * tbc Menus: modules/eden/menus.py, models/01_menu.py * tbc Message Parser This front-end should be bypassable via deployment scripts. This front-end selection should use a simple Web Setup to select between templates == Implementation == Currently 000_config calls the prepopulate options. * selecting between alternate 000_config.py files requires external shell scripting, which bypasses the hmac_key automation == References == * Prepopulate * BluePrint/WebSetup * [https://groups.google.com/d/topic/sahana-eden/Vy8xT4bA_pA/discussion Profile Layer] * [https://groups.google.com/d/topic/sahana-eden/TadDloKhqkg/discussion Profile Templates Plan] * [https://groups.google.com/d/topic/sahana-eden/YzgzXpTQjt8/discussion Splitting up CSS into separate files] ---- BluePrints