iro/providerlist.py
author Sandro Knauß <knauss@netzguerilla.net>
Wed, 28 Oct 2009 02:35:01 +0100
changeset 7 07dd2663ac90
child 11 f25033cf93e0
permissions -rw-r--r--
provider auswahl hinzugefügt
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
#either version 3 of the License, or any later version.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
#See the GNU General Public License for more details.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
#You should have received a copy of the GNU General Public License
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
class Providerlist:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
    def __init__(self):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
        self.provider={}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
        self.types={}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
        self.defaults={}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
    def add(self, name, provider, typeslist):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
        self.provider[name]={"name":name, "class":provider, "types":typeslist}
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        for stype in typeslist:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
            try:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
                self.types[stype].append(self.provider[name])
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
            except KeyError:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
                self.types[stype]=[self.provider[name]]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
            
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
    def setDefault(self, stype, name):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
        self.defaults[stype]=self.provider[name]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
    def getDefault(self, stype):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
        return self.defaults[stype]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
    
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
    def getProviderlist(self, stype):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
        llist=[ provider["name"] for provider in self.types[stype] ]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
        llist.sort()
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
        return llist
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
    def getProvider(self, stype,  name="default"):
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
        if name=="default":
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
            return self.getDefault(stype)["class"]
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
        if not stype in self.provider[name] ["types"]:
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
            raise "argh"
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
        
07dd2663ac90 provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
        return self.provider[name]["class"]