iro/joblist.py
author Sandro Knauß <knauss@netzguerilla.net>
Sat, 10 Mar 2012 19:00:12 +0100
branchdevel
changeset 219 4e9d79c35088
parent 67 d1912509f375
permissions -rw-r--r--
iro.model.schema.__tables__ is available under Base.metadata.sorted_tables
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
61
04dfd43dfecc nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents: 60
diff changeset
    15
import hashlib, 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
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    34
    def __registerJob__(self, job, user):
7
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))
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    38
        job.setId(id, user)
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
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    43
    def newSMS(self, message, recipients, provider="default", user=None):
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)
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    48
        return self.__registerJob__(job,user)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    50
    def newFAX(self,subject, fax,recipients,provider="default",user=None):
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)
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    55
        return self.__registerJob__(job,user)
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    57
    def newMail(self, subject, body, recipients, frm, provider="default",user=None):
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)
67
d1912509f375 adding overview acounting
Sandro Knauß <knauss@netzguerilla.net>
parents: 61
diff changeset
    62
        return self.__registerJob__(job,user) 
7
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:
61
04dfd43dfecc nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents: 60
diff changeset
    69
            m = hashlib.sha1()
7
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):
60
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    73
                if not self.dbconn:                    
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    74
                    self.jobs[m.hexdigest()]=None
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    75
                    break
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    76
                if not self.manager.Acounting(m.hexdigest(),self.dbconn).getStatus():
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    77
                    self.jobs[m.hexdigest()]=None
5ca3aa8d75e1 search for id in database
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    78
                    break
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
        return m.hexdigest()