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.

Reply via email to