iro/controller/task.py
branchdevel
changeset 143 0b265608b6ce
parent 142 7d0c1fa97123
child 161 072ee139eb67
equal deleted inserted replaced
142:7d0c1fa97123 143:0b265608b6ce
     1 from functools import partial
     1 from functools import partial
     2 from twisted.internet import defer
     2 
     3 from twisted.internet.defer import inlineCallbacks, returnValue 
     3 from twisted.internet.defer import inlineCallbacks, returnValue 
     4 
     4 
     5 from ..error import NoRoute, RejectRecipient
     5 from ..error import NoRoute, RejectRecipient
     6 
     6 
     7 from ..model.offer import offers
     7 from ..model.offer import offers
    25 
    25 
    26     @inlineCallbacks
    26     @inlineCallbacks
    27     def _run(self):
    27     def _run(self):
    28         for offer in self.job.offers:
    28         for offer in self.job.offers:
    29             try:
    29             try:
    30                 ret = yield (offers[offer].send(self.recipient,self.job.message))
    30                 ret = yield offers[offer].send(self.recipient,self.job.message)
    31                 returnValue(ret)
    31                 returnValue(ret)
    32             except RejectRecipient:
    32             except RejectRecipient:
    33                 continue
    33                 continue
    34         else:
    34         else:
    35             raise NoRoute()
    35             raise NoRoute()
    36 
    36 
    37 
    37 
       
    38 @inlineCallbacks
    38 def createJob(user,recipients, msg, offers, info=None):
    39 def createJob(user,recipients, msg, offers, info=None):
    39     d = defer.maybeDeferred(exJobs.create,user, recipients, msg, offers, info)
    40     job = yield exJobs.create(user, recipients, msg, offers, info)
    40     def _(job):
    41     for r in recipients:
    41         for r in recipients:
    42         task = Task(r,job)
    42             task = Task(r,job)
    43         job.addTask(task)
    43             job.addTask(task)
    44         task.start()
    44             task.start()
    45     returnValue(job)
    45         return job
       
    46     d.addCallback(_)
       
    47     return d