iro/model/offer.py
branchdevel
changeset 258 0a5eb5aac0be
parent 204 4eb663df29fb
child 294 0e75bd39767d
equal deleted inserted replaced
257:31114e40178d 258:0a5eb5aac0be
     4 from ..config import configParser
     4 from ..config import configParser
     5 from ..offer import getProvider, Offer
     5 from ..offer import getProvider, Offer
     6 
     6 
     7 @dbdefer
     7 @dbdefer
     8 def extendProvider(session, user, typ, ps):
     8 def extendProvider(session, user, typ, ps):
       
     9     """extend and reduce the offer list to allowed routes for **user**.
       
    10 
       
    11     - extend the "default" to the default offerlist of the **user**.
       
    12     - extend a Provider name to all routes of that provider.
       
    13 
       
    14     :param session: a valid session ( created by decorator :func:`iro.model.dbdefer.dbdefer`)
       
    15     :param `iro.model.schema.User` user: a user object
       
    16     :param string typ: typ of the message
       
    17     :param ps: a list of strings or a string, each one offer name or provider name
       
    18     :return: a extended an reduced offer list
       
    19     """
     9     user = session.merge(user)
    20     user = session.merge(user)
    10     ret = []
    21     ret = []
    11     if ps == "default" or ps == ["default"]:
    22     if ps == "default" or ps == ["default"]:
    12         ps = (q[0] for q in  user.routes(typ,default=True))
    23         ps = (q[0] for q in  user.routes(typ,default=True))
    13     for p in ps:
    24     for p in ps:
    20                     ret.append(n)
    31                     ret.append(n)
    21     return ret
    32     return ret
    22 
    33 
    23 @dbdefer
    34 @dbdefer
    24 def loadOffers(session):
    35 def loadOffers(session):
       
    36     """loading Offers from database and configuration file and store them in :attr:`~iro.model.offer.offers` and :attr:`~iro.model.offer.providers`.
       
    37 
       
    38     :param session: a valid session ( created by decorator :func:`iro.model.dbdefer.dbdefer`)
       
    39     """
    25     offers.clear()
    40     offers.clear()
    26     providers.clear()
    41     providers.clear()
    27     for provider in ( s for s in configParser.sections() if not s in ["main",]):
    42     for provider in ( s for s in configParser.sections() if not s in ["main",]):
    28         p=getProvider(provider,configParser.get(provider,"typ"),configParser.items(provider))
    43         p=getProvider(provider,configParser.get(provider,"typ"),configParser.items(provider))
    29         for t in p.typs:
    44         for t in p.typs:
    31                 n = schema.Offer.get(session, provider, r, t).name
    46                 n = schema.Offer.get(session, provider, r, t).name
    32                 offers[n]=Offer(provider=p,route=r,typ=t,name=n)
    47                 offers[n]=Offer(provider=p,route=r,typ=t,name=n)
    33         providers[provider]=p
    48         providers[provider]=p
    34 
    49 
    35 offers={}
    50 offers={}
       
    51 """A dict of all available offers -- key is the offer name"""
       
    52 
    36 providers={}
    53 providers={}
       
    54 """A dict of all available providers -- key is the provider name"""
       
    55 
    37 
    56 
    38 configParser.registerReload(loadOffers)
    57 configParser.registerReload(loadOffers)
    39 
    58