iro/joblist.py
changeset 7 07dd2663ac90
child 10 4a33882f3a49
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/joblist.py	Wed Oct 28 02:35:01 2009 +0100
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
+
+#This program is free software; you can redistribute it and/or modify it under the terms
+#of the GNU General Public License as published by the Free Software Foundation;
+#either version 3 of the License, or any later version.
+#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#See the GNU General Public License for more details.
+
+#You should have received a copy of the GNU General Public License
+#along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+import content
+import md5, os,  time
+
+
+class Joblist:
+    '''
+    Providing an list of jobs; each new job gets a hash id
+    '''
+    def __init__(self,manager, queue,providerlist):
+        self.jobs={}
+        self.manager=manager
+        self.queue=queue
+        self.providerlist=providerlist
+        
+
+    def __getitem__(self,key):
+        return self.jobs[key]
+
+    def __registerJob__(self, job):
+        id = self._createID()
+        self.jobs[id]=job
+        self.queue.put(job)
+        return id
+
+    def newSMS(self,message,recipients):
+        '''
+        creates a new SMS
+        '''
+        job=self.manager.MessageJob(self.providerlist.getProvider("sms"),message, content.SMS(message),recipients)
+        return self.__registerJob__(job)
+
+    def newFAX(self,subject, fax,recipients):
+        '''
+        creates a new Fax
+        '''
+        job=self.manager.MessageJob(self.providerlist.getProvider("fax"),subject, content.FAX(subject, fax),recipients)
+        return self.__registerJob__(job)
+
+    def newMail(self,subject, body,recipients):
+        '''
+        creates a new Mail
+        '''
+        job=self.manager.MessageJob(self.providerlist.getProvider("mail"),subject, content.Mail(subject, body),recipients)
+        return self.__registerJob__(job) 
+
+    def _createID(self):
+        '''
+        creats a random hash id
+        '''
+        while True:
+            m = md5.new()
+            m.update(str(time.time()))
+            m.update(os.urandom(10))
+            if not self.jobs.has_key(m.hexdigest):
+                self.jobs[m.hexdigest()]=None
+                break
+        return m.hexdigest()