# HG changeset patch # User Sandro Knauß # Date 1329233007 -3600 # Node ID 072ee139eb67a410e7e9f04521c119cbe6557cbb # Parent f4e4f4ba25fb315c2430724c20da962ab49fedd9 sending part now in provoder class diff -r f4e4f4ba25fb -r 072ee139eb67 iro/controller/task.py --- 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 diff -r f4e4f4ba25fb -r 072ee139eb67 iro/model/status.py --- 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 diff -r f4e4f4ba25fb -r 072ee139eb67 iro/offer/offer.py --- 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) diff -r f4e4f4ba25fb -r 072ee139eb67 iro/offer/provider.py --- 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) + diff -r f4e4f4ba25fb -r 072ee139eb67 tests/job.py --- 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):