It is your choice. In any language when you use functions in modules you have to pass variables to them. I like the idea of instantiating a class. That is how Auth, Crud and Service work too.
On May 4, 6:26 am, canna <[email protected]> wrote: > Thank you for the answer > so how would you share functions between controllers easily? without > passing global objects to the functions all the time? > is the only way is to bundle it all in one class that will be > initialized with the 'db' variable? > or there is other way? > > On May 4, 1:49 pm, mdipierro <[email protected]> wrote: > > > A module is a module. You can import stuff form the module but the > > module will not see variables defined in the calling environment. > > In the module you can defined a function that takes db as parameter, > > import the funciton and call it with the db instance. You will have > > the problem not just for db, but also for the other web2py global > > objects. > > > Massimo > > > On May 4, 4:16 am, canna <[email protected]> wrote: > > > > hi all, > > > I want to share a bunch of functions between controllers, so I moved > > > them to a module called 'utilities' in the modules folder, and in the > > > controller I import the module as suggested here in the forum: > > > > import applications.myapp.modules.utilities as util > > > reload(util) > > > > the problem is, it's not working, I get an error: > > > > NameError: global name 'db' is not defined > > > > how can I get my 'utilities' file to recognize the global variable > > > 'db'?

