# HG changeset patch # User Sandro Knauß # Date 1332543762 -3600 # Node ID 830204e316cad5327d0f462287e41eb5fe08c0d3 # Parent 4cf5e664c847d42d5a5e2007c3b7e95405bf38d0 moving old xmlrpc interface (iro.user) -> iro.view.xmlrpc_old diff -r 4cf5e664c847 -r 830204e316ca 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 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