feat(orion): extend report layout settings to version 1.1

This commit is contained in:
Schubert Ferenc 2026-07-12 14:56:15 +02:00
parent 12e1761a5b
commit 613ffdc8b7
591 changed files with 3601 additions and 999 deletions

View file

@ -7,7 +7,7 @@ from sqlalchemy import engine_from_config, pool
from app.core.config import settings
from app.db.base import Base
from app.models import contact, customer, device, document, equipment, location, program, user, validation
from app.models import contact, customer, device, document, equipment, location, program, report_settings, user, validation
config = context.config
config.set_main_option("sqlalchemy.url", settings.database_url)
@ -45,4 +45,3 @@ if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()

View file

@ -0,0 +1,66 @@
"""orion report settings
Revision ID: 202607120001
Revises: 202607110007
Create Date: 2026-07-12 12:00:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "202607120001"
down_revision = "202607110007"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"orion_report_settings",
sa.Column("scope", sa.String(length=40), nullable=False),
sa.Column("layout_profile", sa.String(length=40), nullable=False),
sa.Column("show_cover_result_text", sa.Boolean(), nullable=False),
sa.Column("signature_mode", sa.String(length=60), nullable=False),
sa.Column("image_size", sa.String(length=40), nullable=False),
sa.Column("page_break_before_main_chapters", sa.Boolean(), nullable=False),
sa.Column("updated_by_user_id", sa.String(), nullable=True),
sa.Column("id", sa.String(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
sa.ForeignKeyConstraint(["updated_by_user_id"], ["users.id"], name=op.f("fk_orion_report_settings_updated_by_user_id_users")),
sa.PrimaryKeyConstraint("id", name=op.f("pk_orion_report_settings")),
sa.UniqueConstraint("scope", name=op.f("uq_orion_report_settings_scope")),
)
op.create_index(op.f("ix_orion_report_settings_scope"), "orion_report_settings", ["scope"], unique=True)
op.create_index(op.f("ix_orion_report_settings_updated_by_user_id"), "orion_report_settings", ["updated_by_user_id"], unique=False)
op.execute(
"""
INSERT INTO orion_report_settings (
id,
scope,
layout_profile,
show_cover_result_text,
signature_mode,
image_size,
page_break_before_main_chapters
)
VALUES (
'00000000-0000-4000-8000-000000000001',
'GLOBAL',
'STANDARD',
true,
'TECHNICAL_ONLY',
'MEDIUM',
true
)
"""
)
def downgrade() -> None:
op.drop_index(op.f("ix_orion_report_settings_updated_by_user_id"), table_name="orion_report_settings")
op.drop_index(op.f("ix_orion_report_settings_scope"), table_name="orion_report_settings")
op.drop_table("orion_report_settings")

View file

@ -0,0 +1,59 @@
"""orion report settings v1.1
Revision ID: 202607120002
Revises: 202607120001
Create Date: 2026-07-12 13:00:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "202607120002"
down_revision = "202607120001"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column("orion_report_settings", sa.Column("page_margin", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("section_spacing", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("table_layout", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("table_font_size", sa.String(length=40), nullable=False, server_default="STANDARD"))
op.add_column("orion_report_settings", sa.Column("image_position", sa.String(length=40), nullable=False, server_default="SIDE_BY_SIDE"))
op.add_column("orion_report_settings", sa.Column("max_images_per_page", sa.Integer(), nullable=False, server_default="2"))
op.add_column("orion_report_settings", sa.Column("show_image_captions", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("show_header", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("show_footer", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("orion_report_settings", sa.Column("logo_size", sa.String(length=40), nullable=False, server_default="MEDIUM"))
op.add_column("orion_report_settings", sa.Column("compact_cover", sa.Boolean(), nullable=False, server_default=sa.false()))
for column in [
"page_margin",
"section_spacing",
"table_layout",
"table_font_size",
"image_position",
"max_images_per_page",
"show_image_captions",
"show_header",
"show_footer",
"logo_size",
"compact_cover",
]:
op.alter_column("orion_report_settings", column, server_default=None)
def downgrade() -> None:
op.drop_column("orion_report_settings", "compact_cover")
op.drop_column("orion_report_settings", "logo_size")
op.drop_column("orion_report_settings", "show_footer")
op.drop_column("orion_report_settings", "show_header")
op.drop_column("orion_report_settings", "show_image_captions")
op.drop_column("orion_report_settings", "max_images_per_page")
op.drop_column("orion_report_settings", "image_position")
op.drop_column("orion_report_settings", "table_font_size")
op.drop_column("orion_report_settings", "table_layout")
op.drop_column("orion_report_settings", "section_spacing")
op.drop_column("orion_report_settings", "page_margin")