12 @validate(kwd="detailed", func=vBool, need=False) |
12 @validate(kwd="detailed", func=vBool, need=False) |
13 @validate(kwd="id", func=vInteger, minv=0, need=False, none_allowed=True) |
13 @validate(kwd="id", func=vInteger, minv=0, need=False, none_allowed=True) |
14 @vUser |
14 @vUser |
15 @dbdefer |
15 @dbdefer |
16 def status(self, session, user, id=None, detailed=False): |
16 def status(self, session, user, id=None, detailed=False): |
17 '''Gibt den aktuellen Status eines Auftrages oder Mehreren zurück. |
17 '''Returns the status of one or more jobs. |
18 |
18 |
19 :param string apikey: der API Key |
19 :param string user: apikey of a user |
20 :param hash id: Eine Auftragsnummer |
20 :param integer id: one job id |
21 :param `boolean` detailed: Details ausgeben |
21 :param `boolean` detailed: return more details about the status |
22 |
22 |
23 :return dict: |
23 :return dict: |
24 - `key` ist die Auftragsnummer |
24 - `key` -- is the job id |
25 - [`key`][**'status'**] -- Status des Auftrages |
25 - [`key`][**'status'**] -- status of the job |
26 |
26 |
27 .. warning:: detailed is not used yet. |
27 .. warning:: detailed is not used yet. |
28 |
28 |
29 >>> status(APIKEY) |
29 >>> status(APIKEY) |
30 {"1": {"status":"sended"}, |
30 {"1": {"status":"sended"}, |
31 "2": {"status":"error"}, |
31 "2": {"status":"error"}, |
32 "10": {"status":"sending"}} |
32 "10": {"status":"sending"}} |
33 |
33 |
34 >>> status(APIKEY,"10") |
34 >>> status(APIKEY,10) |
35 {"10": {"status":"sending"}} |
35 {"10": {"status":"sending"}} |
36 ''' |
36 ''' |
37 user = session.merge(user) |
37 user = session.merge(user) |
38 ret={} |
38 ret={} |
39 if not id: |
39 if not id: |
46 |
46 |
47 @validate(kwd="recipients",func=vTel) |
47 @validate(kwd="recipients",func=vTel) |
48 @vUser |
48 @vUser |
49 @validate(kwd="route", func=vRoute, typ="sms") |
49 @validate(kwd="route", func=vRoute, typ="sms") |
50 def sms(self, user, message, recipients, route="default", info=""): |
50 def sms(self, user, message, recipients, route="default", info=""): |
51 '''Versendet eine SMS. |
51 '''Send a sms. |
52 |
52 |
53 :param string apikey: Der API Key |
53 :param string user: apikey of a user |
54 :param string message: Nachricht |
54 :param string message: message |
55 :param list recipients: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123) |
55 :param list recipients: a list of telefon numbers (use ITU-T E.123) |
56 :param route: Route über den geschickt werden soll, |
56 :param route: route to use to send, or a list of routes as fallback |
57 oder eine Liste von Routen, um Fallbacks anzugeben |
|
58 :type route: string|list |
57 :type route: string|list |
59 :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können. |
58 :param string info: a name, to combine different jobs to one billing group |
60 |
59 |
61 :return hash: Die ID des Auftrages |
60 :return integer: the job id |
62 |
|
63 ''' |
61 ''' |
64 d = createJob(user, recipients, SMS(message), route, info) |
62 d = createJob(user, recipients, SMS(message), route, info) |
65 def ret(job): |
63 def ret(job): |
66 return job.dbjob |
64 return job.dbjob |
67 d.addCallback(ret) |
65 d.addCallback(ret) |
69 |
67 |
70 @validate(kwd="recipients",func=vTel) |
68 @validate(kwd="recipients",func=vTel) |
71 @vUser |
69 @vUser |
72 @validate(kwd="route",func=vRoute, typ="fax") |
70 @validate(kwd="route",func=vRoute, typ="fax") |
73 def fax(self, user, subject, fax, recipients, route="default", info=""): |
71 def fax(self, user, subject, fax, recipients, route="default", info=""): |
74 '''Versendet ein FAX. |
72 '''Send a fax. |
75 |
73 |
76 :param string apikey: Der API Key |
74 :param string user: apikey of a user |
77 :param string subject: Der Betreff |
75 :param string subject: subject |
78 :param string fax: Der base64 kodierte content |
76 :param string fax: content (base64 encoded) |
79 :param list recipients: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123) |
77 :param list recipients: a list of telefon numbers (use ITU-T E.123) |
80 :param route: Route über den geschickt werden soll, |
78 :param route: route to use to send, or a list of routes as fallback |
81 oder eine Liste von Routen, um Fallbacks anzugeben |
|
82 :type route: string|list |
79 :type route: string|list |
83 :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können. |
80 :param string info: a name, to combine different jobs to one billing group |
84 |
81 |
85 :return hash: Die ID des Auftrages |
82 :return integer: the job id |
86 ''' |
83 ''' |
87 d = createJob(user, recipients, Fax(subject, fax), route, info) |
84 d = createJob(user, recipients, Fax(subject, fax), route, info) |
88 def ret(job): |
85 def ret(job): |
89 return job.dbjob |
86 return job.dbjob |
90 d.addCallback(ret) |
87 d.addCallback(ret) |
93 @validate(kwd="recipients",func=vEmail, allowString=False) |
90 @validate(kwd="recipients",func=vEmail, allowString=False) |
94 @validate(kwd="frm",func=vEmail, need=False, allowList=False) |
91 @validate(kwd="frm",func=vEmail, need=False, allowList=False) |
95 @vUser |
92 @vUser |
96 @validate(kwd="route",func=vRoute, typ="mail") |
93 @validate(kwd="route",func=vRoute, typ="mail") |
97 def mail(self, user, subject, body, recipients, frm=None, route="default", info=""): |
94 def mail(self, user, subject, body, recipients, frm=None, route="default", info=""): |
98 '''Versendet eine Email. |
95 '''Send a mail. |
99 |
96 |
100 :param string apikey: Der API Key |
97 :param string user: apikey of a user |
101 :param string subject: Der Betreff |
98 :param string subject: subject |
102 :param string body: Der Email Body |
99 :param string body: mail body |
103 :param list recipients: Eine Liste von Emailadressen |
100 :param list recipients: a list of email addresses |
104 :param string frm: Die Absender Emailadresse |
101 :param route: route to use to send, or a list of routes as fallback |
105 :param route: Route über den geschickt werden soll, |
|
106 oder eine Liste von Routen, um Fallbacks anzugeben |
|
107 :type route: string|list |
102 :type route: string|list |
108 :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können. |
103 :param string info: a name, to combine different jobs to one billing group |
109 |
104 |
110 :return hash: Die ID des Auftrages |
105 :return integer: the job id |
111 ''' |
106 ''' |
112 |
|
113 d = createJob(user, recipients, Mail(subject, body, frm), route, info) |
107 d = createJob(user, recipients, Mail(subject, body, frm), route, info) |
114 def ret(job): |
108 def ret(job): |
115 return job.dbjob |
109 return job.dbjob |
116 d.addCallback(ret) |
110 d.addCallback(ret) |
117 return d |
111 return d |
118 |
112 |
119 @validate(kwd="typ", func=vTyp) |
113 @validate(kwd="typ", func=vTyp) |
120 @vUser |
114 @vUser |
121 @dbdefer |
115 @dbdefer |
122 def routes(self, session, user, typ): |
116 def routes(self, session, user, typ): |
123 '''Gibt eine Liste aller verfügbaren Provider zurück. |
117 '''Returns a list of all possible offernames. |
124 |
118 |
125 :param string apikey: Der API Key |
119 :param string user: apikey of a user |
126 :param string typ: Der Typ zu dem die Providerloste ausgeben werden soll |
120 :param string typ: a typ of message -- one of in this list ["sms","fax","mail"] |
127 Einer der Liste ["sms","fax","mail"] |
121 |
128 |
122 :return list: a list of all possible offer names for a typ |
129 :return list: Eine Liste aller möglichen Provider |
|
130 ''' |
123 ''' |
131 user = session.merge(user) |
124 user = session.merge(user) |
132 offers = user.routes(typ) |
125 offers = user.routes(typ) |
133 return [u[0] for u in offers] |
126 return [u[0] for u in offers] |
134 |
127 |
135 @validate(kwd="typ", func=vTyp) |
128 @validate(kwd="typ", func=vTyp) |
136 @vUser |
129 @vUser |
137 @dbdefer |
130 @dbdefer |
138 def defaultRoute(self, session, user, typ): |
131 def defaultRoute(self, session, user, typ): |
139 '''Gibt den Standardprovider zurück. |
132 '''Returns all default offernames. |
140 |
133 |
141 :param string apikey: Der API Key |
134 :param string user: apikey of a user |
142 :param string typ: Der Typ zu dem die Providerliste ausgeben werden soll |
135 |
143 Einer der Liste ["sms","fax","mail"] |
136 :return list: a list of all possible offer names for a typ |
144 |
|
145 :return string: Der Standardprovider für den angeben Typ |
|
146 ''' |
137 ''' |
147 user = session.merge(user) |
138 user = session.merge(user) |
148 offers = user.routes(typ, default=True) |
139 offers = user.routes(typ, default=True) |
149 return [u[0] for u in offers] |
140 return [u[0] for u in offers] |
150 |
141 |
151 @vUser |
142 @vUser |
152 @dbdefer |
143 @dbdefer |
153 def bill(self, session, user): |
144 def bill(self, session, user): |
154 '''Gibt eine Rechnung zurück über die noch nicht abgerechneten Nachrichten und des Preises. |
145 '''Returns the bill, of not paid messages. |
155 |
146 |
156 :param string apikey: Der API Key |
147 :param string user: apikey of a user |
157 |
148 |
158 :return dict: |
149 :return dict: |
159 - `route` -- Entspricht einer Route; **"total"** für die Gesammtübersicht |
150 - `route` -- one offer name ; **"total"** complete sum |
160 - [`route`][`info`][**anz**] -- Anzahl der verschickten Nachrichten pro "Infoklasse" |
151 - [`route`][`info`][**anz**] -- Number of sended messages in one billing group |
161 - [`route`][`info`][**price**] -- Preis pro "Infoklasse" |
152 - [`route`][`info`][**price**] -- Price for one billing group |
162 - [`route` | **total**][**anz**] -- Anzahl der verschickten Nachrichten pro Route |
153 - [`route` | **total**][**anz**] -- Number of sended messages for one offer |
163 - [`route` | **total**][**price**] -- Preis für eine Route |
154 - [`route` | **total**][**price**] -- Price for one offer |
164 |
155 |
165 >>> bill(APIKEY) |
156 >>> bill(APIKEY) |
166 {"route1": {"info1":{"anz":1,"price":2.00}, |
157 {"route1": {"info1":{"anz":1,"price":2.00}, |
167 "info2":{"anz":2,"price":5.00}, |
158 "info2":{"anz":2,"price":5.00}, |
168 "anz":3,"price":7.00}, |
159 "anz":3,"price":7.00}, |
189 ret['total']['price'] = float(ret['total']['price']) |
180 ret['total']['price'] = float(ret['total']['price']) |
190 return ret |
181 return ret |
191 |
182 |
192 @validate(kwd="recipients",func=vTel) |
183 @validate(kwd="recipients",func=vTel) |
193 def telnumber(self,recipients): |
184 def telnumber(self,recipients): |
194 '''Gibt True zurück, falls alle übergebene Telefonnummern valide sind. |
185 '''Return True, if all telnumbers a vaild. |
195 |
186 |
196 :param list recipients: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123) |
187 :param list recipients: a list of telnumbers (use ITU-T E.123) |
197 |
188 |
198 :return: True -- alle übergebene Nummern sind valide |
189 :return: True -- all numbers are valid |
199 ''' |
190 ''' |
200 return True |
191 return True |
201 |
192 |
202 @validate(kwd="recipients",func=vEmail) |
193 @validate(kwd="recipients",func=vEmail) |
203 def email(self,recipients): |
194 def email(self,recipients): |
204 '''Gibt True zurück, falls alle übergebene Emailadressen valide sind. |
195 '''Return True, if all mailadresses a valid. |
205 |
196 |
206 :param list recipients: Eine Liste von Emailadressen |
197 :param list recipients: a list of mailadresses |
207 |
198 |
208 :return: True -- alle übergebene Nummern sind valide |
199 :return: True -- all addresses are valid |
209 ''' |
200 ''' |
210 return True |
201 return True |