iro/offer/provider.py
author Sandro Knauß <knauss@netzguerilla.net>
Wed, 21 Mar 2012 19:43:36 +0100
branchdevel
changeset 240 3406d3bf05d4
parent 220 602720314930
child 253 e8d56537c9cc
permissions -rw-r--r--
removing old files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
161
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
     1
from functools import partial
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
     2
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
     3
from ..error import NoRoute, NoTyp, ValidateException, NoProvider
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
     4
from ..config import Option, Config
183
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
     5
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
     6
class Provider(Config):
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
     7
    def __init__(self, name, typs={}):
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
     8
        Config.__init__(self, name)
166
6d6890f7e3f8 adding smtp provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 161
diff changeset
     9
        self.typs=typs
6d6890f7e3f8 adding smtp provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 161
diff changeset
    10
        self.testmode = False
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    11
183
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    12
        self.options = {
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    13
                "typ":Option(vProvider, long="One available provider typ.", must=True, default=name)
183
07ee5543751b offer.provider now handles the options dict and loadConfig is only in Provider class
Sandro Knauß <knauss@netzguerilla.net>
parents: 180
diff changeset
    14
                }
157
0192f9107870 model.offer.loadOffers implemented
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    16
        self.order = ["typ"]
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
    17
161
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    18
    def send(self, typ, route, recipient, message):
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    19
        pass
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    20
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    21
    def getSendFunc(self, typ, route):
171
5619596a0053 getSendFunc logic from smtp to Provider(offer.provider)
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
    22
        try:
5619596a0053 getSendFunc logic from smtp to Provider(offer.provider)
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
    23
            if route not in self.typs[typ]:
5619596a0053 getSendFunc logic from smtp to Provider(offer.provider)
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
    24
                raise NoRoute(route)
5619596a0053 getSendFunc logic from smtp to Provider(offer.provider)
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
    25
        except KeyError:
5619596a0053 getSendFunc logic from smtp to Provider(offer.provider)
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
    26
            raise NoTyp(route)
161
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    27
        return partial(self.send, typ, route)
072ee139eb67 sending part now in provoder class
Sandro Knauß <knauss@netzguerilla.net>
parents: 159
diff changeset
    28
180
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    29
def getProvider(name, typ, config):
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    30
    try:
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    31
        p = providers[typ](name)
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    32
        p.load(config)
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 183
diff changeset
    33
        return p
180
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    34
    except KeyError:
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    35
        raise NoProvider(typ)
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    36
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    37
def vProvider(typ, field):
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    38
    if typ not in providers.keys():
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    39
        raise ValidateException()
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    40
    return typ
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    41
55ab949cf0f8 providers now handeld in offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 171
diff changeset
    42
providers={}