feat: add shared task assignments and quick win sorting
This commit is contained in:
@@ -21,6 +21,21 @@ def ensure_schema_and_admins() -> None:
|
||||
db.session.execute(text("ALTER TABLE user ADD COLUMN calendar_feed_token VARCHAR(255)"))
|
||||
db.session.commit()
|
||||
|
||||
task_template_columns = {column["name"] for column in inspector.get_columns("task_template")}
|
||||
if "default_assigned_user_secondary_id" not in task_template_columns:
|
||||
db.session.execute(text("ALTER TABLE task_template ADD COLUMN default_assigned_user_secondary_id INTEGER"))
|
||||
db.session.commit()
|
||||
|
||||
task_instance_columns = {column["name"] for column in inspector.get_columns("task_instance")}
|
||||
if "assigned_user_secondary_id" not in task_instance_columns:
|
||||
db.session.execute(text("ALTER TABLE task_instance ADD COLUMN assigned_user_secondary_id INTEGER"))
|
||||
db.session.commit()
|
||||
|
||||
quick_win_columns = {column["name"] for column in inspector.get_columns("quick_win")}
|
||||
if "sort_order" not in quick_win_columns:
|
||||
db.session.execute(text("ALTER TABLE quick_win ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0"))
|
||||
db.session.commit()
|
||||
|
||||
ensure_app_settings()
|
||||
|
||||
users_without_feed = User.query.filter(User.calendar_feed_token.is_(None)).all()
|
||||
@@ -46,6 +61,7 @@ def ensure_schema_and_admins() -> None:
|
||||
default_quick_win_user = first_user
|
||||
|
||||
_ensure_default_quick_wins(default_quick_win_user or User.query.order_by(User.id.asc()).first())
|
||||
_ensure_quick_win_ordering()
|
||||
|
||||
|
||||
def _ensure_default_quick_wins(default_user: User | None) -> None:
|
||||
@@ -62,6 +78,7 @@ def _ensure_default_quick_wins(default_user: User | None) -> None:
|
||||
|
||||
existing_titles = {quick_win.title for quick_win in QuickWin.query.all()}
|
||||
created = False
|
||||
next_sort_order = QuickWin.query.count()
|
||||
for title, effort in defaults:
|
||||
if title not in existing_titles:
|
||||
db.session.add(
|
||||
@@ -70,8 +87,21 @@ def _ensure_default_quick_wins(default_user: User | None) -> None:
|
||||
effort=effort,
|
||||
active=True,
|
||||
created_by_user_id=default_user.id,
|
||||
sort_order=next_sort_order,
|
||||
)
|
||||
)
|
||||
next_sort_order += 1
|
||||
created = True
|
||||
if created:
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def _ensure_quick_win_ordering() -> None:
|
||||
quick_wins = QuickWin.query.order_by(QuickWin.sort_order.asc(), QuickWin.id.asc()).all()
|
||||
dirty = False
|
||||
for index, quick_win in enumerate(quick_wins):
|
||||
if quick_win.sort_order != index:
|
||||
quick_win.sort_order = index
|
||||
dirty = True
|
||||
if dirty:
|
||||
db.session.commit()
|
||||
|
||||
Reference in New Issue
Block a user