Example #1
0
def init_db():
    import plenario.models
    from plenario.utils.weather import WeatherETL, WeatherStationsETL
    from plenario.utils.shapefile_helpers import PlenarioShapeETL
    import datetime

    print 'creating master, meta and user tables'
    Base.metadata.create_all(bind=app_engine)
    if plenario.settings.DEFAULT_USER:
        print 'creating default user %s' % plenario.settings.DEFAULT_USER['name']
        user = plenario.models.User(**plenario.settings.DEFAULT_USER)
        session.add(user)
        session.commit()

    print 'initializing NOAA weather stations'
    s = WeatherStationsETL()
    s.initialize()

    print 'initializing NOAA daily and hourly weather observations for %s/%s' % (datetime.datetime.now().month, datetime.datetime.now().year) 
    print 'this will take a few minutes ...'
    e = WeatherETL()
    e.initialize_month(datetime.datetime.now().year, datetime.datetime.now().month)

    print 'initializing and populating US Census blocks'
    print 'this will *also* take a few minutes ...'
    shp = PlenarioShapeETL(plenario.settings.CENSUS_BLOCKS)
    shp.add()
Example #2
0
def init_db():
    import plenario.models
    from plenario.utils.weather import WeatherETL, WeatherStationsETL
    from plenario.utils.shapefile_helpers import PlenarioShapeETL
    import datetime

    print 'creating master, meta and user tables'
    Base.metadata.create_all(bind=app_engine)
    if plenario.settings.DEFAULT_USER:
        print 'creating default user %s' % plenario.settings.DEFAULT_USER[
            'name']
        user = plenario.models.User(**plenario.settings.DEFAULT_USER)
        session.add(user)
        session.commit()

    print 'initializing NOAA weather stations'
    s = WeatherStationsETL()
    s.initialize()

    print 'initializing NOAA daily and hourly weather observations for %s/%s' % (
        datetime.datetime.now().month, datetime.datetime.now().year)
    print 'this will take a few minutes ...'
    e = WeatherETL()
    e.initialize_month(datetime.datetime.now().year,
                       datetime.datetime.now().month)

    print 'initializing and populating US Census blocks'
    print 'this will *also* take a few minutes ...'
    shp = PlenarioShapeETL(plenario.settings.CENSUS_BLOCKS)
    shp.add()
Example #3
0
def init_weather():
    print 'initializing NOAA weather stations'
    s = WeatherStationsETL()
    s.initialize()

    print 'initializing NOAA daily and hourly weather observations for %s/%s' % (datetime.datetime.now().month, datetime.datetime.now().year)
    print 'this will take a few minutes ...'
    e = WeatherETL()
    e.initialize_month(datetime.datetime.now().year, datetime.datetime.now().month)
Example #4
0
def init_weather():
    print 'initializing NOAA weather stations'
    s = WeatherStationsETL()
    s.initialize()

    print 'initializing NOAA daily and hourly weather observations for %s/%s' % (datetime.datetime.now().month, datetime.datetime.now().year)
    print 'this will take a few minutes ...'
    e = WeatherETL()
    try:
        e.initialize_month(datetime.datetime.now().year, datetime.datetime.now().month)
    except Exception as e:
        session.rollback()
        raise e
Example #5
0
def init_weather():
    print 'initializing NOAA weather stations'
    s = WeatherStationsETL()
    s.initialize()

    print 'initializing NOAA daily and hourly weather observations for %s/%s' % (datetime.datetime.now().month, datetime.datetime.now().year)
    print 'this will take a few minutes ...'
    e = WeatherETL()
    try:
        e.initialize_month(datetime.datetime.now().year, datetime.datetime.now().month)
    except Exception as e:
        session.rollback()
        raise e
Example #6
0
def init():
    """Initialize the database.
    """
    # TODO(heyzoos)
    # Check for dependencies to fail fast and helpfully before running:
    #   - postgresql-client

    base_uri = DATABASE_CONN.rsplit('/', 1)[0]
    base_engine = create_engine(base_uri)

    connection_attempts = 6
    interval = 10
    for connection_attempt in range(0, connection_attempts):
        try:
            create_database(base_engine, DB_NAME)
            break
        except ProgrammingError:
            logger.debug('[plenario] It already exists!')
            break
        except sqlalchemy.exc.OperationalError:
            logger.debug('[plenario] Database has not started yet.')
            sleep(interval)

    try:
        create_extension(plenario_engine, 'postgis')
        create_extension(plenario_engine, 'plv8')
    except ProgrammingError:
        logger.debug('[plenario] It already exists!')

    logger.debug('[plenario] Creating metadata tables')
    postgres_base.metadata.create_all()

    logger.debug('[plenario] Creating weather tables')
    WeatherStationsETL().make_station_table()
    WeatherETL().make_tables()

    # Set up custom functions, triggers and views in postgres
    psql('./plenario/dbscripts/sensor_tree.sql')
    psql('./plenario/dbscripts/point_from_location.sql')

    # Set up the default user if we are running in anything but production
    if os.environ.get('CONFIG') != 'prod':
        logger.debug('[plenario] Create default user')
        user = User(**DEFAULT_USER)

        try:
            postgres_session.add(user)
            postgres_session.commit()
        except IntegrityError:
            logger.debug('[plenario] Already exists!')
            postgres_session.rollback()

    # This will get celery to set up its meta tables
    try:
        health.delay()
    except OperationalError:
        logger.debug('[plenario] Redis is not running!')