# HG changeset patch # User Sandro Knauß # Date 1331480380 -3600 # Node ID 5f1e9eb30709ce9b948cfcbbf7a47ab4a000331a # Parent 70dafbaf21af577ead81877e49fb475561e19554 adding install.getAllRoutes diff -r 70dafbaf21af -r 5f1e9eb30709 iro/install.py --- a/iro/install.py Sun Mar 11 16:38:37 2012 +0100 +++ b/iro/install.py Sun Mar 11 16:39:40 2012 +0100 @@ -1,14 +1,18 @@ from twisted.python import log +import logging from sqlalchemy import create_engine from sqlalchemy.exc import DatabaseError +from sets import Set import os -from config import configParser, confFiles, main -from error import NeededOption -from offer.provider import providers +from .config import configParser, confFiles, main +from .error import NeededOption, ValidateException +from .offer.provider import providers, getProvider -from model.schema import Base -import config +from .model.schema import Base, Offer +from .model.utils import WithSession + +from . import config def checkConfig(): try: @@ -16,8 +20,8 @@ if len(l) > 0: return True return False - except NeededOption as e: - log.msg("Error while processing config file: %s"%e) + except (NeededOption,ValidateException) as e: + log.msg("Error while processing config file: %s"%e,logLevel=logging.ERROR) return False def checkDatabase(): @@ -34,7 +38,7 @@ con.close() return True except DatabaseError as e: - log.msg("Error while trying to connect to database\n%s"%e) + log.msg("Error while trying to connect to database\n%s"%e,logLevel=logging.ERROR) return False def createDatabase(): @@ -54,7 +58,19 @@ else: log.msg("iro.conf exists and will not be overwritten.") -def check(): - if checkConfig() and checkDatabaseConnection() and checkDatabase(): - return True - return False +def getAllRoutes(providers,write=False): + engine = create_engine(config.main.dburl) + ret={"orphand":Set(),"added":Set()} + with WithSession(engine,write) as session: + ret["orphand"]=Set([i[0] for i in session.query(Offer.name).all()]) + for provider in providers: + p=getProvider(provider,configParser.get(provider,"typ"),configParser.items(provider)) + for t in p.typs: + for r in p.typs[t]: + try: + ret["orphand"].remove(Offer.get(session, provider, r, t).name) + except: + session.add(Offer(provider=provider,route=r,typ=t,name='%s_%s_%s'%(provider,t,r))) + ret["added"].add("%s_%s_%s"%(provider,t,r)) + return ret +