wiki:DeveloperGuidelines

Version 178 (modified by Michael Howden, 10 years ago) ( diff )

--

Developer Guidelines

Getting Started

Development Process

Development Enviroment

Framework

User Interface

Other Resources

  • Tips - useful links to explore

Python

Indentation matters (use 4 spaces instead of Tabs)

More details at: DeveloperGuidelinesCodeConventions

Web2Py

This is an MVC environment (like Rails & Django. Django polls tutorial conversion course).

Web2Py can work at several different levels of abstraction.
The Sahana Eden framework (S3) is built on Web2Py's Auth/Crud classes in tools.py (with some remnants of the older T2), however sometimes we need more control therefore need to drop down a level or two.

Recommend using the CLI to try out code snippets in the Web2Py environment (gluon, Model):

python web2py.py -S eden -M

Can execute a controller to be able to access its functions using:

execfile("applications/eden/controllers/mycontroller.py", globals())

Web2Py can be extended through Plugins & also has a recipes site.

Javascript

  • S3 includes a cross-browser debug utility (only shows up when ?debug=1):
    s3_debug('message', value);
    

All global variables should be in the S3 namespace:

Private variables should be protected, e.g. using the Module Pattern:

Can test out the performance of different options to achieve a task using:

Deployment

Browsers default to only downloading 2 files from the same origin at a time, so many files is very slow on high latency links.

We therefore consolidate into fewer, larger files when running in Production mode.

Since GIS is a specialised app which requires many files, it's JS is loaded separately when required.

The build script is static/scripts/tools/build.sahana.py

It needs to be run from the 'tools' folder.

There is also a convenience wrapper for Windows to run this & also move results into their respective locations: static/scripts/tools/build.cmd

You must have an internet connection to run the build script unless you have a local version of the Compiler.

Our build process is based on the one used by OpenLayers

This uses Google's Closure compiler to compress the JS. This is done using their web service, however for OpenLayers itself we need to download the jar file & place in the tools folder since this is over 1Mb:

ToDo: Investigate using other options instead:

ToDo: Download/execute scripts asynchronously:

Mobile

  • Android - Developer Guidelines for the Android client

XSLT

  • XSLT - Stylesheets for XML & JSON Import/Export
Note: See TracWiki for help on using the wiki.