function routes complemented devel
authorSandro Knauß <knauss@netzguerilla.net>
Sat, 28 Jan 2012 04:03:15 +0100
branchdevel
changeset 119 3462c2c90f95
parent 118 e16c0250c974
child 120 7bde35ad89e0
function routes complemented
iro/controller/viewinterface.py
tests/xmlrpc.py
--- a/iro/controller/viewinterface.py	Sat Jan 28 04:00:47 2012 +0100
+++ b/iro/controller/viewinterface.py	Sat Jan 28 04:03:15 2012 +0100
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 from ..model.decorators import vUser, vRoute, dbdefer, vTyp
-from ..model.schema import User
+from ..model.schema import User, Userright, Offer
+from sqlalchemy import and_
 from ..validate import validate, vBool, vHash, vTel, vEmail
 
 class Interface(object):
@@ -121,8 +122,8 @@
         providerlist[list]: Eine Liste aller möglichen Provider
 
         '''
-        user = session.query(User).filter_by(name=user.name).first()
-        return [u.offer_name for u in user.rights]
+        offers = session.query(Userright.offer_name).join(Offer,User).filter(and_(User.name==user.name,Offer.typ==typ))
+        return [u[0] for u in offers]
         
     @validate(kwd="typ", func=vTyp)
     @vUser
--- a/tests/xmlrpc.py	Sat Jan 28 04:00:47 2012 +0100
+++ b/tests/xmlrpc.py	Sat Jan 28 04:03:15 2012 +0100
@@ -83,7 +83,7 @@
         self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 'false'), "<User('test','abcdef123456789')>")
         self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 0), "<User('test','abcdef123456789')>")
         self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 1), ["<User('test','abcdef123456789')>", '', True])
-
+    
     def testNoSuchUser(self):
         '''a unknown user should raise a UserNotNound Exception
         bewcause xmlrpc only has a Fault exception this Exception has to be deliverd through a xmlrpclib.Fault Exception'''
@@ -129,8 +129,18 @@
             o=Offer(name="sipgate_plus", provider="sipgate", route="plus", typ="sms")
             u = session.query(User).filter_by(name="test").first()
             u.rights.append(Userright(o)) 
+            o=Offer(name="faxde", provider="faxde", route="", typ="fax")
+            session.add(o)
             session.commit()
         self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','sms'),['sipgate_basic','sipgate_plus'])
+        self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','fax'),[])
+
+        with WithSession(md.engine, autocommit=True) as session:
+            u = session.query(User).filter_by(name="test").first()
+            u.rights.append(Userright(o)) 
+        
+        self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','sms'),['sipgate_basic','sipgate_plus'])
+        self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','fax'),['faxde'])
 
 def startReactor(engine):
     """starts the Rector with a special debug Clild, so that the reactor can be stopped remotly. """