Product list / detail / router fully working.

Need to test the sale / reports
This commit is contained in:
2020-11-09 12:43:18 +05:30
parent 4aaa3fc72b
commit a92726f5e6
22 changed files with 370 additions and 271 deletions

View File

@ -21,10 +21,10 @@ branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
def update_sale_categories():
product = table(
"products",
column("product_id", postgresql.UUID(as_uuid=True)),
column("sale_category_id", postgresql.UUID(as_uuid=True)),
column("sale_category_name", sa.Unicode(length=255)),
)
@ -40,7 +40,12 @@ def upgrade():
}
)
)
with op.batch_alter_table("products") as batch_op:
batch_op.alter_column("sale_category_id", nullable=False)
batch_op.drop_column("sale_category_name")
def update_section_printers():
section_printer = table(
"section_printers",
column("section_id", postgresql.UUID(as_uuid=True)),
@ -66,75 +71,8 @@ def upgrade():
batch_op.alter_column("printer_id", nullable=False)
batch_op.drop_column("printer_name")
with op.batch_alter_table("products") as batch_op:
batch_op.alter_column("sale_category_id", nullable=False)
batch_op.drop_column("sale_category_name")
# Migration to temporal products
op.rename_table("products", "product_histories")
with op.batch_alter_table("product_histories") as batch_op:
batch_op.add_column(sa.Column("valid_from", sa.Date(), nullable=True))
batch_op.add_column(sa.Column("valid_till", sa.Date(), nullable=True))
batch_op.drop_column("is_active")
op.create_table(
"product_versions",
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
sa.Column("version_id", postgresql.UUID(as_uuid=True), nullable=False),
sa.ForeignKeyConstraint(
["version_id"], ["product_histories.id"], name=op.f("fk_product_versions_version_id_product_histories")
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_product_versions")),
sa.UniqueConstraint("id", "version_id", name=op.f("uq_product_versions_id")),
)
op.drop_constraint("fk_inventories_product_id_products", "inventories", type_="foreignkey")
op.create_foreign_key(
op.f("fk_inventories_product_id_product_versions"), "inventories", "product_versions", ["product_id"], ["id"]
)
pv = table(
"product_versions",
column("id", postgresql.UUID(as_uuid=True)),
column("version_id", postgresql.UUID(as_uuid=True)),
)
prod = table(
"product_histories",
column("id", postgresql.UUID(as_uuid=True)),
column("name", sa.Unicode(length=255)),
column("units", sa.Unicode(length=255)),
column("valid_from", sa.Date()),
column("valid_till", sa.Date()),
)
op.execute(pv.insert().from_select([pv.c.id, pv.c.version_id], select([prod.c.id, prod.c.id.label("vid")])))
op.alter_column("modifier_categories_products", "modifier_categories_id", new_column_name="modifier_category_id")
op.drop_constraint("uq_modifier_categories_products_product_id", "modifier_categories_products", type_="unique")
op.create_unique_constraint(
op.f("uq_modifier_categories_products_product_id"),
"modifier_categories_products",
["product_id", "modifier_category_id"],
)
op.drop_constraint(
"fk_modifier_categories_products_product_id_products", "modifier_categories_products", type_="foreignkey"
)
op.create_foreign_key(
op.f("fk_modifier_categories_products_product_id_product_versions"),
"modifier_categories_products",
"product_versions",
["product_id"],
["id"],
)
op.create_exclude_constraint(
"uq_product_histories_name",
"product_histories",
(prod.c.name, "="),
(prod.c.units, "="),
(func.daterange(prod.c.valid_from, prod.c.valid_till, text("'[]'")), "&&"),
)
op.drop_constraint("uq_products_name", "product_histories", type_="unique")
def add_all_roles_to_owner():
r = table(
"roles",
column("id", postgresql.UUID(as_uuid=True)),
@ -159,6 +97,92 @@ def upgrade():
)
.on_conflict_do_nothing(),
)
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
update_sale_categories()
update_section_printers()
# Migration to temporal products
op.drop_constraint("fk_inventories_product_id_products", "inventories", type_="foreignkey")
op.drop_constraint(
"fk_modifier_categories_products_product_id_products", "modifier_categories_products", type_="foreignkey"
)
op.drop_constraint("uq_products_name", "products", type_="unique")
op.drop_constraint("pk_products", "products", type_="primary")
op.rename_table("products", "product_versions")
with op.batch_alter_table("product_versions") as batch_op:
batch_op.add_column(sa.Column("product_id", postgresql.UUID(as_uuid=True), nullable=True)),
batch_op.add_column(sa.Column("valid_from", sa.Date(), nullable=True))
batch_op.add_column(sa.Column("valid_till", sa.Date(), nullable=True))
batch_op.drop_column("is_active")
batch_op.create_primary_key("pk_product_versions", ["id"])
prod_v = table(
"product_versions",
column("id", postgresql.UUID(as_uuid=True)),
column("product_id", postgresql.UUID(as_uuid=True)),
)
op.execute(prod_v.update(values={"product_id": prod_v.c.id}))
op.create_table(
"products",
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
# sa.Column("version_id", postgresql.UUID(as_uuid=True), nullable=False),
# sa.ForeignKeyConstraint(
# ["version_id"], ["product_versions.id"], name=op.f("fk_products_version_id_product_versions")
# ),
sa.PrimaryKeyConstraint("id", name=op.f("pk_products")),
# sa.UniqueConstraint("id", "version_id", name=op.f("uq_products_id")),
)
op.alter_column("product_versions", "product_id", nullable=False)
prod = table(
"product_versions",
column("id", postgresql.UUID(as_uuid=True)),
column("name", sa.Unicode(length=255)),
column("units", sa.Unicode(length=255)),
column("valid_from", sa.Date()),
column("valid_till", sa.Date()),
)
pv = table(
"products",
column("id", postgresql.UUID(as_uuid=True)),
)
op.execute(pv.insert().from_select([pv.c.id], select([prod.c.id])))
op.create_foreign_key(
op.f("fk_product_versions_product_id_products"), "product_versions", "products", ["product_id"], ["id"]
)
op.create_foreign_key(op.f("fk_inventories_product_id_products"), "inventories", "products", ["product_id"], ["id"])
op.create_foreign_key(
op.f("fk_modifier_categories_products_product_id_products"),
"modifier_categories_products",
"products",
["product_id"],
["id"],
)
op.alter_column("modifier_categories_products", "modifier_categories_id", new_column_name="modifier_category_id")
op.drop_constraint("uq_modifier_categories_products_product_id", "modifier_categories_products", type_="unique")
op.create_unique_constraint(
op.f("uq_modifier_categories_products_product_id"),
"modifier_categories_products",
["product_id", "modifier_category_id"],
)
op.create_exclude_constraint(
"uq_product_versions_name",
"product_versions",
(prod.c.name, "="),
(prod.c.units, "="),
(func.daterange(prod.c.valid_from, prod.c.valid_till, text("'[]'")), "&&"),
)
add_all_roles_to_owner()
# ### end Alembic commands ###