--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/.eric4project/iro.e4q Wed Oct 28 02:35:01 2009 +0100
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE UserProject SYSTEM "UserProject-4.0.dtd">
+<!-- eric4 user project file for project iro -->
+<!-- Saved: 2009-10-23, 01:39:27 -->
+<!-- Copyright (C) 2009 Sandro Knauß, bugs@sandroknauss.de -->
+<UserProject version="4.0">
+</UserProject>
\ No newline at end of file
--- a/iro/.eric4project/iro.e4t Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/.eric4project/iro.e4t Wed Oct 28 02:35:01 2009 +0100
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Tasks SYSTEM "Tasks-4.2.dtd">
<!-- eric4 tasks file for project iro -->
-<!-- Saved: 2009-10-16, 01:34:46 -->
+<!-- Saved: 2009-10-23, 01:39:27 -->
<Tasks version="4.2">
</Tasks>
\ No newline at end of file
--- a/iro/iro.api Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/iro.api Wed Oct 28 02:35:01 2009 +0100
@@ -14,7 +14,6 @@
iro.anbieter.geonet.geonet.max_recipients?7
iro.anbieter.geonet.geonet.section?7
iro.anbieter.geonet.geonet.sendFAX?4(fax, recipients)
-iro.anbieter.geonet.geonet.sendMail?4(mail, recipients)
iro.anbieter.geonet.geonet.sendSMS?4(sms, recipients)
iro.anbieter.geonet.geonet?1()
iro.anbieter.sipgate.sipgate.BalanceGet?4()
@@ -31,11 +30,21 @@
iro.anbieter.sipgate.sipgate.updateStatus?4(arranged=None, failed=None)
iro.anbieter.sipgate.sipgate.url?7
iro.anbieter.sipgate.sipgate?1(user="", password="")
+iro.anbieter.smstrade.InternetConnectionError.__str__?6()
+iro.anbieter.smstrade.InternetConnectionError?1(url)
+iro.anbieter.smstrade.__send?6(self, key, route, to, message, from_=None, timestamp=None)
+iro.anbieter.smstrade.sendSMS?4(self, sms, recipients)
+iro.anbieter.smstrade.smstrade.read_basic_config?4(filename)
+iro.anbieter.smstrade.smstrade.section?7
+iro.anbieter.smstrade.smstrade.url?7
+iro.anbieter.smstrade.smstrade?1()
+iro.anbieter.smstrade.updateStatus?4(self, arranged=None, failed=None)
iro.anbieter.smtp.SMTP.prepareSMTP?4()
-iro.anbieter.smtp.SMTP.read_basic_config?4()
+iro.anbieter.smtp.SMTP.read_basic_config?4(config_filename=None)
iro.anbieter.smtp.SMTP.sendMail?4(mail, recipients)
iro.anbieter.smtp.SMTP.shutdownSMTP?4()
-iro.anbieter.smtp.SMTP?1(config_filename, section)
+iro.anbieter.smtp.SMTP.updateStatus?4(arranged=None, failed=None)
+iro.anbieter.smtp.SMTP?1(config_filename=None, section="smtp")
iro.anbieter.smtp.anbieter.default_conf?7
iro.anbieter.telnumber.NotATelNumber.__str__?6()
iro.anbieter.telnumber.NotATelNumber?1(number)
@@ -55,61 +64,73 @@
iro.anbieter.test.anbieter.default_conf?7
iro.content.FAX.sendto?4(anbieter, recipients)
iro.content.FAX?1(header, cont, attachments)
+iro.content.Mail.as_string?4()
+iro.content.Mail.sendto?4(anbieter, recipients)
+iro.content.Mail?1(subject, body)
iro.content.SMS.sendto?4(anbieter, recipients)
iro.content.SMS?1(cont)
iro.content.content.sendto?4(anbieter, recipients)
iro.content.content?1(content)
-iro.iro.Job.addFailed?4(failed)
-iro.iro.Job.addGood?4(good)
-iro.iro.Job.getName?4()
-iro.iro.Job.getProvider?4()
-iro.iro.Job.getStatus?4(detailed)
-iro.iro.Job.start?4()
-iro.iro.Job.stop?4()
-iro.iro.Job?1(provider, name)
-iro.iro.Jobs.__getitem__?6(key)
-iro.iro.Jobs.__registerJob__?6(job)
-iro.iro.Jobs._createID?5()
-iro.iro.Jobs.newFAX?4(subject, fax, recipients)
-iro.iro.Jobs.newMail?4(subject, body, recipients)
-iro.iro.Jobs.newSMS?4(message, recipients)
-iro.iro.Jobs?1(manager, queue, provider)
-iro.iro.MessageJob.getMessage?4()
-iro.iro.MessageJob.getRecipients?4()
-iro.iro.MessageJob.start?4()
-iro.iro.MessageJob.stop?4()
-iro.iro.MessageJob?1(provider, message, recipients)
iro.iro.MyManager.certificate?7
iro.iro.MyManager.userdb?7
+iro.iro.MySMTP.setJob?4(job)
+iro.iro.MySMTP.updateStatus?4(arranged=None, failed=None)
+iro.iro.MySMTP?1(config_filename=None, section="smtp")
iro.iro.MySipgate.setJob?4(job)
iro.iro.MySipgate.updateStatus?4(arranged=None, failed=None)
iro.iro.MySipgate?1(user="", password="")
+iro.iro.MySmstrade.setJob?4(job)
+iro.iro.MySmstrade.updateStatus?4(arranged=None, failed=None)
+iro.iro.MySmstrade?1()
iro.iro.MyUserDB.createUser?4(user)
iro.iro.MyUserDB?1(userlist, jobqueue)
iro.iro.start?4(userlist)
+iro.job.Job.addFailed?4(failed)
+iro.job.Job.addGood?4(good)
+iro.job.Job.getName?4()
+iro.job.Job.getProvider?4()
+iro.job.Job.getStatus?4(detailed)
+iro.job.Job.start?4()
+iro.job.Job.stop?4()
+iro.job.Job?1(provider, name)
+iro.job.MessageJob.getMessage?4()
+iro.job.MessageJob.getRecipients?4()
+iro.job.MessageJob.start?4()
+iro.job.MessageJob.stop?4()
+iro.job.MessageJob?1(provider, name, message, recipients)
+iro.joblist.Joblist.__getitem__?6(key)
+iro.joblist.Joblist.__registerJob__?6(job)
+iro.joblist.Joblist._createID?5()
+iro.joblist.Joblist.newFAX?4(subject, fax, recipients)
+iro.joblist.Joblist.newMail?4(subject, body, recipients)
+iro.joblist.Joblist.newSMS?4(message, recipients)
+iro.joblist.Joblist?1(manager, queue, providerlist)
+iro.providerlist.Providerlist.add?4(name, provider, typeslist)
+iro.providerlist.Providerlist.getDefault?4(stype)
+iro.providerlist.Providerlist.getProvider?4(stype, name="default")
+iro.providerlist.Providerlist.getProviderlist?4(stype)
+iro.providerlist.Providerlist.setDefault?4(stype, name)
+iro.providerlist.Providerlist?1()
iro.test.MyManager.certificate?7
iro.test.MyManager.userdb?7
iro.test.StoppableXMLRPCServer.run?4()
iro.test.StoppableXMLRPCServer.running?7
iro.test.StoppableXMLRPCServer.stop?4()
iro.test.StoppableXMLRPCServer?1(*args, **kwargs)
-iro.test.TestServer.admin?7
-iro.test.TestServer.client1?7
-iro.test.TestServer.client2?7
-iro.test.TestServer.client?7
-iro.test.TestServer.id1?7
-iro.test.TestServer.id2?7
-iro.test.TestServer.id?7
-iro.test.TestServer.servstr?7
iro.test.TestServer.setUp?4()
iro.test.TestServer.tearDown?4()
+iro.test.TestServer.testGetDefault?4()
+iro.test.TestServer.testGetProvider?4()
iro.test.TestServer.testLogin?4()
iro.test.TestServer.testTwoUser?4()
iro.test.TestServer.testsendSMS?4()
-iro.test.TestServer.u1?7
-iro.test.TestServer.u2?7
iro.test.init_server?4()
iro.user.Admin?1(jobqueue)
+iro.user.NotSupportedFeature.__str__?6()
+iro.user.NotSupportedFeature?1(name)
+iro.user.User.getDefaultProvider?4(name)
+iro.user.User.getProvider?4(name)
+iro.user.User.startFAX?4()
iro.user.User.startMail?4(subject, body, recipients)
iro.user.User.startSMS?4(message, recipients)
iro.user.User.status?4(id=None, detailed=False)
@@ -139,24 +160,4 @@
iro.xmlrpc.SecureXMLRPCServer.SecureTCPServer?1(server_address, RequestHandlerClass, certificate, privatekey)
iro.xmlrpc.SecureXMLRPCServer.SecureXMLRPCRequestHandler.setup?4()
iro.xmlrpc.SecureXMLRPCServer.SecureXMLRPCServer?1(addr, requestHandler=SecureXMLRPCRequestHandler, certificate="server.cert", privatekey="server.pem", logRequests=1)
-iro.xmlrpc.SecureXMLRPCServer.test?4()
-iro.xmlserver_test.Job.start?4()
-iro.xmlserver_test.Job.stop?4()
-iro.xmlserver_test.Job?1(provider, name)
-iro.xmlserver_test.Jobs.__getitem__?6(key)
-iro.xmlserver_test.Jobs._createID?5()
-iro.xmlserver_test.Jobs.newSMS?4(message, recipients)
-iro.xmlserver_test.Jobs?1(queue, provider)
-iro.xmlserver_test.SMSJob?1(provider, message, recipients)
-iro.xmlserver_test.SecureAuthentificateXMLRPCRequestHandler2.testUser?4(username, password)
-iro.xmlserver_test.SecureUserDBXMLRPCServer.activateUser?4(username, password)
-iro.xmlserver_test.SecureUserDBXMLRPCServer?1(addr, userdb, requestHandler=SecureAuthentificateXMLRPCRequestHandler2, certificate="server.cert", privatekey="server.pem", logRequests=1)
-iro.xmlserver_test.User.startSMS?4(message, recipients)
-iro.xmlserver_test.User.status?4(id=None)
-iro.xmlserver_test.User.stop?4(id)
-iro.xmlserver_test.User?1(jobqueue)
-iro.xmlserver_test.UserDB.__getitem__?6(key)
-iro.xmlserver_test.UserDB.createHash?4(username, password)
-iro.xmlserver_test.UserDB.createUser?4(user)
-iro.xmlserver_test.UserDB?1(userlist, jobqueue)
-iro.xmlserver_test.test?4()
\ No newline at end of file
+iro.xmlrpc.SecureXMLRPCServer.test?4()
\ No newline at end of file
--- a/iro/iro.e4p Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/iro.e4p Wed Oct 28 02:35:01 2009 +0100
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-4.6.dtd">
<!-- eric4 project file for project iro -->
-<!-- Saved: 2009-10-16, 01:34:46 -->
+<!-- Saved: 2009-10-23, 01:39:27 -->
<!-- Copyright (C) 2009 Sandro Knauß, bugs@sandroknauss.de -->
<Project version="4.6">
<Language></Language>
@@ -19,7 +19,6 @@
<Source>xmlrpc/__init__.py</Source>
<Source>xmlrpc/SecureAuthentificateXMLRPCServer.py</Source>
<Source>xmlrpc/AuthentificateXMLRPCServer.py</Source>
- <Source>xmlserver_test.py</Source>
<Source>anbieter/smtp.py</Source>
<Source>anbieter/geonet.py</Source>
<Source>anbieter/__init__.py</Source>
@@ -46,7 +45,7 @@
</Others>
<MainScript>iro.py</MainScript>
<Vcs>
- <VcsType>Subversion</VcsType>
+ <VcsType>None</VcsType>
<VcsOptions>
<dict>
<key>
--- a/iro/iro.py Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/iro.py Wed Oct 28 02:35:01 2009 +0100
@@ -14,9 +14,8 @@
# Server code
from xmlrpc import SecureUserDBXMLRPCServer,UserDB
-import time, os, md5
+
from user import User, Admin, NotSupportedFeature
-import content
import anbieter
import ConfigParser
@@ -27,68 +26,7 @@
def createUser(self, user):
self.userlist[self.createHash(user)]=user["class"](self.jobqueue)
-class Job(object):
- '''
- Basic class for all jobs
- '''
- def __init__(self,provider,name):
- self.provider=provider
- self.name=name
- self.status = "init"
- self.dStatus={"good":[], "failed":[]}
- def start(self):
- self.status = "started"
-
- def stop(self):
- self.status = "stopped"
-
- def getStatus(self,detailed):
- if detailed and self.status == "started" or self.status == "sended":
- return self.status, self.dStatus
- return self.status, {}
-
- def getName(self):
- return self.name
-
- def getProvider(self):
- return self.provider
-
- def addGood(self, good):
- if type(good) == list:
- self.dStatus['good']=self.dStatus['good']+good
- else:
- self.dStatus['good'].append(good)
-
- def addFailed(self, failed):
- if type(failed) == list:
- self.dStatus['failed']=self.dStatus['failed']+failed
- else:
- self.dStatus['failed'].append(failed)
-
-class MessageJob(Job):
- '''
- A specialized class for smsjobs
- '''
- def __init__(self,provider,name, message,recipients):
- self.message=message
- self.recipients=recipients
- Job.__init__(self,provider, name)
-
- def stop(self):
- pass
-
- def start(self):
- Job.start(self)
- self.provider.setJob(self)
- self.message.sendto(self.provider, self.recipients)
- self.status="sended"
-
- def getMessage(self):
- return self.message
-
- def getRecipients(self):
- return self.recipients
class MySipgate(anbieter.sipgate):
@@ -135,60 +73,8 @@
if failed:
self.job.addFailed(failed)
-
-class Jobs:
- '''
- Providing an list of jobs; each new job gets a hash id
- '''
- def __init__(self,manager, queue,provider):
- self.jobs={}
- self.manager=manager
- self.queue=queue
- self.provider=provider
-
-
- def __getitem__(self,key):
- return self.jobs[key]
-
- def __registerJob__(self, job):
- id = self._createID()
- self.jobs[id]=job
- self.queue.put(job)
- return id
- def newSMS(self,message,recipients):
- '''
- creates a new SMS
- '''
- job=self.manager.MessageJob(self.provider["sms"],message, content.SMS(message),recipients)
- return self.__registerJob__(job)
- def newFAX(self,subject, fax,recipients):
- '''
- creates a new Fax
- '''
- job=self.manager.MessageJob(self.provider["fax"],subject, content.FAX(subject, fax),recipients)
- return self.__registerJob__(job)
-
- def newMail(self,subject, body,recipients):
- '''
- creates a new Mail
- '''
- job=self.manager.MessageJob(self.provider["mail"],subject, content.Mail(subject, body),recipients)
- return self.__registerJob__(job)
-
- def _createID(self):
- '''
- creats a random hash id
- '''
- while True:
- m = md5.new()
- m.update(str(time.time()))
- m.update(os.urandom(10))
- if not self.jobs.has_key(m.hexdigest):
- self.jobs[m.hexdigest()]=None
- break
- return m.hexdigest()
def start(userlist):
from multiprocessing import Queue
@@ -215,7 +101,10 @@
#Benutzerdatenbank erstellen
queue = Queue()
- provider={"sms":sip, "fax":sip, "mail":localhost}
+ provider={"sms":{"sipgate":sip, "smstrade":smstrade, "default":sip, },
+ "fax":{"sipgate":sip, "default":sip, },
+ "mail":{"localhost":localhost, "default":localhost, }, }
+
jobqueue=Jobs(manager, queue, provider)
userdb=MyUserDB(userlist,jobqueue)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/job.py Wed Oct 28 02:35:01 2009 +0100
@@ -0,0 +1,79 @@
+# -*- 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/>.
+
+
+class Job(object):
+ '''
+ Basic class for all jobs
+ '''
+ def __init__(self,provider,name):
+ self.provider=provider
+ self.name=name
+ self.status = "init"
+ self.dStatus={"good":[], "failed":[]}
+
+ def start(self):
+ self.status = "started"
+
+ def stop(self):
+ self.status = "stopped"
+
+ def getStatus(self,detailed):
+ if detailed and self.status == "started" or self.status == "sended":
+ return self.status, self.dStatus
+ return self.status, {}
+
+ def getName(self):
+ return self.name
+
+ def getProvider(self):
+ return self.provider
+
+ def addGood(self, good):
+ if type(good) == list:
+ self.dStatus['good']=self.dStatus['good']+good
+ else:
+ self.dStatus['good'].append(good)
+
+ def addFailed(self, failed):
+ if type(failed) == list:
+ self.dStatus['failed']=self.dStatus['failed']+failed
+ else:
+ self.dStatus['failed'].append(failed)
+
+class MessageJob(Job):
+ '''
+ A specialized class for smsjobs
+ '''
+ def __init__(self,provider,name, message,recipients):
+ self.message=message
+ self.recipients=recipients
+ Job.__init__(self,provider, name)
+
+ def stop(self):
+ pass
+
+ def start(self):
+ Job.start(self)
+ self.provider.setJob(self)
+ self.message.sendto(self.provider, self.recipients)
+ self.status="sended"
+
+ def getMessage(self):
+ return self.message
+
+ def getRecipients(self):
+ return self.recipients
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/joblist.py Wed Oct 28 02:35:01 2009 +0100
@@ -0,0 +1,70 @@
+# -*- 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 content
+import md5, os, time
+
+
+class Joblist:
+ '''
+ Providing an list of jobs; each new job gets a hash id
+ '''
+ def __init__(self,manager, queue,providerlist):
+ self.jobs={}
+ self.manager=manager
+ self.queue=queue
+ self.providerlist=providerlist
+
+
+ def __getitem__(self,key):
+ return self.jobs[key]
+
+ def __registerJob__(self, job):
+ id = self._createID()
+ self.jobs[id]=job
+ self.queue.put(job)
+ return id
+
+ def newSMS(self,message,recipients):
+ '''
+ creates a new SMS
+ '''
+ job=self.manager.MessageJob(self.providerlist.getProvider("sms"),message, content.SMS(message),recipients)
+ return self.__registerJob__(job)
+
+ def newFAX(self,subject, fax,recipients):
+ '''
+ creates a new Fax
+ '''
+ job=self.manager.MessageJob(self.providerlist.getProvider("fax"),subject, content.FAX(subject, fax),recipients)
+ return self.__registerJob__(job)
+
+ def newMail(self,subject, body,recipients):
+ '''
+ creates a new Mail
+ '''
+ job=self.manager.MessageJob(self.providerlist.getProvider("mail"),subject, content.Mail(subject, body),recipients)
+ return self.__registerJob__(job)
+
+ def _createID(self):
+ '''
+ creats a random hash id
+ '''
+ while True:
+ m = md5.new()
+ m.update(str(time.time()))
+ m.update(os.urandom(10))
+ if not self.jobs.has_key(m.hexdigest):
+ self.jobs[m.hexdigest()]=None
+ break
+ return m.hexdigest()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/providerlist.py Wed Oct 28 02:35:01 2009 +0100
@@ -0,0 +1,47 @@
+# -*- 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/>.
+
+class Providerlist:
+ def __init__(self):
+ self.provider={}
+ self.types={}
+ self.defaults={}
+
+ def add(self, name, provider, typeslist):
+ self.provider[name]={"name":name, "class":provider, "types":typeslist}
+ for stype in typeslist:
+ try:
+ self.types[stype].append(self.provider[name])
+ except KeyError:
+ self.types[stype]=[self.provider[name]]
+
+
+ def setDefault(self, stype, name):
+ self.defaults[stype]=self.provider[name]
+
+ def getDefault(self, stype):
+ return self.defaults[stype]
+
+ def getProviderlist(self, stype):
+ llist=[ provider["name"] for provider in self.types[stype] ]
+ llist.sort()
+ return llist
+
+ def getProvider(self, stype, name="default"):
+ if name=="default":
+ return self.getDefault(stype)["class"]
+
+ if not stype in self.provider[name] ["types"]:
+ raise "argh"
+
+ return self.provider[name]["class"]
--- a/iro/test.py Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/test.py Wed Oct 28 02:35:01 2009 +0100
@@ -2,6 +2,9 @@
import unittest, ConfigParser
import iro
+from job import MessageJob
+from joblist import Joblist
+from providerlist import Providerlist
import threading, xmlrpclib
from multiprocessing import Queue
from multiprocessing.managers import BaseManager
@@ -35,7 +38,7 @@
class MyManager(BaseManager):
pass
- MyManager.register('MessageJob', iro.MessageJob)
+ MyManager.register('MessageJob', MessageJob)
manager = MyManager()
manager.start()
@@ -53,8 +56,16 @@
#Benutzerdatenbank erstellen
queue = Queue()
- provider={"sms":sip, "fax":sip, "mail":localhost}
- jobqueue=iro.Jobs(manager, queue, provider)
+ provider=Providerlist()
+ provider.add("sipgate", sip, ["sms", "fax", ])
+ provider.add("smstrade", smstrade, ["sms", ])
+ provider.add("geonet", None, ["sms", "fax", ])
+ provider.add("fax.de", None, ["sms", "fax", ])
+ provider.add("localhost", localhost, ["mail", ])
+ provider.setDefault("sms","smstrade")
+ provider.setDefault("fax","sipgate")
+ provider.setDefault("mail","localhost")
+ jobqueue=Joblist(manager, queue, provider)
userdb=iro.MyUserDB(userlist,jobqueue)
@@ -89,7 +100,7 @@
def testsendSMS(self):
servstr="https://test:test@localhost:8000"
client=xmlrpclib.Server(servstr)
- id=client.startSMS("test",["01234"] )
+ id=client.startSMS("test",["01234", ] )
self.assertEqual(client.status(id),{id: {'status': ['init',{}], 'name': 'test'}} )
def testTwoUser(self):
@@ -116,9 +127,19 @@
servstr="https://test:test@localhost:8000"
client=xmlrpclib.Server(servstr)
self.assertEqual(client.getProvider("sms"), ["fax.de","geonet", "sipgate", "smstrade"])
- self.assertEqual(client.getProvider("fax").sort(), ["fax.de","geonet", "sipgate"])
- self.assertEqual(client.getProvider("mail").sort(), ["localhost"])
- self.assertRaises(iro.NotSupportedFeature, client.getProvider("temp"))
+ self.assertEqual(client.getProvider("fax"), ["fax.de","geonet", "sipgate"])
+ self.assertEqual(client.getProvider("mail"), ["localhost"])
+
+ self.assertRaises(xmlrpclib.Fault,client.getProvider, "temp")
+
+ def testGetDefault(self):
+ servstr="https://test:test@localhost:8000"
+ client=xmlrpclib.Server(servstr)
+ self.assertEqual(client.getDefaultProvider("sms"), "smstrade")
+ self.assertEqual(client.getDefaultProvider("fax"),"sipgate")
+ self.assertEqual(client.getDefaultProvider("mail"), "localhost")
+
+ self.assertRaises(xmlrpclib.Fault,client.getDefaultProvider, "temp")
if __name__ == "__main__":
--- a/iro/user.py Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/user.py Wed Oct 28 02:35:01 2009 +0100
@@ -87,6 +87,14 @@
def getProvider(self, name):
if not name in self.features:
raise NotSupportedFeature(name)
+
+ return self.jobqueue.providerlist.getProviderlist(name)
+
+ def getDefaultProvider(self, name):
+ if not name in self.features:
+ raise NotSupportedFeature(name)
+
+ return self.jobqueue.providerlist.getDefault(name)["name"]
class Admin(User):
def __init__(self,jobqueue):