--- a/iro/user.py Wed Mar 21 19:41:55 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-# -*- 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 logging
-logger=logging.getLogger("iro.user")
-class NotSupportedFeature (Exception):
- def __init__(self,name):
- self.name=name
-
- def __str__(self):
- return ("This is not a supported feature:", self.name)
-
-class NoID(Exception):
- def __init__(self,i):
- self.i=i
-
- def __str__(self):
- return ("No Job with id:", self.i)
-
-
-class User:
- '''class for a xmlrpc user
- '''
- def __init__(self, name, jobqueue):
- self.jobqueue=jobqueue
- self.jobs={}
- self.name=name
- self.features=["mail", "sms", "fax", ]
-
- def status(self,id=None,detailed=False):
- '''Gibt den aktuellen Status eines Auftrages zurück.
-
- Keywords:
- id[hash]: Eine Auftragsnummer
- detailed[boolean]: Details ausgeben
-
- Return:
- jobs[list]: Eine Liste der Aufträge.
- job.name[string]: Angebener Name
- job.status[string]: Status des Auftrages
-
-
- '''
- try:
- jobs={}
- if id==None:
- jobs=self.jobs
- else:
- try:
- jobs={id:self.jobs[id]}
- except:
- logger.error("No Job ID %s",id)
- #raise NoID(id)
- ret={}
- if not jobs:
- return {}
-
- for key in jobs:
- job=jobs[key]
- ret[key]={"name":job.getName(),"status":job.getStatus(detailed)}
-
- return ret
- except:
- logger.exception("Fehler in iro.user.status")
- return {}
-
- def stop(self,id):
- '''Stoppt den angegeben Auftrag.
-
- Keywords:
- id[hash]: Eine Auftragsnummer
-
- Return:
-
- '''
- try:
- job=self.jobs[id]
- job.stop()
- except:
- raise NoID(id)
- job.stop()
-
-
- def startSMS(self, message, recipients, provider="default"):
- '''Versendet eine SMS.
-
- Keywords:
- message[string]: Nachricht
- recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
- provider[string]: Provider über den geschickt werden soll
-
- Return:
- id[hash]: Die ID des Auftrages
-
- '''
- if not "sms" in self.features:
- raise NotSupportedFeature("sms")
- id = self.jobqueue.newSMS(message,recipients,provider,user=self.name)
- self.jobs[id]=self.jobqueue[id]
- return id
-
-
- def startFAX(self, subject, fax, recipients, provider="default"):
- '''Versendet ein FAX.
-
- Keywords:
- subject[string]: der Betreff
- fax[string]: das pdf base64 kodiert
- recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
- provider[string]: Provider über den geschickt werden soll
-
- Return:
- id[hash]: Die ID des Auftrages
-
- '''
- logger.debug("startFAX(%s,%s,%s,%s)"%(subject, fax, recipients, provider))
- if not "fax" in self.features:
- raise NotSupportedFeature("fax")
-
- if type(fax) != list:
- fax=[fax]
- f=[i.data for i in fax]
-
- id = self.jobqueue.newFAX(subject, f,recipients,provider,user=self.name)
- self.jobs[id]=self.jobqueue[id]
- return id
-
- def startMail(self, subject, body, recipients, frm, provider="default"):
- '''Versendet eine Email.
-
- Keywords:
- subject[string]: der Betreff
- body[string]: der Email Body
- recipients[list]: eine Liste von Emailadressen
- frm[string]: Die Absender Emailadresse
- provider[string]: Provider über den geschickt werden soll
-
- Return:
- id[hash]: Die ID des Auftrages
-
- '''
- if not "mail" in self.features:
- raise NotSupportedFeature("mail")
- logger.debug("startMail(%s,%s,%s,%s,%s)"%(subject, body, recipients, frm, provider))
- id = self.jobqueue.newMail(subject, body, recipients, frm, provider,user=self.name)
- self.jobs[id]=self.jobqueue[id]
- return id
-
- def getProvider(self, typ):
- '''Gibt eine Liste aller verfügbaren Provider zurück.
-
- Keywords:
- typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
- Einer der Liste ["sms","fax","mail"]
-
- Return:
- providerlist[list]: Eine Liste aller möglichen Provider
-
- '''
- if not typ in self.features:
- raise NotSupportedFeature(typ)
-
- return self.jobqueue.providerlist.getProviderlist(typ)
-
- def getDefaultProvider(self, typ):
- '''Gibt den Standardprovider zurück.
-
- Keywords:
- typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
- Einer der Liste ["sms","fax","mail"]
-
- Return:
- provider[string]: Der Standardprovider für den angeben Typ
-
-
- '''
- if not typ in self.features:
- raise NotSupportedFeature(typ)
-
- return self.jobqueue.providerlist.getDefault(typ)["name"]
-
-class Admin(User):
- def __init__(self, name, jobqueue):
- User.__init__(self, name, jobqueue)
- self.jobs=jobqueue.jobs