#!python

import sys

import thig.base
from thig.base.model.policy import *

import sqlalchemy as sa


databases = dict(
  dev   = 'oracle://user:pass@dev',
  qa    = 'oracle://user:pass@qa',
  prod  = 'oracle://user:pass@prod',
  rpmv2 = 'oracle://user:pass@dev2',
)


def usage():
  print """usage: policycopy.py srcEnv:policyNum/effDate dstEnv
  
  Where srvEnv and dstEnv can be any of: dev, qa, prod, or rpmv2.
  effDate must be in the format YYYYMMDD.
"""

def load_policy(locator):
  try:
    env, policyNum, effDate = locator.replace('/',':').split(':')
  except ValueError:
    usage()
    sys.exit(2)

  effDate = datetime(int(effDate[0:4]), int(effDate[4:6]), int(effDate[6:8]))

  engine = sa.create_engine(databases[env])
  engine.echo = True

  session = sa.create_session(engine)
  policy = session.query(Policy).get_by(Policy.c.policyNum == policyNum, Policy.c.effectiveDate == effDate)
  session.expunge(policy)
  session.close()

  return policy


def save_policy(env, policy):
  engine = sa.create_engine(databases[env])
  engine.echo = True

  session = sa.create_session(engine)
  session.save(policy)
  session.flush()
  session.close()

  return policy





try:
  src, dst = sys.argv[1:]
except ValueError:
  usage()
  sys.exit(2)

policy = load_policy(src)

save_policy(dst, policy)

