diff -r 4cf5e664c847 -r 3406d3bf05d4 iro/user.py --- 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ß - -#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 . -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