zou 0.20.61__py3-none-any.whl → 0.20.63__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zou/__init__.py +1 -1
- zou/app/api.py +2 -0
- zou/app/blueprints/crud/__init__.py +25 -1
- zou/app/blueprints/crud/hardware_item.py +12 -0
- zou/app/blueprints/crud/notification.py +0 -4
- zou/app/blueprints/crud/production_schedule_version.py +114 -0
- zou/app/blueprints/departments/__init__.py +35 -0
- zou/app/blueprints/departments/resources.py +262 -0
- zou/app/blueprints/index/resources.py +2 -9
- zou/app/blueprints/persons/resources.py +1 -3
- zou/app/blueprints/projects/__init__.py +20 -0
- zou/app/blueprints/projects/resources.py +200 -0
- zou/app/blueprints/tasks/resources.py +5 -2
- zou/app/blueprints/user/resources.py +1 -3
- zou/app/models/base.py +15 -4
- zou/app/models/department.py +62 -0
- zou/app/models/entity.py +3 -3
- zou/app/models/hardware_item.py +15 -0
- zou/app/models/person.py +1 -1
- zou/app/models/production_schedule_version.py +81 -0
- zou/app/models/project.py +17 -6
- zou/app/models/software.py +5 -1
- zou/app/models/task.py +7 -10
- zou/app/services/assets_service.py +5 -6
- zou/app/services/concepts_service.py +3 -4
- zou/app/services/deletion_service.py +10 -18
- zou/app/services/departments_service.py +153 -0
- zou/app/services/edits_service.py +3 -4
- zou/app/services/entities_service.py +5 -6
- zou/app/services/exception.py +8 -0
- zou/app/services/file_tree_service.py +2 -2
- zou/app/services/preview_files_service.py +6 -2
- zou/app/services/schedule_service.py +243 -1
- zou/app/services/shots_service.py +3 -4
- zou/app/services/tasks_service.py +5 -1
- zou/app/services/user_service.py +57 -23
- zou/migrations/alembic.ini +1 -1
- zou/migrations/versions/0bd1e89f2a6f_add_productionscheduleversiontasklink_uc.py +58 -0
- zou/migrations/versions/26f96f65cfa3_add_productionversionschedule_uc.py +40 -0
- zou/migrations/versions/3d8e68dffeee_fix_task_person_link.py +56 -0
- zou/migrations/versions/4368137b44e1_productionscheduleversion_add_on_delete_.py +188 -0
- zou/migrations/versions/4bd9bfb73f11_add_fields_to_the_software_table.py +49 -0
- zou/migrations/versions/5f715f2b6348_add_new_table_productionscheduleversion.py +128 -0
- zou/migrations/versions/7a16258f2fab_add_currency_field_to_budgets.py +2 -4
- zou/migrations/versions/9683bd840dee_add_archived_field_to_software.py +33 -0
- zou/migrations/versions/9af2df17a9d5_add_hardware_table.py +48 -0
- zou/migrations/versions/ce7f46f445dc_add_column_estimation_for_.py +37 -0
- zou/migrations/versions/d5665dca188b_add_version_field_to_software.py +35 -0
- zou/migrations/versions/d97f2730bf7b_add_.py +101 -0
- zou/migrations/versions/dde6be40f54f_add_departement_links_tables_for_.py +151 -0
- zou/migrations/versions/e4b48ca33539_add_project_production_schedule_version_.py +56 -0
- zou/migrations/versions/e8bc24998b34_remove_on_delete_cascade_for_.py +59 -0
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/METADATA +3 -3
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/RECORD +58 -37
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/WHEEL +0 -0
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/entry_points.txt +0 -0
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/licenses/LICENSE +0 -0
- {zou-0.20.61.dist-info → zou-0.20.63.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""add archived field to software
|
|
2
|
+
|
|
3
|
+
Revision ID: 9683bd840dee
|
|
4
|
+
Revises: 4bd9bfb73f11
|
|
5
|
+
Create Date: 2025-07-14 12:42:05.362508
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "9683bd840dee"
|
|
15
|
+
down_revision = "4bd9bfb73f11"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table("software", schema=None) as batch_op:
|
|
23
|
+
batch_op.add_column(sa.Column("archived", sa.Boolean(), nullable=True))
|
|
24
|
+
|
|
25
|
+
# ### end Alembic commands ###
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def downgrade():
|
|
29
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
30
|
+
with op.batch_alter_table("software", schema=None) as batch_op:
|
|
31
|
+
batch_op.drop_column("archived")
|
|
32
|
+
|
|
33
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""add hardware table
|
|
2
|
+
|
|
3
|
+
Revision ID: 9af2df17a9d5
|
|
4
|
+
Revises: d5665dca188b
|
|
5
|
+
Create Date: 2025-07-14 16:30:41.472002
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import sqlalchemy_utils
|
|
13
|
+
import uuid
|
|
14
|
+
|
|
15
|
+
# revision identifiers, used by Alembic.
|
|
16
|
+
revision = "9af2df17a9d5"
|
|
17
|
+
down_revision = "d5665dca188b"
|
|
18
|
+
branch_labels = None
|
|
19
|
+
depends_on = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade():
|
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
24
|
+
op.create_table(
|
|
25
|
+
"hardware_item",
|
|
26
|
+
sa.Column("name", sa.String(length=40), nullable=False),
|
|
27
|
+
sa.Column("short_name", sa.String(length=20), nullable=False),
|
|
28
|
+
sa.Column("archived", sa.Boolean(), nullable=True),
|
|
29
|
+
sa.Column("monthly_cost", sa.Integer(), nullable=True),
|
|
30
|
+
sa.Column("inventory_amount", sa.Integer(), nullable=True),
|
|
31
|
+
sa.Column(
|
|
32
|
+
"id",
|
|
33
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
34
|
+
default=uuid.uuid4,
|
|
35
|
+
nullable=False,
|
|
36
|
+
),
|
|
37
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
|
38
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
|
39
|
+
sa.PrimaryKeyConstraint("id"),
|
|
40
|
+
sa.UniqueConstraint("name"),
|
|
41
|
+
)
|
|
42
|
+
# ### end Alembic commands ###
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def downgrade():
|
|
46
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
47
|
+
op.drop_table("hardware_item")
|
|
48
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Add column estimation for ProductionScheduleVersionTaskLink
|
|
2
|
+
|
|
3
|
+
Revision ID: ce7f46f445dc
|
|
4
|
+
Revises: e8bc24998b34
|
|
5
|
+
Create Date: 2025-07-24 19:27:55.423759
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "ce7f46f445dc"
|
|
15
|
+
down_revision = "e8bc24998b34"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table(
|
|
23
|
+
"production_schedule_version_task_link", schema=None
|
|
24
|
+
) as batch_op:
|
|
25
|
+
batch_op.add_column(sa.Column("estimation", sa.Float(), nullable=True))
|
|
26
|
+
|
|
27
|
+
# ### end Alembic commands ###
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def downgrade():
|
|
31
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
32
|
+
with op.batch_alter_table(
|
|
33
|
+
"production_schedule_version_task_link", schema=None
|
|
34
|
+
) as batch_op:
|
|
35
|
+
batch_op.drop_column("estimation")
|
|
36
|
+
|
|
37
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""add version field to software
|
|
2
|
+
|
|
3
|
+
Revision ID: d5665dca188b
|
|
4
|
+
Revises: 9683bd840dee
|
|
5
|
+
Create Date: 2025-07-14 12:44:29.378444
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "d5665dca188b"
|
|
15
|
+
down_revision = "9683bd840dee"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table("software", schema=None) as batch_op:
|
|
23
|
+
batch_op.add_column(
|
|
24
|
+
sa.Column("version", sa.String(length=20), nullable=True)
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# ### end Alembic commands ###
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def downgrade():
|
|
31
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
32
|
+
with op.batch_alter_table("software", schema=None) as batch_op:
|
|
33
|
+
batch_op.drop_column("version")
|
|
34
|
+
|
|
35
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""Add ProductionScheduleVersionTaskLinkPersonLink
|
|
2
|
+
|
|
3
|
+
Revision ID: d97f2730bf7b
|
|
4
|
+
Revises: 5f715f2b6348
|
|
5
|
+
Create Date: 2025-07-16 02:07:13.855652
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import sqlalchemy_utils
|
|
13
|
+
import uuid
|
|
14
|
+
|
|
15
|
+
# revision identifiers, used by Alembic.
|
|
16
|
+
revision = "d97f2730bf7b"
|
|
17
|
+
down_revision = "5f715f2b6348"
|
|
18
|
+
branch_labels = None
|
|
19
|
+
depends_on = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade():
|
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
24
|
+
op.rename_table("assignations", "task_person_link")
|
|
25
|
+
with op.batch_alter_table(
|
|
26
|
+
"production_schedule_version_task_link", schema=None
|
|
27
|
+
) as batch_op:
|
|
28
|
+
batch_op.alter_column(
|
|
29
|
+
"production_schedule_version_id",
|
|
30
|
+
existing_type=sa.UUID(),
|
|
31
|
+
nullable=True,
|
|
32
|
+
)
|
|
33
|
+
batch_op.alter_column(
|
|
34
|
+
"task_id", existing_type=sa.UUID(), nullable=True
|
|
35
|
+
)
|
|
36
|
+
batch_op.create_index(
|
|
37
|
+
batch_op.f(
|
|
38
|
+
"ix_production_schedule_version_task_link_production_schedule_version_id"
|
|
39
|
+
),
|
|
40
|
+
["production_schedule_version_id"],
|
|
41
|
+
unique=False,
|
|
42
|
+
)
|
|
43
|
+
batch_op.create_index(
|
|
44
|
+
batch_op.f("ix_production_schedule_version_task_link_task_id"),
|
|
45
|
+
["task_id"],
|
|
46
|
+
unique=False,
|
|
47
|
+
)
|
|
48
|
+
op.create_table(
|
|
49
|
+
"production_schedule_version_task_link_person_link",
|
|
50
|
+
sa.Column(
|
|
51
|
+
"production_schedule_version_task_link_id",
|
|
52
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
53
|
+
default=uuid.uuid4,
|
|
54
|
+
nullable=False,
|
|
55
|
+
),
|
|
56
|
+
sa.Column(
|
|
57
|
+
"person_id",
|
|
58
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
59
|
+
default=uuid.uuid4,
|
|
60
|
+
nullable=False,
|
|
61
|
+
),
|
|
62
|
+
sa.ForeignKeyConstraint(
|
|
63
|
+
["person_id"],
|
|
64
|
+
["person.id"],
|
|
65
|
+
),
|
|
66
|
+
sa.ForeignKeyConstraint(
|
|
67
|
+
["production_schedule_version_task_link_id"],
|
|
68
|
+
["production_schedule_version_task_link.id"],
|
|
69
|
+
),
|
|
70
|
+
sa.PrimaryKeyConstraint(
|
|
71
|
+
"production_schedule_version_task_link_id", "person_id"
|
|
72
|
+
),
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# ### end Alembic commands ###
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def downgrade():
|
|
79
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
80
|
+
op.drop_table("production_schedule_version_task_link_person_link")
|
|
81
|
+
with op.batch_alter_table(
|
|
82
|
+
"production_schedule_version_task_link", schema=None
|
|
83
|
+
) as batch_op:
|
|
84
|
+
batch_op.drop_index(
|
|
85
|
+
batch_op.f("ix_production_schedule_version_task_link_task_id")
|
|
86
|
+
)
|
|
87
|
+
batch_op.drop_index(
|
|
88
|
+
batch_op.f(
|
|
89
|
+
"ix_production_schedule_version_task_link_production_schedule_version_id"
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
batch_op.alter_column(
|
|
93
|
+
"task_id", existing_type=sa.UUID(), nullable=False
|
|
94
|
+
)
|
|
95
|
+
batch_op.alter_column(
|
|
96
|
+
"production_schedule_version_id",
|
|
97
|
+
existing_type=sa.UUID(),
|
|
98
|
+
nullable=False,
|
|
99
|
+
)
|
|
100
|
+
op.rename_table("task_person_link", "assignations")
|
|
101
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"""add departement links tables for hardware and software
|
|
2
|
+
|
|
3
|
+
Revision ID: dde6be40f54f
|
|
4
|
+
Revises: 9af2df17a9d5
|
|
5
|
+
Create Date: 2025-07-16 21:58:45.737760
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import sqlalchemy_utils
|
|
13
|
+
import uuid
|
|
14
|
+
|
|
15
|
+
# revision identifiers, used by Alembic.
|
|
16
|
+
revision = "dde6be40f54f"
|
|
17
|
+
down_revision = "9af2df17a9d5"
|
|
18
|
+
branch_labels = None
|
|
19
|
+
depends_on = None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade():
|
|
23
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
24
|
+
op.create_table(
|
|
25
|
+
"hardware_item_department_link",
|
|
26
|
+
sa.Column(
|
|
27
|
+
"department_id",
|
|
28
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
29
|
+
default=uuid.uuid4,
|
|
30
|
+
nullable=False,
|
|
31
|
+
),
|
|
32
|
+
sa.Column(
|
|
33
|
+
"hardware_item_id",
|
|
34
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
35
|
+
default=uuid.uuid4,
|
|
36
|
+
nullable=False,
|
|
37
|
+
),
|
|
38
|
+
sa.Column(
|
|
39
|
+
"id",
|
|
40
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
41
|
+
default=uuid.uuid4,
|
|
42
|
+
nullable=False,
|
|
43
|
+
),
|
|
44
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
|
45
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
|
46
|
+
sa.ForeignKeyConstraint(
|
|
47
|
+
["department_id"],
|
|
48
|
+
["department.id"],
|
|
49
|
+
),
|
|
50
|
+
sa.ForeignKeyConstraint(
|
|
51
|
+
["hardware_item_id"],
|
|
52
|
+
["hardware_item.id"],
|
|
53
|
+
),
|
|
54
|
+
sa.PrimaryKeyConstraint("department_id", "hardware_item_id", "id"),
|
|
55
|
+
sa.UniqueConstraint(
|
|
56
|
+
"hardware_item_id",
|
|
57
|
+
"department_id",
|
|
58
|
+
name="hardware_item_department_link_uc",
|
|
59
|
+
),
|
|
60
|
+
)
|
|
61
|
+
with op.batch_alter_table(
|
|
62
|
+
"hardware_item_department_link", schema=None
|
|
63
|
+
) as batch_op:
|
|
64
|
+
batch_op.create_index(
|
|
65
|
+
batch_op.f("ix_hardware_item_department_link_department_id"),
|
|
66
|
+
["department_id"],
|
|
67
|
+
unique=False,
|
|
68
|
+
)
|
|
69
|
+
batch_op.create_index(
|
|
70
|
+
batch_op.f("ix_hardware_item_department_link_hardware_item_id"),
|
|
71
|
+
["hardware_item_id"],
|
|
72
|
+
unique=False,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
op.create_table(
|
|
76
|
+
"software_department_link",
|
|
77
|
+
sa.Column(
|
|
78
|
+
"department_id",
|
|
79
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
80
|
+
default=uuid.uuid4,
|
|
81
|
+
nullable=False,
|
|
82
|
+
),
|
|
83
|
+
sa.Column(
|
|
84
|
+
"software_id",
|
|
85
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
86
|
+
default=uuid.uuid4,
|
|
87
|
+
nullable=False,
|
|
88
|
+
),
|
|
89
|
+
sa.Column(
|
|
90
|
+
"id",
|
|
91
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
92
|
+
default=uuid.uuid4,
|
|
93
|
+
nullable=False,
|
|
94
|
+
),
|
|
95
|
+
sa.Column("created_at", sa.DateTime(), nullable=True),
|
|
96
|
+
sa.Column("updated_at", sa.DateTime(), nullable=True),
|
|
97
|
+
sa.ForeignKeyConstraint(
|
|
98
|
+
["department_id"],
|
|
99
|
+
["department.id"],
|
|
100
|
+
),
|
|
101
|
+
sa.ForeignKeyConstraint(
|
|
102
|
+
["software_id"],
|
|
103
|
+
["software.id"],
|
|
104
|
+
),
|
|
105
|
+
sa.PrimaryKeyConstraint("department_id", "software_id", "id"),
|
|
106
|
+
sa.UniqueConstraint(
|
|
107
|
+
"department_id", "software_id", name="software_department_link_uc"
|
|
108
|
+
),
|
|
109
|
+
)
|
|
110
|
+
with op.batch_alter_table(
|
|
111
|
+
"software_department_link", schema=None
|
|
112
|
+
) as batch_op:
|
|
113
|
+
batch_op.create_index(
|
|
114
|
+
batch_op.f("ix_software_department_link_department_id"),
|
|
115
|
+
["department_id"],
|
|
116
|
+
unique=False,
|
|
117
|
+
)
|
|
118
|
+
batch_op.create_index(
|
|
119
|
+
batch_op.f("ix_software_department_link_software_id"),
|
|
120
|
+
["software_id"],
|
|
121
|
+
unique=False,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
# ### end Alembic commands ###
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def downgrade():
|
|
128
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
129
|
+
with op.batch_alter_table(
|
|
130
|
+
"software_department_link", schema=None
|
|
131
|
+
) as batch_op:
|
|
132
|
+
batch_op.drop_index(
|
|
133
|
+
batch_op.f("ix_software_department_link_software_id")
|
|
134
|
+
)
|
|
135
|
+
batch_op.drop_index(
|
|
136
|
+
batch_op.f("ix_software_department_link_department_id")
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
op.drop_table("software_department_link")
|
|
140
|
+
with op.batch_alter_table(
|
|
141
|
+
"hardware_item_department_link", schema=None
|
|
142
|
+
) as batch_op:
|
|
143
|
+
batch_op.drop_index(
|
|
144
|
+
batch_op.f("ix_hardware_item_department_link_hardware_item_id")
|
|
145
|
+
)
|
|
146
|
+
batch_op.drop_index(
|
|
147
|
+
batch_op.f("ix_hardware_item_department_link_department_id")
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
op.drop_table("hardware_item_department_link")
|
|
151
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Add Project.production_schedule_version_id
|
|
2
|
+
|
|
3
|
+
Revision ID: e4b48ca33539
|
|
4
|
+
Revises: 26f96f65cfa3
|
|
5
|
+
Create Date: 2025-07-22 02:57:31.987773
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import uuid
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = "e4b48ca33539"
|
|
16
|
+
down_revision = "26f96f65cfa3"
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
23
|
+
with op.batch_alter_table("project", schema=None) as batch_op:
|
|
24
|
+
batch_op.add_column(
|
|
25
|
+
sa.Column(
|
|
26
|
+
"from_schedule_version_id",
|
|
27
|
+
sqlalchemy_utils.types.uuid.UUIDType(binary=False),
|
|
28
|
+
default=uuid.uuid4,
|
|
29
|
+
nullable=True,
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
batch_op.create_index(
|
|
33
|
+
batch_op.f("ix_project_from_schedule_version_id"),
|
|
34
|
+
["from_schedule_version_id"],
|
|
35
|
+
unique=False,
|
|
36
|
+
)
|
|
37
|
+
batch_op.create_foreign_key(
|
|
38
|
+
None,
|
|
39
|
+
"production_schedule_version",
|
|
40
|
+
["from_schedule_version_id"],
|
|
41
|
+
["id"],
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# ### end Alembic commands ###
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def downgrade():
|
|
48
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
49
|
+
with op.batch_alter_table("project", schema=None) as batch_op:
|
|
50
|
+
batch_op.drop_constraint(
|
|
51
|
+
"project_from_schedule_version_id_fkey", type_="foreignkey"
|
|
52
|
+
)
|
|
53
|
+
batch_op.drop_index(batch_op.f("ix_project_from_schedule_version_id"))
|
|
54
|
+
batch_op.drop_column("from_schedule_version_id")
|
|
55
|
+
|
|
56
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"""Remove on delete cascade for ProductionScheduleVersion.production_schedule_from
|
|
2
|
+
|
|
3
|
+
Revision ID: e8bc24998b34
|
|
4
|
+
Revises: 4368137b44e1
|
|
5
|
+
Create Date: 2025-07-24 14:37:53.406897
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "e8bc24998b34"
|
|
14
|
+
down_revision = "4368137b44e1"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade():
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
with op.batch_alter_table(
|
|
22
|
+
"production_schedule_version", schema=None
|
|
23
|
+
) as batch_op:
|
|
24
|
+
batch_op.drop_constraint(
|
|
25
|
+
batch_op.f(
|
|
26
|
+
"production_schedule_version_production_schedule_from_fkey"
|
|
27
|
+
),
|
|
28
|
+
type_="foreignkey",
|
|
29
|
+
)
|
|
30
|
+
batch_op.create_foreign_key(
|
|
31
|
+
None,
|
|
32
|
+
"production_schedule_version",
|
|
33
|
+
["production_schedule_from"],
|
|
34
|
+
["id"],
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# ### end Alembic commands ###
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def downgrade():
|
|
41
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
42
|
+
with op.batch_alter_table(
|
|
43
|
+
"production_schedule_version", schema=None
|
|
44
|
+
) as batch_op:
|
|
45
|
+
batch_op.drop_constraint(
|
|
46
|
+
"production_schedule_version_production_schedule_from_fkey",
|
|
47
|
+
type_="foreignkey",
|
|
48
|
+
)
|
|
49
|
+
batch_op.create_foreign_key(
|
|
50
|
+
batch_op.f(
|
|
51
|
+
"production_schedule_version_production_schedule_from_fkey"
|
|
52
|
+
),
|
|
53
|
+
"production_schedule_version",
|
|
54
|
+
["production_schedule_from"],
|
|
55
|
+
["id"],
|
|
56
|
+
ondelete="CASCADE",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# ### end Alembic commands ###
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.63
|
|
4
4
|
Summary: API to store and manage the data of your animation production
|
|
5
5
|
Home-page: https://zou.cg-wire.com
|
|
6
6
|
Author: CG Wire
|
|
@@ -53,7 +53,7 @@ Requires-Dist: numpy==2.2.6
|
|
|
53
53
|
Requires-Dist: opencv-python==4.12.0.88
|
|
54
54
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
55
55
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
56
|
-
Requires-Dist: orjson==3.11.
|
|
56
|
+
Requires-Dist: orjson==3.11.1
|
|
57
57
|
Requires-Dist: pillow==11.3.0
|
|
58
58
|
Requires-Dist: psutil==7.0.0
|
|
59
59
|
Requires-Dist: psycopg[binary]==3.2.9
|
|
@@ -81,7 +81,7 @@ Requires-Dist: gevent; extra == "prod"
|
|
|
81
81
|
Provides-Extra: dev
|
|
82
82
|
Requires-Dist: wheel; extra == "dev"
|
|
83
83
|
Provides-Extra: test
|
|
84
|
-
Requires-Dist: fakeredis==2.30.
|
|
84
|
+
Requires-Dist: fakeredis==2.30.2; extra == "test"
|
|
85
85
|
Requires-Dist: mixer==7.2.2; extra == "test"
|
|
86
86
|
Requires-Dist: pytest-cov==6.2.1; extra == "test"
|
|
87
87
|
Requires-Dist: pytest==8.4.1; extra == "test"
|