--- a/iro/controller/task.py Tue Feb 14 15:47:42 2012 +0100
+++ b/iro/controller/task.py Tue Feb 14 16:23:27 2012 +0100
@@ -27,7 +27,7 @@
def _run(self):
for offer in self.job.offers:
try:
- ret = yield offers[offer].send(self.recipient,self.job.message)
+ ret = yield offers[offer](self.recipient,self.job.message)
returnValue(ret)
except RejectRecipient:
continue
--- a/iro/model/status.py Tue Feb 14 15:47:42 2012 +0100
+++ b/iro/model/status.py Tue Feb 14 16:23:27 2012 +0100
@@ -1,11 +1,15 @@
class Status:
'''status for one recipient'''
- todo = 1
- good = 2
- error = 3
+ GOOD = 1
+ ERROR = 99
- def __init__(self, offer, status, errtext=None):
- self.status = status
- self.offer = offer #the offer over that this job was done
- self.errtext = errtext #the error text
+ def __init__(self, provider, route, error=None):
+ if error:
+ self.status = Status.ERROR
+ else:
+ self.status = Status.GOOD
+
+ self.provider = provider
+ self.route = route
+ self.error = error
--- a/iro/offer/offer.py Tue Feb 14 15:47:42 2012 +0100
+++ b/iro/offer/offer.py Tue Feb 14 16:23:27 2012 +0100
@@ -1,14 +1,13 @@
-from ..model.status import Status
-
class Offer():
def __init__(self, name, provider, route, typ):
self.name = name
self.route = route
self.provider = provider
self.typ = typ
+ self.sendfunc = provider.getSendFunc(typ, route)
- def send(self, recipient, message):
- return Status(self.name, Status.error, errtext="Error: Test")
+ def __call__(self, recipient, message):
+ return self.sendfunc(recipient, message)
def __eq__(self,o):
return (self.name == o.name) and (self.route == o.route) and (self.provider == o.provider) and (self.typ == o.typ)
--- a/iro/offer/provider.py Tue Feb 14 15:47:42 2012 +0100
+++ b/iro/offer/provider.py Tue Feb 14 16:23:27 2012 +0100
@@ -1,3 +1,5 @@
+from functools import partial
+
class Provider():
def __init__(self, name, config, routes=[]):
self.name = name
@@ -9,3 +11,10 @@
for (n, v) in self.config:
if n == "typ":
self.typ = v
+
+ def send(self, typ, route, recipient, message):
+ pass
+
+ def getSendFunc(self, typ, route):
+ return partial(self.send, typ, route)
+
--- a/tests/job.py Tue Feb 14 15:47:42 2012 +0100
+++ b/tests/job.py Tue Feb 14 16:23:27 2012 +0100
@@ -16,7 +16,7 @@
from iro.telnumber import Telnumber
-from iro.offer.offer import Offer
+from iro.offer import Offer, Provider
from iro.validate import vInteger
from iro.error import NoRoute
@@ -133,16 +133,21 @@
o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
u.rights.append(Userright(o))
- offers["test"] = Offer("test",provider=None, route=None, typ="sms")
+ p=Provider(name="p", config={}, routes=["test"])
+ def send(typ,route,recipient,message):
+ return Status(provider=p, route=route, error="Error: Test")
+ p.send=send
+ offers["test"] = Offer("test",provider=p, route="test", typ="sms")
exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
task=Task(Telnumber('123456789'), exjob)
ret = yield task._run()
self.assertIsInstance(ret, Status)
- self.assertEqual(ret.offer,"test")
- self.assertEqual(ret.status, Status.error)
- self.assertEqual(ret.errtext,"Error: Test")
+ self.assertEqual(ret.provider, p)
+ self.assertEqual(ret.route, "test")
+ self.assertEqual(ret.status, Status.ERROR)
+ self.assertEqual(ret.error, "Error: Test")
@inlineCallbacks
def testNoRoute(self):