I know that I’d already
post a message about deferred but I think I haven’t understand very well.
I have a function that is
suppose to return a new dictionnary but it returns a deferred.
class MainPage(pages.BasePage):
templateFile = "main.html"
def initialize(self, dbpool=None):
self.dbpool
= dbpool
def setUp(self, request, *args):
var =
self.initPermissions(request) #var is suppose
to get the new list
print var
def wmfactory_welcome(self, request):
return "Bienvenue, %s" % request.getComponent(myguard.Authenticated).name
def initPermissions(self,
request): #create
and return the results of a sql query
group = request.getComponent(myguard.Authenticated).group
listGroup = group.split(',')
sql =
"select permission from permissions where 1"
for
item in listGroup:
sql += " or permissions.group='%s'" % item.lstrip()
theDeferred = self.dbpool.runQueryDict(sql)
return theDeferred.addCallback(self.makeDict) # suppose to call makeDict
when the results has arrived
def makeDict(self, results):
#
when I print what is in results, I can see all the data from the sql query
listPermissions = []
for
item in results:
listPermissions.append(item.get('permission'))
return listPermissions #
return the new list but the function setUp receive a deferred
I’ve put some comments
in the code to help you understand what I want.
The big problem is that var
receive a deferred and not the new list
Vicky