17 Base = declarative_base() |
17 Base = declarative_base() |
18 |
18 |
19 __tables__=["User", "Job", "Message", "Offer", "Userright"] |
19 __tables__=["User", "Job", "Message", "Offer", "Userright"] |
20 |
20 |
21 class Userright(Base): |
21 class Userright(Base): |
22 """Über welche Routen darf ein Benutzer Daten verschicken und welches sind die Standardrouten (<em>isDefault=1</em>) für den Benuter.""" |
22 """Über welche Routen darf ein Benutzer Daten verschicken und welches sind die Standardrouten (<em>default!=None</em>) für den Benuter. Geordnert werden die Standardrouten nach default.""" |
23 __tablename__ = 'userright' |
23 __tablename__ = 'userright' |
24 user_name = Column('user', String(100), ForeignKey('apiuser.name'), primary_key=True) |
24 user_name = Column('user', String(100), ForeignKey('apiuser.name'), primary_key=True) |
25 offer_name = Column('offer', String(100), ForeignKey('offer.name'), primary_key=True) |
25 offer_name = Column('offer', String(100), ForeignKey('offer.name'), primary_key=True) |
26 isDefault = Column(Boolean) |
26 default = Column(Integer) |
27 offer = relationship("Offer") |
27 offer = relationship("Offer") |
28 user = relationship("User") |
28 user = relationship("User") |
29 |
29 |
30 def __init__(self, offer, default=False): |
30 def __init__(self, offer, default=None): |
31 self.offer = offer |
31 self.offer = offer |
32 self.isDefault = default |
32 self.default = default |
33 |
33 |
34 @property |
34 @property |
35 def bill(self): |
35 def bill(self): |
36 '''getting a list of unbilled messages grouped by Job.info''' |
36 '''getting a list of unbilled messages grouped by Job.info''' |
37 query = [ func.count(Message.id).label('anz'), # anz of messages |
37 query = [ func.count(Message.id).label('anz'), # anz of messages |
111 try: |
111 try: |
112 return "<User('%s','%s')>"%(self.name,self.apikey) |
112 return "<User('%s','%s')>"%(self.name,self.apikey) |
113 except DetachedInstanceError: |
113 except DetachedInstanceError: |
114 return Base.__repr__(self) |
114 return Base.__repr__(self) |
115 |
115 |
116 def routes(self, typ, isDefault = None): |
116 def routes(self, typ, default = False): |
117 '''returns a query object to get all possible routes for a given typ''' |
117 '''returns a query object to get all possible routes for a given typ''' |
118 filters=[User.name == self.name, |
118 filters=[User.name == self.name, |
119 Offer.typ == typ, |
119 Offer.typ == typ, |
120 ] |
120 ] |
121 if isDefault is not None: |
121 if default: |
122 filters.append(Userright.isDefault==isDefault) |
122 filters.append(Userright.default != None) |
123 return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)) |
123 return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)) |
124 |
124 |
125 def providers(self, typ, isDefault = None): |
125 def providers(self, typ, default = False): |
126 '''return a query object for all possible providers for a given typ''' |
126 '''return a query object for all possible providers for a given typ''' |
127 filters=[User.name == self.name, |
127 filters=[User.name == self.name, |
128 Offer.typ == typ, |
128 Offer.typ == typ, |
129 ] |
129 ] |
130 if isDefault is not None: |
130 if default: |
131 filters.append(Userright.isDefault==isDefault) |
131 filters.append(Userright.default != None) |
132 return object_session(self).query(Offer.provider).join(Userright,User).filter(and_(*filters)) |
132 return object_session(self).query(Offer.provider).join(Userright,User).filter(and_(*filters)) |
133 |
133 |
134 def has_right(self, typ, offer_name = None, provider = None, route = None): |
134 def has_right(self, typ, offer_name = None, provider = None, route = None): |
135 '''returns offer_name, if the user is allowed to use offer otherwise None |
135 '''returns offer_name, if the user is allowed to use offer otherwise None |
136 ->raise sqlalchemy.orm.exc.MultipleResultsFound if not a single offer match''' |
136 ->raise sqlalchemy.orm.exc.MultipleResultsFound if not a single offer match''' |