--- a/iro/model/schema.py Fri Mar 02 13:46:13 2012 +0100
+++ b/iro/model/schema.py Fri Mar 02 13:59:56 2012 +0100
@@ -66,6 +66,10 @@
def typs(cls, session):
return session.query(cls.typ).distinct()
+ @classmethod
+ def providers(cls, session, typ):
+ return session.query(cls.provider).filter_by(typ=typ).distinct()
+
class Message(Base):
"""Wenn ein Vorgang von Iro Kosten erzeugt hat wird eine neue Zeile eingefügt. Solange nicht bezahlt wurde ist <em>isBilled=0</em>."""
__tablename__ = "message"
--- a/tests/db.py Fri Mar 02 13:46:13 2012 +0100
+++ b/tests/db.py Fri Mar 02 13:59:56 2012 +0100
@@ -109,6 +109,23 @@
self.assertEqual([o.name for o in Offer.routes(session, "sms2").order_by(Offer.name)],["s3"])
self.assertEqual([o.name for o in Offer.routes(session, "sms").order_by(Offer.name)],["s2","sipgate_basic"])
+ def testOfferProviders(self):
+ with self.session() as session:
+ o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms")
+ session.add(o)
+
+ with self.session() as session:
+ self.assertEqual([o.provider for o in Offer.providers(session, "sms").order_by(Offer.provider)],["sipgate"])
+
+ with self.session() as session:
+ o=Offer(name="s2", provider="sipgate2", route="basic", typ="sms")
+ session.add(o)
+ o=Offer(name="s3", provider="sipgate", route="basic", typ="sms2")
+ session.add(o)
+
+ with self.session() as session:
+ self.assertEqual([o.provider for o in Offer.providers(session, "sms2").order_by(Offer.provider)],["sipgate"])
+ self.assertEqual([o.provider for o in Offer.providers(session, "sms").order_by(Offer.provider)],["sipgate","sipgate2"])
class Has_RightTests(DBTestCase):
'''test User.has_right'''