# HG changeset patch # User Sandro Knauß # Date 1327749880 -3600 # Node ID ca63b67762311b5351c817f5a195dccd1943ab33 # Parent 7bde35ad89e0157eb53ac1e11b00e32aabd8437c putting routes logic to schema diff -r 7bde35ad89e0 -r ca63b6776231 iro/controller/viewinterface.py --- a/iro/controller/viewinterface.py Sat Jan 28 04:03:46 2012 +0100 +++ b/iro/controller/viewinterface.py Sat Jan 28 12:24:40 2012 +0100 @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- from ..model.decorators import vUser, vRoute, dbdefer, vTyp -from ..model.schema import User, Userright, Offer -from sqlalchemy import and_ from ..validate import validate, vBool, vHash, vTel, vEmail class Interface(object): @@ -122,7 +120,8 @@ providerlist[list]: Eine Liste aller möglichen Provider ''' - offers = session.query(Userright.offer_name).join(Offer,User).filter(and_(User.name==user.name,Offer.typ==typ)) + user = session.merge(user) + offers = user.routes(typ) return [u[0] for u in offers] @validate(kwd="typ", func=vTyp) @@ -141,7 +140,8 @@ ''' - offers = session.query(Userright.offer_name).join(Offer,User).filter(and_(User.name==user.name,Offer.typ==typ,Userright.isDefault==True)) + user = session.merge(user) + offers = user.routes(typ, isDefault=True) return [u[0] for u in offers] @vUser diff -r 7bde35ad89e0 -r ca63b6776231 iro/model/schema.py --- a/iro/model/schema.py Sat Jan 28 04:03:46 2012 +0100 +++ b/iro/model/schema.py Sat Jan 28 12:24:40 2012 +0100 @@ -5,7 +5,9 @@ #relationship from sqlalchemy import ForeignKey -from sqlalchemy.orm import relationship, backref +from sqlalchemy.orm import relationship, backref, object_session + +from sqlalchemy import and_ Base = declarative_base() @@ -74,5 +76,11 @@ def __repr__(self): return ""%(self.name,self.apikey) - - + + def routes(self, typ, isDefault = None): + filters=[User.name == self.name, + Offer.typ == typ, + ] + if isDefault is not None: + filters.append(Userright.isDefault==isDefault) + return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters))