--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/view/xmlrpc_old.py Sat Mar 24 00:07:40 2012 +0100
@@ -0,0 +1,194 @@
+# -*- 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