iro/joblist.py
changeset 7 07dd2663ac90
child 10 4a33882f3a49
equal deleted inserted replaced
6:c5672760138b 7:07dd2663ac90
       
     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 import content
       
    15 import md5, os,  time
       
    16 
       
    17 
       
    18 class Joblist:
       
    19     '''
       
    20     Providing an list of jobs; each new job gets a hash id
       
    21     '''
       
    22     def __init__(self,manager, queue,providerlist):
       
    23         self.jobs={}
       
    24         self.manager=manager
       
    25         self.queue=queue
       
    26         self.providerlist=providerlist
       
    27         
       
    28 
       
    29     def __getitem__(self,key):
       
    30         return self.jobs[key]
       
    31 
       
    32     def __registerJob__(self, job):
       
    33         id = self._createID()
       
    34         self.jobs[id]=job
       
    35         self.queue.put(job)
       
    36         return id
       
    37 
       
    38     def newSMS(self,message,recipients):
       
    39         '''
       
    40         creates a new SMS
       
    41         '''
       
    42         job=self.manager.MessageJob(self.providerlist.getProvider("sms"),message, content.SMS(message),recipients)
       
    43         return self.__registerJob__(job)
       
    44 
       
    45     def newFAX(self,subject, fax,recipients):
       
    46         '''
       
    47         creates a new Fax
       
    48         '''
       
    49         job=self.manager.MessageJob(self.providerlist.getProvider("fax"),subject, content.FAX(subject, fax),recipients)
       
    50         return self.__registerJob__(job)
       
    51 
       
    52     def newMail(self,subject, body,recipients):
       
    53         '''
       
    54         creates a new Mail
       
    55         '''
       
    56         job=self.manager.MessageJob(self.providerlist.getProvider("mail"),subject, content.Mail(subject, body),recipients)
       
    57         return self.__registerJob__(job) 
       
    58 
       
    59     def _createID(self):
       
    60         '''
       
    61         creats a random hash id
       
    62         '''
       
    63         while True:
       
    64             m = md5.new()
       
    65             m.update(str(time.time()))
       
    66             m.update(os.urandom(10))
       
    67             if not self.jobs.has_key(m.hexdigest):
       
    68                 self.jobs[m.hexdigest()]=None
       
    69                 break
       
    70         return m.hexdigest()