19 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
19 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
20 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
20 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
21 |
21 |
22 # -*- coding: utf-8 -*- |
22 # -*- coding: utf-8 -*- |
23 from ..model.decorators import vUser, vRoute, dbdefer, vTyp |
23 from ..model.decorators import vUser, vRoute, dbdefer, vTyp |
|
24 from ..model.job import exJobs |
24 from ..model.message import SMS, Fax, Mail |
25 from ..model.message import SMS, Fax, Mail |
25 |
26 |
26 from ..validate import validate, vBool, vTel, vEmail, vInteger |
27 from ..validate import validate, vBool, vTel, vEmail, vInteger |
27 |
28 |
28 from .task import createJob |
29 from .task import createJob |
43 |
44 |
44 :return dict: |
45 :return dict: |
45 - `key` -- is the job id |
46 - `key` -- is the job id |
46 - [`key`][**'status'**] -- status of the job |
47 - [`key`][**'status'**] -- status of the job |
47 |
48 |
48 .. warning:: detailed is not used yet. |
|
49 |
|
50 >>> status(APIKEY) |
49 >>> status(APIKEY) |
51 {"1": {"status":"sended"}, |
50 {"1": {"status":"sended"}, |
52 "2": {"status":"error"}, |
51 "2": {"status":"error"}, |
53 "10": {"status":"sending"}} |
52 "10": {"status":"sending"}} |
54 |
53 |
55 >>> status(APIKEY,10) |
54 >>> status(APIKEY,10) |
56 {"10": {"status":"sending"}} |
55 {"10": {"status":"sending"}} |
|
56 |
|
57 >>> status(APIKEY,10,True) |
|
58 {"10": {"status":"sending", |
|
59 "tasks": {"recipient1": "sended", "recipient2": "waiting" }}} |
57 ''' |
60 ''' |
58 user = session.merge(user) |
61 user = session.merge(user) |
59 ret={} |
62 ret={} |
60 if not id: |
63 if not id: |
61 for job in user.jobs: |
64 for job in user.jobs: |
62 ret[str(job.id)]={"status":job.status} |
65 ret[str(job.id)]={"status":job.status} |
63 else: |
66 else: |
64 ret[str(id)]={"status":user.job(id).status} |
67 ret[str(id)]={"status":user.job(id).status} |
65 |
68 |
|
69 if detailed: |
|
70 def _status(task): |
|
71 if task.error: |
|
72 return "Error: " + task.status |
|
73 elif task.status is None: |
|
74 return "waiting" |
|
75 else: |
|
76 return "sended" |
|
77 |
|
78 ret[str(id)]["tasks"] = {task.recipient: _status(task) for task in exJobs[id].tasks.values()} |
|
79 |
66 return ret |
80 return ret |
67 |
81 |
68 @validate(kwd="recipients",func=vTel) |
82 @validate(kwd="recipients",func=vTel) |
69 @vUser |
83 @vUser |
70 @validate(kwd="route", func=vRoute, typ="sms") |
84 @validate(kwd="route", func=vRoute, typ="sms") |