# HG changeset patch # User Sandro Knauß # Date 1327719795 -3600 # Node ID 3462c2c90f95b14fa58574f01b8bb128a3c5d773 # Parent e16c0250c9745b75be07af6a5d7940ffb662c832 function routes complemented diff -r e16c0250c974 -r 3462c2c90f95 iro/controller/viewinterface.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 diff -r e16c0250c974 -r 3462c2c90f95 tests/xmlrpc.py --- 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'), "") self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 0), "") self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 1), ["", '', 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. """