migrations/versions/8aa8f8d6a0c3_.py (176 lines of code) (raw):
"""empty message
Revision ID: 8aa8f8d6a0c3
Revises:
Create Date: 2017-04-24 10:24:46.888136
"""
from alembic import op
import sqlalchemy as sa
import geoalchemy2
from sqlalchemy import Integer
# revision identifiers, used by Alembic.
revision = "8aa8f8d6a0c3"
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"areas_of_interest",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column(
"geometry",
geoalchemy2.types.Geometry(geometry_type="MULTIPOLYGON", srid=4326),
nullable=True,
),
sa.Column(
"centroid",
geoalchemy2.types.Geometry(geometry_type="POINT", srid=4326),
nullable=True,
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"tags",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("organisations", sa.String(), nullable=True),
sa.Column("campaigns", sa.String(), nullable=True),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("campaigns"),
sa.UniqueConstraint("organisations"),
)
op.create_table(
"users",
sa.Column("id", sa.BigInteger(), nullable=False),
sa.Column("username", sa.String(), nullable=True),
sa.Column("role", sa.Integer(), nullable=False),
sa.Column("mapping_level", sa.Integer(), nullable=False),
sa.Column("tasks_mapped", sa.Integer(), nullable=False),
sa.Column("tasks_validated", sa.Integer(), nullable=False),
sa.Column("tasks_invalidated", sa.Integer(), nullable=False),
sa.Column("projects_mapped", sa.ARRAY(Integer()), nullable=True),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("username"),
)
op.create_index(op.f("ix_users_id"), "users", ["id"], unique=False)
op.create_table(
"projects",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("status", sa.Integer(), nullable=False),
sa.Column("aoi_id", sa.Integer(), nullable=True),
sa.Column("created", sa.DateTime(), nullable=False),
sa.Column("priority", sa.Integer(), nullable=True),
sa.Column("default_locale", sa.String(length=10), nullable=True),
sa.Column("author_id", sa.BigInteger(), nullable=False),
sa.Column("mapper_level", sa.Integer(), nullable=False),
sa.Column("enforce_mapper_level", sa.Boolean(), nullable=True),
sa.Column("enforce_validator_role", sa.Boolean(), nullable=True),
sa.Column("private", sa.Boolean(), nullable=True),
sa.Column("entities_to_map", sa.String(), nullable=True),
sa.Column("changeset_comment", sa.String(), nullable=True),
sa.Column("due_date", sa.DateTime(), nullable=True),
sa.Column("imagery", sa.String(), nullable=True),
sa.Column("josm_preset", sa.String(), nullable=True),
sa.Column("last_updated", sa.DateTime(), nullable=True),
sa.Column("mapping_types", sa.ARRAY(Integer()), nullable=True),
sa.Column("organisation_tag", sa.String(), nullable=True),
sa.Column("campaign_tag", sa.String(), nullable=True),
sa.Column("total_tasks", sa.Integer(), nullable=False),
sa.Column("tasks_mapped", sa.Integer(), nullable=False),
sa.Column("tasks_validated", sa.Integer(), nullable=False),
sa.Column("tasks_bad_imagery", sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(["aoi_id"], ["areas_of_interest.id"]),
sa.ForeignKeyConstraint(["author_id"], ["users.id"], name="fk_users"),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
op.f("ix_projects_campaign_tag"), "projects", ["campaign_tag"], unique=False
)
op.create_index(
op.f("ix_projects_mapper_level"), "projects", ["mapper_level"], unique=False
)
op.create_index(
op.f("ix_projects_mapping_types"), "projects", ["mapping_types"], unique=False
)
op.create_index(
op.f("ix_projects_organisation_tag"),
"projects",
["organisation_tag"],
unique=False,
)
op.create_table(
"project_info",
sa.Column("project_id", sa.Integer(), nullable=False),
sa.Column("locale", sa.String(length=10), nullable=False),
sa.Column("name", sa.String(length=512), nullable=True),
sa.Column("short_description", sa.String(), nullable=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column("instructions", sa.String(), nullable=True),
sa.ForeignKeyConstraint(["project_id"], ["projects.id"]),
sa.PrimaryKeyConstraint("project_id", "locale"),
)
op.create_index(
"idx_project_info composite",
"project_info",
["locale", "project_id"],
unique=False,
)
op.create_table(
"tasks",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("project_id", sa.Integer(), nullable=False),
sa.Column("x", sa.Integer(), nullable=False),
sa.Column("y", sa.Integer(), nullable=False),
sa.Column("zoom", sa.Integer(), nullable=False),
sa.Column(
"geometry",
geoalchemy2.types.Geometry(geometry_type="MULTIPOLYGON", srid=4326),
nullable=True,
),
sa.Column("task_status", sa.Integer(), nullable=True),
sa.Column("locked_by", sa.BigInteger(), nullable=True),
sa.Column("mapped_by", sa.BigInteger(), nullable=True),
sa.Column("validated_by", sa.BigInteger(), nullable=True),
sa.ForeignKeyConstraint(["locked_by"], ["users.id"], name="fk_users_locked"),
sa.ForeignKeyConstraint(["mapped_by"], ["users.id"], name="fk_users_mapper"),
sa.ForeignKeyConstraint(["project_id"], ["projects.id"]),
sa.ForeignKeyConstraint(
["validated_by"], ["users.id"], name="fk_users_validator"
),
sa.PrimaryKeyConstraint("id", "project_id"),
)
op.create_index(op.f("ix_tasks_project_id"), "tasks", ["project_id"], unique=False)
op.create_table(
"task_history",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("project_id", sa.Integer(), nullable=True),
sa.Column("task_id", sa.Integer(), nullable=False),
sa.Column("action", sa.String(), nullable=False),
sa.Column("action_text", sa.String(), nullable=True),
sa.Column("action_date", sa.DateTime(), nullable=False),
sa.Column("user_id", sa.BigInteger(), nullable=False),
sa.ForeignKeyConstraint(["project_id"], ["projects.id"]),
sa.ForeignKeyConstraint(
["task_id", "project_id"], ["tasks.id", "tasks.project_id"], name="fk_tasks"
),
sa.ForeignKeyConstraint(["user_id"], ["users.id"], name="fk_users"),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
"idx_task_history_composite",
"task_history",
["task_id", "project_id"],
unique=False,
)
op.create_index(
op.f("ix_task_history_project_id"), "task_history", ["project_id"], unique=False
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f("ix_task_history_project_id"), table_name="task_history")
op.drop_index("idx_task_history_composite", table_name="task_history")
op.drop_table("task_history")
op.drop_index(op.f("ix_tasks_project_id"), table_name="tasks")
op.drop_table("tasks")
op.drop_index("idx_project_info composite", table_name="project_info")
op.drop_table("project_info")
op.drop_index(op.f("ix_projects_organisation_tag"), table_name="projects")
op.drop_index(op.f("ix_projects_mapping_types"), table_name="projects")
op.drop_index(op.f("ix_projects_mapper_level"), table_name="projects")
op.drop_index(op.f("ix_projects_campaign_tag"), table_name="projects")
op.drop_table("projects")
op.drop_index(op.f("ix_users_id"), table_name="users")
op.drop_table("users")
op.drop_table("tags")
op.drop_table("areas_of_interest")
# ### end Alembic commands ###