| author | Sandro Knauß <bugs@sandroknauss.de> |
| Tue, 15 Apr 2025 01:22:19 +0200 | |
| changeset 316 | 63c681b8e92c |
| parent 312 | 42fd5075a5d1 |
| permissions | -rw-r--r-- |
|
294
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
1 |
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net> |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
2 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
3 |
# This file is part of Iro. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
4 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
5 |
# Permission is hereby granted, free of charge, to any person obtaining a copy of |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
6 |
# this software and associated documentation files (the "Software"), to deal in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
7 |
# the Software without restriction, including without limitation the rights to use, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
8 |
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
9 |
# #Software, and to permit persons to whom the Software is furnished to do so, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
10 |
# subject to the following conditions: |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
11 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
12 |
# The above copyright notice and this permission notice shall be included in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
13 |
# all copies or substantial portions of the Software. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
14 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
15 |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
16 |
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
17 |
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
18 |
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
19 |
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
20 |
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
275
diff
changeset
|
21 |
|
| 92 | 22 |
# -*- coding: utf-8 -*- |
23 |
||
24 |
from sqlalchemy import Column, Integer, String, Sequence, Boolean, DateTime, Numeric, Enum |
|
25 |
from sqlalchemy.ext.declarative import declarative_base |
|
26 |
||
27 |
#relationship |
|
28 |
from sqlalchemy import ForeignKey |
|
|
121
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
29 |
from sqlalchemy.orm import relationship, backref, object_session |
|
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
30 |
|
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
31 |
from sqlalchemy import and_ |
|
153
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
32 |
from sqlalchemy.orm.exc import DetachedInstanceError |
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
33 |
import sqlalchemy.sql.functions as func |
| 92 | 34 |
|
| 312 | 35 |
from . import job |
|
125
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
36 |
from ..error import JobNotFound |
|
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
37 |
|
| 92 | 38 |
Base = declarative_base() |
39 |
||
40 |
class Userright(Base): |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
41 |
"""Allowed offers for one user. Default routes are sorted by **default** value.""" |
| 92 | 42 |
__tablename__ = 'userright' |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
43 |
user_name = Column('user', String(100), ForeignKey('apiuser.name'), primary_key=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
44 |
"""username""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
45 |
offer_name = Column('offer', String(100), ForeignKey('offer.name'), primary_key=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
46 |
"""offername""" |
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
47 |
default = Column(Integer) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
48 |
"""sorting defaults routes with this value""" |
| 92 | 49 |
offer = relationship("Offer") |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
50 |
"""connected :class:`Offer` object""" |
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
51 |
user = relationship("User") |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
52 |
"""connected :class:`User` object""" |
| 92 | 53 |
|
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
54 |
def __init__(self, offer, default=None): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
55 |
"""Constructor of Userright class. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
56 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
57 |
:param `Offer` offer: a offer object |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
58 |
:param integer default: default value |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
59 |
""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
60 |
|
| 117 | 61 |
self.offer = offer |
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
62 |
self.default = default |
| 117 | 63 |
|
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
64 |
@property |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
65 |
def bill(self): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
66 |
"""returns a list of unbilled messages grouped by Job.info""" |
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
67 |
query = [ func.count(Message.id).label('anz'), # anz of messages |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
68 |
func.sum(Message.price).label("price"), # price of the messages |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
69 |
Job.info.label('info'), # info tag |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
70 |
] |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
71 |
|
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
72 |
filters = [ Message.isBilled==False, # only unbilled messages |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
73 |
Job.user==self.user, # only jobs connected to user |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
74 |
Message.offer==self.offer, # only messages in the right offer |
|
136
ca926774e16c
now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
75 |
Message.job_id==Job.id, # join Message and Job |
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
76 |
] |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
77 |
return object_session(self).query(*query).filter(and_(*filters)).group_by(Job.info) |
|
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
78 |
|
| 92 | 79 |
class Offer(Base): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
80 |
"""All possible Offers over a Message can be sended. **provider**, **typ** and **route** are used to get the data form configuration file.""" |
| 92 | 81 |
__tablename__ = "offer" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
82 |
name = Column(String(100), primary_key=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
83 |
"""name of the offer""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
84 |
provider = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
85 |
"""provider name""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
86 |
route = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
87 |
"""route of the provider""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
88 |
typ = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
89 |
"""typ of message""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
90 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
91 |
def __init__(self, **kwargs): |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
92 |
Base.__init__(self,**kwargs) |
|
122
b55754aa4f96
nun typs query into session object
Sandro Knauß <knauss@netzguerilla.net>
parents:
121
diff
changeset
|
93 |
|
|
176
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
94 |
@classmethod |
|
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
95 |
def get(cls, session, provider, route, typ): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
96 |
"""returns a Offer object.""" |
|
176
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
97 |
return session.query(cls).filter(and_(cls.provider==provider, cls.route==route, cls.typ==typ)).first() |
| 92 | 98 |
|
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
203
diff
changeset
|
99 |
@classmethod |
|
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
203
diff
changeset
|
100 |
def routes(cls, session, typ): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
101 |
"""returns a query object of all possible offers. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
102 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
103 |
:param string typ: get all offers that support this typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
104 |
""" |
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
203
diff
changeset
|
105 |
return session.query(cls).filter_by(typ=typ) |
|
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
203
diff
changeset
|
106 |
|
|
208
5da0f00ef872
session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents:
205
diff
changeset
|
107 |
@classmethod |
|
5da0f00ef872
session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents:
205
diff
changeset
|
108 |
def typs(cls, session): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
109 |
"""returns a list of all possible types. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
110 |
""" |
|
208
5da0f00ef872
session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents:
205
diff
changeset
|
111 |
return session.query(cls.typ).distinct() |
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
203
diff
changeset
|
112 |
|
|
211
3fc1f400c107
adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
208
diff
changeset
|
113 |
@classmethod |
|
3fc1f400c107
adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
208
diff
changeset
|
114 |
def providers(cls, session, typ): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
115 |
"""returns a list of all possible providers. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
116 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
117 |
:param string typ: get all providers that support this typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
118 |
""" |
|
211
3fc1f400c107
adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
208
diff
changeset
|
119 |
return session.query(cls.provider).filter_by(typ=typ).distinct() |
|
3fc1f400c107
adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents:
208
diff
changeset
|
120 |
|
| 92 | 121 |
class Message(Base): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
122 |
"""A message that has created costs. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
123 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
124 |
**isBilled** is False since the bill is paid. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
125 |
""" |
| 92 | 126 |
__tablename__ = "message" |
127 |
id = Column(Integer, Sequence('message_id_seq'), primary_key=True) |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
128 |
"""primary key of the message""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
129 |
|
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
130 |
recipient = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
131 |
"""string representation of the recipient""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
132 |
|
| 92 | 133 |
isBilled = Column(Boolean) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
134 |
"""is bill paid?""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
135 |
|
| 92 | 136 |
date = Column(DateTime) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
137 |
"""date of sending the message""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
138 |
|
|
127
79966b937274
made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents:
125
diff
changeset
|
139 |
price = Column(Numeric(8,4)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
140 |
"""price of sending the message""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
141 |
|
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
211
diff
changeset
|
142 |
count = Column(Integer) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
143 |
"""Count of sended messages""" |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
211
diff
changeset
|
144 |
exID = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
145 |
"""external API id """ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
146 |
|
|
136
ca926774e16c
now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
147 |
job_id = Column("job", String(40), ForeignKey('job.id')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
148 |
"""id of the connected job""" |
| 92 | 149 |
job = relationship("Job", backref=backref('messages')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
150 |
"""connected :class:`Job` object""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
151 |
|
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
152 |
offer_id = Column("offer",String(100), ForeignKey('offer.name')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
153 |
"""sended message over this offer woth ithe offer.name""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
154 |
|
| 92 | 155 |
offer = relationship("Offer", backref=backref('messages')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
156 |
"""connected :class:`Offer` object""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
157 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
158 |
def __init__(self, **kwargs): |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
159 |
Base.__init__(self,**kwargs) |
| 92 | 160 |
|
| 308 | 161 |
class Status(Base): |
162 |
""" Status updates from external""" |
|
163 |
__tablename__ = "status" |
|
164 |
||
165 |
id = Column(Integer, Sequence('status_id_seq'), primary_key=True) |
|
166 |
"""primary key of the message""" |
|
167 |
||
168 |
date = Column(DateTime) |
|
169 |
"""date of status message""" |
|
170 |
||
171 |
recipient = Column(String(100)) |
|
172 |
"""string representation of the recipient""" |
|
173 |
||
174 |
exID = Column(String(100)) |
|
175 |
"""external API id """ |
|
176 |
||
177 |
status = Column(Integer) |
|
178 |
""" status of the message""" |
|
179 |
||
180 |
sender = Column(String(100)) |
|
181 |
""" sender of the message """ |
|
182 |
||
183 |
data = Column(String(2550)) |
|
184 |
""" rest of the data """ |
|
| 92 | 185 |
|
186 |
class Job(Base): |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
187 |
"""A complete Job. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
188 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
189 |
- **status** show the status of the job (``init``, ``started``, ``sending``, ``sended`` or ``error``). |
|
263
52284710c0b4
iro.model: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
190 |
- **info** is used to make it possible to create different billing groups for user. |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
191 |
""" |
| 92 | 192 |
__tablename__ = "job" |
|
136
ca926774e16c
now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
193 |
id = Column(Integer, Sequence('job_id_seq'), primary_key=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
194 |
"""job id""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
195 |
info = Column(String(100)) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
196 |
"""job info, for billing porpuse""" |
| 92 | 197 |
status = Column(Enum("init","started","sending","sended","error")) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
198 |
"""status of a job""" |
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
199 |
user_id = Column("user", String(100), ForeignKey('apiuser.name')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
200 |
"""connected user id""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
201 |
|
| 92 | 202 |
user = relationship("User", backref=backref('jobs')) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
203 |
"""connected :class:`User` object""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
204 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
205 |
def __init__(self, **kwargs): |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
206 |
""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
207 |
.. automethod:: __repr__ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
208 |
""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
209 |
Base.__init__(self,**kwargs) |
| 92 | 210 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
136
diff
changeset
|
211 |
@property |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
136
diff
changeset
|
212 |
def extend(self): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
213 |
"""returns the connected :class:`iro.model.job.ExJob`""" |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
136
diff
changeset
|
214 |
return job.exJobs[self.id] |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
136
diff
changeset
|
215 |
|
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
136
diff
changeset
|
216 |
|
| 135 | 217 |
def __repr__(self): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
218 |
"""string representation of the Job class. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
219 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
220 |
:return: ``<Job('id' ,'info', 'status', 'user_id')>`` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
221 |
""" |
|
153
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
222 |
try: |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
223 |
return "<Job('%s' ,'%s', '%s', '%s')>"%(self.id,self.info, self.status, self.user_id) |
|
153
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
224 |
except DetachedInstanceError: |
|
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
225 |
return Base.__repr__(self) |
| 135 | 226 |
|
|
176
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
227 |
@classmethod |
|
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
228 |
def get(cls, session, id): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
229 |
"""returns a job object from a given id""" |
|
176
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
230 |
return session.query(cls).filter_by(id=id).first() |
|
71f1108758ef
more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents:
153
diff
changeset
|
231 |
|
| 92 | 232 |
class User(Base): |
| 275 | 233 |
"""An user in iro.""" |
| 92 | 234 |
__tablename__ = "apiuser" |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
235 |
|
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
236 |
name = Column(String(100), primary_key=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
237 |
"""Username""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
238 |
|
| 92 | 239 |
ng_kunde = Column(Integer) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
240 |
"""Connection to the netzguerilla userdatabase""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
241 |
|
|
94
4349f10d77a6
updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents:
92
diff
changeset
|
242 |
apikey = Column(String(50),unique=True) |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
243 |
"""apikey only [0-9a-f]""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
244 |
|
| 92 | 245 |
rights = relationship('Userright') |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
246 |
"""all allowed offers to send with.""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
247 |
|
| 92 | 248 |
def __init__(self, name, apikey): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
249 |
"""Constructor of User class. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
250 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
251 |
:param string name: username |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
252 |
:param string apikey: apikey for the user |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
253 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
254 |
.. automethod:: __repr__ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
255 |
""" |
| 92 | 256 |
self.name=name |
257 |
self.apikey=apikey |
|
258 |
||
259 |
def __repr__(self): |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
260 |
"""string representation of the user class. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
261 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
262 |
:return: ``<User('name', 'apikey')>`` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
263 |
""" |
|
153
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
264 |
try: |
|
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
265 |
return "<User('%s','%s')>"%(self.name,self.apikey) |
|
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
266 |
except DetachedInstanceError: |
|
0e50d10c8b6c
handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents:
150
diff
changeset
|
267 |
return Base.__repr__(self) |
|
121
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
268 |
|
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
269 |
def routes(self, typ, default = False): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
270 |
"""returns a query object to get all possible routes for a given typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
271 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
272 |
:param string typ: the typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
273 |
:param boolean default: use only default routes |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
274 |
""" |
|
121
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
275 |
filters=[User.name == self.name, |
|
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
276 |
Offer.typ == typ, |
|
ca63b6776231
putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
277 |
] |
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
278 |
if default: |
|
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
279 |
filters.append(Userright.default != None) |
|
203
b543ab9a9724
tests for Userright.default added
Sandro Knauß <knauss@netzguerilla.net>
parents:
201
diff
changeset
|
280 |
return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)).order_by(Userright.default) |
|
148
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
281 |
|
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
282 |
def providers(self, typ, default = False): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
283 |
"""return a query object for all possible providers for a given typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
284 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
285 |
:param string typ: the typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
286 |
:param boolean default: use only default routes |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
287 |
""" |
|
148
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
288 |
filters=[User.name == self.name, |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
289 |
Offer.typ == typ, |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
290 |
] |
|
201
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
291 |
if default: |
|
843a7bcecbc8
renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents:
176
diff
changeset
|
292 |
filters.append(Userright.default != None) |
|
148
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
293 |
return object_session(self).query(Offer.provider).join(Userright,User).filter(and_(*filters)) |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
294 |
|
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
295 |
def has_right(self, typ, offer_name = None, provider = None, route = None): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
296 |
"""if a user has the right to use a offer, provider e. al. (arguments are and connected). |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
297 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
298 |
:param string typ: the typ |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
299 |
:param string offer_name: offer name |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
300 |
:param string provider: provider name |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
301 |
:param string route: a route name |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
302 |
:return: offer_name or None (not allwoed) |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
303 |
:raises: :class:`sqlalchemy.orm.exc.MultipleResultsFound` if not a single offer match""" |
|
148
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
304 |
filters=[User.name == self.name, |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
305 |
Offer.typ == typ, |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
306 |
] |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
307 |
if offer_name: |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
308 |
filters.append(Userright.offer_name==offer_name) |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
309 |
if provider: |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
310 |
filters.append(Offer.provider==provider) |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
311 |
if route: |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
312 |
filters.append(Offer.route==route) |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
313 |
|
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
314 |
return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)).scalar() |
|
11e0fdc1a58c
fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents:
140
diff
changeset
|
315 |
|
|
125
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
316 |
def job(self, id): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
317 |
"""returns a job object. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
318 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
319 |
:param integer id: id of a Job |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
320 |
:return: :class:`Job` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
321 |
:raises: :exc:`iro.error.JobNotFound` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
219
diff
changeset
|
322 |
""" |
|
136
ca926774e16c
now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
323 |
job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.id==id)).first() |
|
125
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
324 |
if job is None: |
|
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
325 |
raise JobNotFound() |
|
19b3f383c9ce
getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
326 |
return job |