| | 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 |