iro/joblist.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 04 Nov 2010 21:58:59 +0100
changeset 58 fb161058bcab
parent 57 97ef6ca145e6
child 60 5ca3aa8d75e1
permissions -rw-r--r--
mail muss nun mit einer mailadresse aufgerufen werden
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
13
2da41f4598e1 content nun beim anbieter
Sandro Knauß <knauss@netzguerilla.net>
parents: 11
diff changeset
    14
from anbieter import content
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
import md5, os,  time
55
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    16
import logging
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    17
logger=logging.getLogger("iro.joblist");
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
class Joblist:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
    '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
    Providing an list of jobs; each new job gets a hash id
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
    '''
55
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    23
    def __init__(self,manager, queue,providerlist,dbconn=None):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
        self.jobs={}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
        self.manager=manager
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
        self.queue=queue
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
        self.providerlist=providerlist
55
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    28
        self.dbconn=dbconn
7
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
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
    def __getitem__(self,key):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
        return self.jobs[key]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
    def __registerJob__(self, job):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
        id = self._createID()
55
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    36
        if self.dbconn:
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    37
            job.setAcounting(self.manager.Acounting(id,self.dbconn))
ae3669fef3b0 Acounting into mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 13
diff changeset
    38
        job.setId(id)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
        self.jobs[id]=job
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
        self.queue.put(job)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
        return id
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
57
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 55
diff changeset
    43
    def newSMS(self, message, recipients, provider="default"):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
        '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
        creates a new SMS
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
        '''
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 10
diff changeset
    47
        job=self.manager.SMSJob(self.providerlist, provider,message, content.SMS(message),recipients)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
        return self.__registerJob__(job)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
10
4a33882f3a49 userinterface nimmt nun auch providerwünsche entgegen
Sandro Knauß <knauss@netzguerilla.net>
parents: 7
diff changeset
    50
    def newFAX(self,subject, fax,recipients,provider="default"):
7
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
        creates a new Fax
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
        '''
57
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 55
diff changeset
    54
        job=self.manager.FaxJob(self.providerlist, provider,subject, content.FAX(subject,'' ,fax),recipients)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
        return self.__registerJob__(job)
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
    57
    def newMail(self, subject, body, recipients, frm, provider="default"):
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
        '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
        creates a new Mail
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
        '''
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
    61
        job=self.manager.MailJob(self.providerlist, provider,subject, content.Mail(subject, body, frm),recipients)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
        return self.__registerJob__(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
    def _createID(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        creats a random hash id
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
        '''
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        while True:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
            m = md5.new()
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
            m.update(str(time.time()))
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
            m.update(os.urandom(10))
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
            if not self.jobs.has_key(m.hexdigest):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
                self.jobs[m.hexdigest()]=None
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
                break
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
        return m.hexdigest()