From e8cc34993b0411221cf43a4bf2a74f8e8f2a925a Mon Sep 17 00:00:00 2001 From: lthanhhieu Date: Tue, 8 Aug 2023 16:00:59 +0700 Subject: [PATCH 1/3] feature-9049: Make tracks and session types sortable similar to microlocations --- app/api/schema/session_types.py | 1 + app/api/schema/tracks.py | 1 + app/models/session_type.py | 1 + app/models/track.py | 1 + .../rev-2023-08-08-15:14:57-7e91153d66b0_.py | 34 +++++++++++++++++++ 5 files changed, 38 insertions(+) create mode 100644 migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py diff --git a/app/api/schema/session_types.py b/app/api/schema/session_types.py index 06cdec6f7c..aa2c8f1ce6 100644 --- a/app/api/schema/session_types.py +++ b/app/api/schema/session_types.py @@ -42,6 +42,7 @@ def validate_length(self, data): id = fields.Str(dump_only=True) name = fields.Str(required=True) length = fields.Str(required=True) + position = fields.Integer(allow_none=True, default=0) event = Relationship( self_view='v1.session_type_event', self_view_kwargs={'id': ''}, diff --git a/app/api/schema/tracks.py b/app/api/schema/tracks.py index cc816e60c9..483db80d19 100644 --- a/app/api/schema/tracks.py +++ b/app/api/schema/tracks.py @@ -42,6 +42,7 @@ def valid_color(self, data): description = fields.Str(allow_none=True) color = fields.Str(required=True) font_color = fields.Str(allow_none=True, dump_only=True) + position = fields.Integer(allow_none=True, default=0) event = Relationship( self_view='v1.track_event', self_view_kwargs={'id': ''}, diff --git a/app/models/session_type.py b/app/models/session_type.py index 9957f1f68e..6fda5d0472 100644 --- a/app/models/session_type.py +++ b/app/models/session_type.py @@ -7,6 +7,7 @@ class SessionType(SoftDeletionModel): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) length = db.Column(db.String, nullable=False) + position = db.Column(db.Integer, default=0, nullable=False) event_id = db.Column(db.Integer, db.ForeignKey('events.id', ondelete='CASCADE')) event = db.relationship("Event", backref="session_type", foreign_keys=[event_id]) sessions = db.relationship('Session', backref="session_type") diff --git a/app/models/track.py b/app/models/track.py index 6438531aca..5b5a6e7d63 100644 --- a/app/models/track.py +++ b/app/models/track.py @@ -12,6 +12,7 @@ class Track(SoftDeletionModel): color = db.Column(db.String, nullable=False) sessions = db.relationship('Session', backref='track') event_id = db.Column(db.Integer, db.ForeignKey('events.id', ondelete='CASCADE')) + position = db.Column(db.Integer, default=0, nullable=False) @staticmethod def get_service_name(): diff --git a/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py new file mode 100644 index 0000000000..575cf070e6 --- /dev/null +++ b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py @@ -0,0 +1,34 @@ +"""empty message + +Revision ID: 7e91153d66b0 +Revises: 8b5bc48e1d4c +Create Date: 2023-08-08 15:14:57.455117 + +""" + +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utils + + +# revision identifiers, used by Alembic. +revision = '7e91153d66b0' +down_revision = '8b5bc48e1d4c' + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('session_types', sa.Column('position', sa.Integer(), nullable=True)) + op.add_column('tracks', sa.Column('position', sa.Integer(), nullable=True)) + # ### end Alembic commands ### + op.execute("UPDATE session_types SET position = 0") + op.alter_column('session_types', 'position', nullable=False) + op.execute("UPDATE tracks SET position = 0") + op.alter_column('tracks', 'position', nullable=False) + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('tracks', 'position') + op.drop_column('session_types', 'position') + # ### end Alembic commands ### From 26bb9a1d9e38549bfbbe11443816c16789c7ed27 Mon Sep 17 00:00:00 2001 From: lthanhhieu Date: Wed, 9 Aug 2023 09:00:39 +0700 Subject: [PATCH 2/3] feature-9049: Make tracks and session types sortable similar to microlocations --- migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py | 1 - 1 file changed, 1 deletion(-) diff --git a/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py index 575cf070e6..07a110a4cb 100644 --- a/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py +++ b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py @@ -8,7 +8,6 @@ from alembic import op import sqlalchemy as sa -import sqlalchemy_utils # revision identifiers, used by Alembic. From 58ee9411501a870db8e97590848c94fde1fb6c8e Mon Sep 17 00:00:00 2001 From: lthanhhieu Date: Thu, 10 Aug 2023 09:52:07 +0700 Subject: [PATCH 3/3] feature-9049: Make tracks and session types sortable similar to microlocations --- migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py index 07a110a4cb..b257a54962 100644 --- a/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py +++ b/migrations/versions/rev-2023-08-08-15:14:57-7e91153d66b0_.py @@ -1,7 +1,7 @@ """empty message Revision ID: 7e91153d66b0 -Revises: 8b5bc48e1d4c +Revises: 3e8e18c0bebe Create Date: 2023-08-08 15:14:57.455117 """ @@ -12,7 +12,7 @@ # revision identifiers, used by Alembic. revision = '7e91153d66b0' -down_revision = '8b5bc48e1d4c' +down_revision = '3e8e18c0bebe' def upgrade():