| 1 | DeveloperGuidelines |
| 2 | |
| 3 | == How to add a new module? == |
| 4 | |
| 5 | Copy an existing module & edit! |
| 6 | |
| 7 | == Model == |
| 8 | Add module to db.module: |
| 9 | * http://127.0.0.1:8000/sahana/appadmin/select/db?query=db.module.id%3E0 |
| 10 | |
| 11 | Create a file {{{/models/module.py}}} |
| 12 | This needs a table to store the module's menu options in: |
| 13 | {{{ |
| 14 | module='name' |
| 15 | |
| 16 | # Menu Options |
| 17 | db.define_table('%s_menu_option' % module, |
| 18 | SQLField('name'), |
| 19 | SQLField('function'), |
| 20 | SQLField('description',length=256), |
| 21 | SQLField('priority','integer'), |
| 22 | SQLField('enabled','boolean',default='True')) |
| 23 | db['%s_menu_option' % module].name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'%s_menu_option.name' % module)] |
| 24 | db['%s_menu_option' % module].name.requires=IS_NOT_EMPTY() |
| 25 | db['%s_menu_option' % module].priority.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(db,'%s_menu_option.priority' % module)] |
| 26 | }}} |
| 27 | |
| 28 | Add additional tables to this file, as-required. |
| 29 | To avoid namespace clashes, use the format: {{{db.module_table}}} |
| 30 | |
| 31 | === Controller === |
| 32 | Add CRUD functions for these tables to {{{/controllers/module.py}}} |
| 33 | === View === |
| 34 | Add HTML templates for these functions: {{{/views/module/function.html}}} |
| 35 | |
| 36 | DeveloperGuidelines |