iro/job.py
changeset 302 3f4bdea2abbf
parent 90 eb04ac3a8327
parent 301 d5ebbcccc41b
child 303 9708742ff89c
equal deleted inserted replaced
90:eb04ac3a8327 302:3f4bdea2abbf
     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