--- 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
+