iro/model/offer.py
branchdevel
changeset 157 0192f9107870
parent 152 14c99c89edf4
child 158 e045e628a519
equal deleted inserted replaced
156:a4ad521b127b 157:0192f9107870
     1 from .dbdefer import dbdefer
     1 from .dbdefer import dbdefer
       
     2 from sqlalchemy import and_
       
     3 
     2 import schema
     4 import schema
     3 from ..config import config
     5 from ..config import config
       
     6 from ..offer import getProvider, Offer
     4 
     7 
     5 @dbdefer
     8 @dbdefer
     6 def extendProvider(session, user, typ, providers):
     9 def extendProvider(session, user, typ, providers):
     7     user = session.merge(user)
    10     user = session.merge(user)
     8     ret = []
    11     ret = []
    14                 n = user.has_right(typ, provider=p, route=r)
    17                 n = user.has_right(typ, provider=p, route=r)
    15                 if n and n not in ret:
    18                 if n and n not in ret:
    16                     ret.append(n)
    19                     ret.append(n)
    17     return ret
    20     return ret
    18 
    21 
    19 def loadOffers():
    22 @dbdefer
    20     pass
    23 def loadOffers(session):
       
    24     offers.clear()
       
    25     providers.clear()
       
    26     for provider in ( s for s in config.sections() if not s in ["main",]):
       
    27         p=getProvider(provider,config.get(provider,"typ"),config.items(provider))
       
    28         for r in p.routes:
       
    29             for o in  session.query(schema.Offer.name, schema.Offer.route).filter(and_(schema.Offer.provider==provider,
       
    30                 schema.Offer.route==r)):
       
    31                     offers[o[0]]=Offer(provider=p,route=r,typ=o[1],name=o[0])
       
    32         providers[provider]=p
    21 
    33 
    22 offers={}
    34 offers={}
    23 providers={}
    35 providers={}
    24 
    36 
    25 config.registerReload(loadOffers)
    37 config.registerReload(loadOffers)