iro/job.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 08 Oct 2010 02:07:01 +0200
changeset 49 b1d0f7ffbb64
parent 48 32763e344d3b
child 55 ae3669fef3b0
permissions -rw-r--r--
testSMSJob
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
class Job(object):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
    '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
    Basic class for all jobs
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
    '''   
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    18
    def __init__(self,providerlist,provider, name):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    19
        self.providerlist=providerlist
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
        self.provider=provider
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
        self.name=name
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        self.status = "init"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        self.dStatus={"good":[], "failed":[]}
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    24
        self.id=None
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
48
32763e344d3b job nun mit start(id), status() gibt list zurück, tests angepasst
Sandro Knauß <knauss@netzguerilla.net>
parents: 46
diff changeset
    26
    def start(self,id=None):
32763e344d3b job nun mit start(id), status() gibt list zurück, tests angepasst
Sandro Knauß <knauss@netzguerilla.net>
parents: 46
diff changeset
    27
        self.id=id
7
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"
49
b1d0f7ffbb64 testSMSJob
Sandro Knauß <knauss@netzguerilla.net>
parents: 48
diff changeset
    32
b1d0f7ffbb64 testSMSJob
Sandro Knauß <knauss@netzguerilla.net>
parents: 48
diff changeset
    33
    def setLog(self,log):
b1d0f7ffbb64 testSMSJob
Sandro Knauß <knauss@netzguerilla.net>
parents: 48
diff changeset
    34
        self.log=log
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
        
42
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 23
diff changeset
    36
    def getStatus(self,detailed=False):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
        if detailed and self.status == "started" or self.status == "sended":
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
            return self.status, self.dStatus
46
cb5a932423cd status doch array zurück, da php damit besser klar kommt
Sandro Knauß <knauss@netzguerilla.net>
parents: 42
diff changeset
    39
        return self.status,{}
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
    
42
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 23
diff changeset
    41
    def setStatus(self,status):
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 23
diff changeset
    42
        self.status=status
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 23
diff changeset
    43
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
    def getName(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
        return self.name
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
    def getProvider(self):
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    48
        return None
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
    def addGood(self, good):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
        if type(good) == list:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
            self.dStatus['good']=self.dStatus['good']+good
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
        else:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
            self.dStatus['good'].append(good)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
    def addFailed(self, failed):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
        if type(failed) == list:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
            self.dStatus['failed']=self.dStatus['failed']+failed
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
        else:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
            self.dStatus['failed'].append(failed)
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
class MessageJob(Job):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
    '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
    A specialized class for smsjobs
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
    '''
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    66
    def __init__(self,providerlist,provider, name, message,recipients):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
        self.message=message
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        self.recipients=recipients
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    69
        Job.__init__(self,providerlist,provider,  name)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
    def stop(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
        pass
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    73
    
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    74
    def start(self, id=None):
48
32763e344d3b job nun mit start(id), status() gibt list zurück, tests angepasst
Sandro Knauß <knauss@netzguerilla.net>
parents: 46
diff changeset
    75
        Job.start(self,id)
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    76
        self.getProvider().setJob(self)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    77
        self.message.sendto(self.getProvider(), self.recipients)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
        self.status="sended"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
    def getMessage(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
        return self.message
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
    def getRecipients(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
        return self.recipients
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    87
class SMSJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    88
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    89
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    90
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    91
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    92
        return self.providerlist.getProvider("sms", self.provider)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    94
class FAXJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    95
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    96
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    97
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    98
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    99
        return self.providerlist.getProvider("fax", self.provider)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   100
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   101
class MailJob(MessageJob):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   102
    def __init__(self,providerlist,provider, name, message,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   103
        MessageJob.__init__(self,providerlist,provider, name, message,recipients)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   104
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   105
    def getProvider(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   106
        return self.providerlist.getProvider("mail", self.provider)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   107
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
   108