iro/install.py
branchdevel
changeset 221 c8615310da30
child 226 5f1e9eb30709
equal deleted inserted replaced
220:602720314930 221:c8615310da30
       
     1 from twisted.python import log
       
     2 from sqlalchemy import create_engine
       
     3 from sqlalchemy.exc import DatabaseError
       
     4 import os
       
     5 
       
     6 from config import configParser, confFiles, main
       
     7 from error import NeededOption
       
     8 from offer.provider import providers
       
     9 
       
    10 from model.schema import Base
       
    11 import config
       
    12 
       
    13 def checkConfig():
       
    14     try:
       
    15         l = configParser.read(confFiles)
       
    16         if len(l) > 0:
       
    17             return True
       
    18         return False
       
    19     except NeededOption as e:
       
    20         log.msg("Error while processing config file: %s"%e)
       
    21         return False
       
    22 
       
    23 def checkDatabase():
       
    24     engine = create_engine(config.main.dburl)
       
    25     for t in Base.metadata.sorted_tables:
       
    26         if not t.exists(engine):
       
    27             return False
       
    28     return True
       
    29 
       
    30 def checkDatabaseConnection():
       
    31     try:
       
    32         engine = create_engine(config.main.dburl)
       
    33         con = engine.connect()
       
    34         con.close()
       
    35         return True
       
    36     except DatabaseError as e:
       
    37         log.msg("Error while trying to connect to database\n%s"%e)
       
    38         return False
       
    39 
       
    40 def createDatabase():
       
    41     engine = create_engine(config.main.dburl)
       
    42     Base.metadata.create_all(engine)
       
    43 
       
    44 def createSampleConfig():
       
    45     if not os.path.exists("iro.conf"):
       
    46         with open("iro.conf",'w') as fp:
       
    47             fp.write("\n".join(main.sampleConf()))
       
    48             fp.write("\n")
       
    49             k = providers.keys()
       
    50             k.sort()
       
    51             for p in k:
       
    52                 fp.write("\n".join(providers[p](p).sampleConf()))
       
    53                 fp.write("\n")
       
    54     else:
       
    55         log.msg("iro.conf exists and will not be overwritten.")
       
    56 
       
    57 def check():
       
    58     if checkConfig() and checkDatabaseConnection() and checkDatabase():
       
    59         return True
       
    60     return False