--- 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. """