--- 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
--- 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 "<User('%s','%s')>"%(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))