using extendProvide in Job.create devel
authorSandro Knauß <knauss@netzguerilla.net>
Mon, 13 Feb 2012 19:52:54 +0100
branchdevel
changeset 152 14c99c89edf4
parent 151 ff8448fb07e7
child 153 0e50d10c8b6c
using extendProvide in Job.create
iro/model/job.py
iro/model/message.py
iro/model/offer.py
tests/job.py
--- a/iro/model/job.py	Mon Feb 13 19:50:01 2012 +0100
+++ b/iro/model/job.py	Mon Feb 13 19:52:54 2012 +0100
@@ -2,6 +2,7 @@
 
 import schema
 from .dbdefer import dbdefer
+from .offer import extendProvider
 
 class Status:
     '''status for one recipient'''
@@ -40,8 +41,9 @@
         job = schema.Job(info=info, status="started")
         user.jobs.append(job)
         session.commit()
-
-        self[job.id] = ExJob(job.id, recipients, message, offers)
+        
+        o = extendProvider(user, message.typ, offers, session=session)
+        self[job.id] = ExJob(job.id, recipients, message, o)
         return self[job.id]
 
 exJobs = ExJobs()
--- a/iro/model/message.py	Mon Feb 13 19:50:01 2012 +0100
+++ b/iro/model/message.py	Mon Feb 13 19:52:54 2012 +0100
@@ -4,8 +4,10 @@
 from email.header import Header
 
 class Message:
-    def __init__(self,content):
+    def __init__(self,content, typ="Message"):
         self.content=content
+        self.typ = typ
+
 
     def getContent(self):
         return self.content
@@ -18,7 +20,7 @@
 
 class SMS(Message):
     def __init__(self, cont):
-        Message.__init__(self,cont)
+        Message.__init__(self, cont, typ="sms")
 
     def sendto(self,anbieter,recipients):
         anbieter.sendSMS(self,recipients)
@@ -26,7 +28,7 @@
 
 class Fax(Message):
     def __init__(self,header,cont,attachments):
-        Message.__init__(self,cont)
+        Message.__init__(self,cont, typ="fax")
         self.header=header
         self.attachments=attachments
 
@@ -56,7 +58,7 @@
         sub=Header(subject.encode('utf-8'), 'utf-8')
         con['Subject']=sub
         self.frm=frm
-        Message.__init__(self, con)
+        Message.__init__(self, con, typ='mail')
 
     def as_string(self):
         return self.Message.as_string()
--- a/iro/model/offer.py	Mon Feb 13 19:50:01 2012 +0100
+++ b/iro/model/offer.py	Mon Feb 13 19:52:54 2012 +0100
@@ -1,5 +1,5 @@
 from .dbdefer import dbdefer
-from .schema import Offer as DBOffer
+import schema
 from ..config import config
 
 @dbdefer
@@ -9,7 +9,7 @@
     for p in providers:
         if p not in ret and user.has_right(typ, offer_name = p): 
                 ret.append(p)
-        elif user.providers(typ).filter(DBOffer.provider==p).first():
+        elif user.providers(typ).filter(schema.Offer.provider==p).first():
             for r in offers[p].routes:
                 n = user.has_right(typ, provider=p, route=r)
                 if n and n not in ret:
--- a/tests/job.py	Mon Feb 13 19:50:01 2012 +0100
+++ b/tests/job.py	Mon Feb 13 19:52:54 2012 +0100
@@ -11,7 +11,7 @@
 from iro.model.pool import data
 
 from iro.model.message import SMS, Fax, Mail
-from iro.model.schema import Job, User
+from iro.model.schema import Job, User, Offer as DBOffer, Userright
 from iro.telnumber import Telnumber
 
 
@@ -21,7 +21,7 @@
 
 from .dbtestcase import DBTestCase
 
-class DumpPool():
+class DummyPool():
     def run(self, f,*a,**k):
         return f(*a,**k)
 
@@ -32,7 +32,7 @@
     def setUp(self):
         DBTestCase.setUp(self)
         self.pool = data.pool
-        data.pool = DumpPool()
+        data.pool = DummyPool()
 
     def tearDown(self):
         exJobs.clear()
@@ -50,7 +50,7 @@
         self.assertTrue(vInteger(job.dbjob, None, minv=0 ))
         self.assertEqual(job.message, SMS('test'))
         self.assertEqual(job.recipients,  [Telnumber('123456789')])
-        self.assertEqual(job.offers,['test'])
+        self.assertEqual(job.offers,[])
         self.assertEqual(job.tasks,{})
 
         with self.session() as session:
@@ -59,6 +59,16 @@
 
         self.assertEqual(exJobs[job.dbjob],job)
 
+    def testCreate2(self):
+        with self.session() as session:
+            u = User(name='test',apikey='abcdef123456789')
+            session.add(u)
+            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
+
+        job = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
+        self.assertEqual(job.offers,['test'])
+
     def testGet(self):
         with self.session() as session:
             u = User(name='test',apikey='abcdef123456789')
@@ -119,6 +129,8 @@
         with self.session() as session:
             u = User(name='test',apikey='abcdef123456789')
             session.add(u)
+            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
         
         offers["test"] = Offer("test")