98 |
98 |
99 def __repr__(self): |
99 def __repr__(self): |
100 return "<User('%s','%s')>"%(self.name,self.apikey) |
100 return "<User('%s','%s')>"%(self.name,self.apikey) |
101 |
101 |
102 def routes(self, typ, isDefault = None): |
102 def routes(self, typ, isDefault = None): |
|
103 '''returns a query object to get all possible routes for a given typ''' |
103 filters=[User.name == self.name, |
104 filters=[User.name == self.name, |
104 Offer.typ == typ, |
105 Offer.typ == typ, |
105 ] |
106 ] |
106 if isDefault is not None: |
107 if isDefault is not None: |
107 filters.append(Userright.isDefault==isDefault) |
108 filters.append(Userright.isDefault==isDefault) |
108 return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)) |
109 return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)) |
109 |
110 |
|
111 def providers(self, typ, isDefault = None): |
|
112 '''return a query object for all possible providers for a given typ''' |
|
113 filters=[User.name == self.name, |
|
114 Offer.typ == typ, |
|
115 ] |
|
116 if isDefault is not None: |
|
117 filters.append(Userright.isDefault==isDefault) |
|
118 return object_session(self).query(Offer.provider).join(Userright,User).filter(and_(*filters)) |
|
119 |
|
120 def has_right(self, typ, offer_name = None, provider = None, route = None): |
|
121 '''returns offer_name, if the user is allowed to use offer otherwise None |
|
122 !if there are more than one possible solution it only returns the first!''' |
|
123 filters=[User.name == self.name, |
|
124 Offer.typ == typ, |
|
125 ] |
|
126 if offer_name: |
|
127 filters.append(Userright.offer_name==offer_name) |
|
128 if provider: |
|
129 filters.append(Offer.provider==provider) |
|
130 if route: |
|
131 filters.append(Offer.route==route) |
|
132 |
|
133 return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)).scalar() |
|
134 |
110 def job(self, id): |
135 def job(self, id): |
111 job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.id==id)).first() |
136 job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.id==id)).first() |
112 if job is None: |
137 if job is None: |
113 raise JobNotFound() |
138 raise JobNotFound() |
114 return job |
139 return job |