iro/providerlist.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 18 Nov 2011 22:47:25 +0100
changeset 70 a9ee0fe847a8
parent 49 b1d0f7ffbb64
permissions -rw-r--r--
nur benutzernamen übermitteln

# -*- 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 status(self):
        ret="provider:%s"%self.provider
        ret +="\ntypes:%s"%self.types
        return ret+"\ndefaults:%s"%self.defaults

    def getProvider(self, stype,  name="default"):
        if name=="default":
            return self.getDefault(stype)["class"]

        if not stype in self.provider[name] ["types"]:
            raise Exception("argh")

        return self.provider[name]["class"]