putting routes logic to schema devel
authorSandro Knauß <knauss@netzguerilla.net>
Sat, 28 Jan 2012 12:24:40 +0100
branchdevel
changeset 121 ca63b6776231
parent 120 7bde35ad89e0
child 122 b55754aa4f96
putting routes logic to schema
iro/controller/viewinterface.py
iro/model/schema.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
--- 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))