iro/job.py
author Sandro Knauß <knauss@netzguerilla.net>
Tue, 24 Nov 2009 02:02:41 +0100
changeset 20 0d7ffb9b2c7f
parent 19 fcf8489f1c2f
child 23 0180b538ed74
permissions -rw-r--r--
logging started
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
#either version 3 of the License, or any later version.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
#See the GNU General Public License for more details.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
#You should have received a copy of the GNU General Public License
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
class Job(object):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
    '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
    Basic class for all jobs
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
    '''   
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    19
    def __init__(self,providerlist,provider, name):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    20
        self.providerlist=providerlist
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
        self.provider=provider
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        self.name=name
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        self.status = "init"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
        self.dStatus={"good":[], "failed":[]}
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    25
        self.id=None
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
    def start(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
        self.status = "started"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
    def stop(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
        self.status = "stopped"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
    def getStatus(self,detailed):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
        if detailed and self.status == "started" or self.status == "sended":
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
            return self.status, self.dStatus
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
        return self.status, {}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    def getName(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
        return self.name
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
    def getProvider(self):
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    42
        return None
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
    def addGood(self, good):
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    45
        import logging
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    46
        logging.debug('Job(%d)-send to %s'%(self.id, str(good)))
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
        if type(good) == list:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
            self.dStatus['good']=self.dStatus['good']+good
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
        else:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
            self.dStatus['good'].append(good)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
    def addFailed(self, failed):
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    53
        import logging
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    54
        logging.debug('Job(%d)-faild to send to %s'%(self.id, str(failed)))
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
        if type(failed) == list:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
            self.dStatus['failed']=self.dStatus['failed']+failed
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
        else:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
            self.dStatus['failed'].append(failed)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
class MessageJob(Job):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
    '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
    A specialized class for smsjobs
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
    '''
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    64
    def __init__(self,providerlist,provider, name, message,recipients):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        self.message=message
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        self.recipients=recipients
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    67
        Job.__init__(self,providerlist,provider,  name)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
    def stop(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
        pass
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    71
    
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    72
    def start(self, id=None):
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    73
        self.id=id
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
        Job.start(self)
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    75
        self.getProvider().setJob(self)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    76
        self.message.sendto(self.getProvider(), self.recipients)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    77
        self.status="sended"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
    def getMessage(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
        return self.message
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
    def getRecipients(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
        return self.recipients
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    86
class SMSJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    87
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    88
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    89
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    90
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    91
        return self.providerlist.getProvider("sms", self.provider)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    92
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    93
class FAXJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    94
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    95
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    96
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    97
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    98
        return self.providerlist.getProvider("fax", self.provider)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    99
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   100
class MailJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   101
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   102
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   103
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   104
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   105
        return self.providerlist.getProvider("mail", self.provider)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   106
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   107