1 # -*- coding: utf-8 -*- |
|
2 #Copyright (C) 2009 Sandro Knauß <bugs@sandroknauss.de> |
|
3 |
|
4 #This program is free software; you can redistribute it and/or modify it under the terms |
|
5 #of the GNU General Public License as published by the Free Software Foundation; |
|
6 #either version 3 of the License, or any later version. |
|
7 #This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
|
8 #without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
9 #See the GNU General Public License for more details. |
|
10 |
|
11 #You should have received a copy of the GNU General Public License |
|
12 #along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
13 |
|
14 class Job(object): |
|
15 ''' |
|
16 Basic class for all jobs |
|
17 ''' |
|
18 def __init__(self,providerlist,provider, name): |
|
19 self.providerlist=providerlist |
|
20 self.provider=provider |
|
21 self.name=name |
|
22 self.status = "init" |
|
23 self.dStatus={"good":[], "failed":[]} |
|
24 self.id=None |
|
25 self.acounting=None |
|
26 |
|
27 def setAcounting(self,ac): |
|
28 self.acounting=ac |
|
29 |
|
30 def setId(self, id): |
|
31 self.id=id |
|
32 if self.acounting: |
|
33 self.acounting.setId(id) |
|
34 |
|
35 def start(self,indifier=None): |
|
36 self.indifier=indifier |
|
37 self.status = "started" |
|
38 |
|
39 def stop(self): |
|
40 self.status = "stopped" |
|
41 |
|
42 def setLog(self,log): |
|
43 self.log=log |
|
44 |
|
45 def getStatus(self,detailed=False): |
|
46 if detailed and self.status == "started" or self.status == "sended": |
|
47 return self.status, self.dStatus |
|
48 return self.status,{} |
|
49 |
|
50 def setStatus(self,status): |
|
51 self.status=status |
|
52 |
|
53 def getName(self): |
|
54 return self.name |
|
55 |
|
56 def getProvider(self): |
|
57 return None |
|
58 |
|
59 def addGood(self, good): |
|
60 if self.acounting: |
|
61 self.acounting.addGood(good) |
|
62 if type(good) == list: |
|
63 self.dStatus['good']=self.dStatus['good']+good |
|
64 else: |
|
65 self.dStatus['good'].append(good) |
|
66 |
|
67 def addFailed(self, failed): |
|
68 if self.acounting: |
|
69 self.acounting.addFailed(failed) |
|
70 if type(failed) == list: |
|
71 self.dStatus['failed']=self.dStatus['failed']+failed |
|
72 else: |
|
73 self.dStatus['failed'].append(failed) |
|
74 |
|
75 class MessageJob(Job): |
|
76 ''' |
|
77 A specialized class for smsjobs |
|
78 ''' |
|
79 def __init__(self,providerlist,provider, name, message,recipients): |
|
80 self.message=message |
|
81 self.recipients=recipients |
|
82 Job.__init__(self,providerlist,provider, name) |
|
83 |
|
84 def stop(self): |
|
85 pass |
|
86 |
|
87 def start(self, id=None): |
|
88 Job.start(self,id) |
|
89 self.getProvider().setJob(self) |
|
90 self.message.sendto(self.getProvider(), self.recipients) |
|
91 self.status="sended" |
|
92 |
|
93 def getMessage(self): |
|
94 return self.message |
|
95 |
|
96 def getRecipients(self): |
|
97 return self.recipients |
|
98 |
|
99 |
|
100 class SMSJob(MessageJob): |
|
101 def __init__(self,providerlist,provider, name, message,recipients): |
|
102 MessageJob.__init__(self,providerlist,provider, name, message,recipients) |
|
103 |
|
104 def getProvider(self): |
|
105 return self.providerlist.getProvider("sms", self.provider) |
|
106 |
|
107 class FAXJob(MessageJob): |
|
108 def __init__(self,providerlist,provider, name, message,recipients): |
|
109 MessageJob.__init__(self,providerlist,provider, name, message,recipients) |
|
110 |
|
111 def getProvider(self): |
|
112 return self.providerlist.getProvider("fax", self.provider) |
|
113 |
|
114 class MailJob(MessageJob): |
|
115 def __init__(self,providerlist,provider, name, message,recipients): |
|
116 MessageJob.__init__(self,providerlist,provider, name, message,recipients) |
|
117 |
|
118 def getProvider(self): |
|
119 return self.providerlist.getProvider("mail", self.provider) |
|
120 |
|
121 |
|