Source code for fabric_colors.db.postgis

from fabric.api import task, run, env
from fabric.operations import local
from fabric.colors import red

from fabric_colors.environment import set_target_env


@task
@set_target_env
[docs]def install(): """ Distro-agnostic way of installing postgis2. """ mod = __import__('fabric_colors.distro.{0}.postgis'.format(env.distro), fromlist=['{0}.postgis'.format(env.distro)]) PKG_INSTALL = getattr(mod, 'PKG_INSTALL') if not installed(): env.run(PKG_INSTALL)
@task @set_target_env
[docs]def installed(): """ Distro-agnostic way of checking if postgis2 is installed. """ mod = __import__('fabric_colors.distro.{0}.postgis'.format(env.distro), fromlist=['{0}.postgis'.format(env.distro)]) cmd = getattr(mod, 'PKG_INSTALLED_CMD') if env.run == local: result = local(cmd, capture=True) else: result = env.run(cmd) if result: print(red("Already installed.")) return result
@task @set_target_env
[docs]def create_template(): command_string = """ POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-2.0 # Creating the template spatial database. createdb -U postgres -E UTF8 template_postgis createlang -U postgres -d template_postgis plpgsql # Adding PLPGSQL language support. # Allows non-superusers the ability to create from this template psql -U postgres -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';" # Loaing the PostGIS SQL routines psql -U postgres -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql psql -U postgres -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql # Enabling users to alter spatial tables. psql -U postgres -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;" psql -U postgres -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;" psql -U postgres -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;" """ run(command_string)

This Page