just a suggestion : in models : database uri, database migration, lazy tables, define table, web2py built in menu in controllers : import the module, using grid in views : extend layout, and the variable return by controller
e.g. very easy n simple application (not more than 100 lines) *models/db.py* db = DAL('sqlite://shop.sqlite', pool_size = 30, check_reserved = ['all'], migrate = True, fake_migrate_all = False, lazy_tables = True) *models/db_wizard_0_bank.py* db.define_table('bank', Field('name'), auth.signature, format = '%(name)s') *models/menu.py* if auth.has_membership(role = 'Finance'): response.menu += [ (T('Finance'), False, URL('default', 'index'), [ (T('Master'), False, URL('finance_master', 'index'), [ (T('Bank'), False, URL('finance_master', 'bank'), []), ]), ]), ] *controllers/finance_master.py* import master auth.requires(auth.has_membership(role = 'Finance'))(lambda: None)() has_membership_manager = auth.has_membership('Manager') editable = has_membership_manager deletable = has_membership_manager def bank(): return master.grid_0(db.bank, editable, deletable) *controllers/install.py* def index(): if db(db.auth_permission).isempty() and db(db.auth_membership).isempty(): """ create index """ db.executesql('CREATE INDEX idx_bank ON bank (id, name);') """ insert """ # group auth.add_group('Admin', 'Admin') auth.add_group('Manager', 'Manager') auth.add_group('Finance', 'Finance') # user db.auth_user.bulk_insert([{"first_name" : "Admin", "last_name" : "Admin", "email" : "ad...@a.com", "password" : db.auth_user.password.validate("password")[0]}, {"first_name" : "Finance", "last_name" : "Manager", "email" : "financemana...@a.com", "password" : db.auth_user.password.validate("password")[0]}, {"first_name" : "Finance", "last_name" : "Staff", "email" : "financest...@a.com", "password" : db.auth_user.password.validate("password")[0]}, ]) """ membership (group_id, user_id) """ # Admin auth.add_membership('1', '1') auth.add_membership('2', '1') auth.add_membership('3', '1') auth.add_membership('4', '1') # Finance Manager auth.add_membership('2', '2') auth.add_membership('3', '2') # Finance Staff auth.add_membership('3', '3') # permission auth.add_permission(1, 'impersonate', 'auth_user', 2) auth.add_permission(1, 'impersonate', 'auth_user', 3) """ insert 0 """ # bank db.bank.bulk_insert([{"name" : "A"}, {"name" : "B"}, ]) session.flash = T('Installation Done') redirect(URL("default", "index") ) *modules/master.py* from gluon import * def grid_0(table, editable, deletable): grid = SQLFORM.grid(table, editable = editable, deletable = deletable) return locals() *views/finance_master/bank.html* {{extend 'layout.html'}} {{=grid}} best regards, stifan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.