diff -r 4cf5e664c847 -r 830204e316ca iro/view/xmlrpc_old.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iro/view/xmlrpc_old.py Sat Mar 24 00:02:42 2012 +0100 @@ -0,0 +1,194 @@ +# -*- 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