Açıklama Yok

c773a35c280f_update_tasks_status.py 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. """Update tasks status
  2. Revision ID: c773a35c280f
  3. Revises: 0db700644a4f
  4. Create Date: 2022-01-18 07:51:43.714021
  5. """
  6. import sqlalchemy as sa
  7. from alembic import op
  8. from sqlalchemy import text
  9. from app.alembic.alembic_utils import _table_has_column
  10. # revision identifiers, used by Alembic.
  11. revision = 'c773a35c280f'
  12. down_revision = '0db700644a4f'
  13. branch_labels = None
  14. depends_on = None
  15. def upgrade():
  16. if not _table_has_column('case_tasks', 'task_status_id'):
  17. op.add_column('case_tasks',
  18. sa.Column('task_status_id', sa.Integer, sa.ForeignKey('task_status.id'))
  19. )
  20. # Add the foreign key of ioc_type to ioc
  21. op.create_foreign_key(
  22. constraint_name='task_task_status_id',
  23. source_table="case_tasks",
  24. referent_table="task_status",
  25. local_cols=["task_status_id"],
  26. remote_cols=["id"])
  27. if _table_has_column('case_tasks', 'task_status'):
  28. # Set schema and make migration of data
  29. t_tasks = sa.Table(
  30. 'case_tasks',
  31. sa.MetaData(),
  32. sa.Column('id', sa.Integer, primary_key=True),
  33. sa.Column('task_title', sa.Text),
  34. sa.Column('task_status', sa.Text),
  35. sa.Column('task_status_id', sa.ForeignKey('task_status.id')),
  36. )
  37. to_update = ['To do', 'In progress', 'On hold', 'Done', 'Canceled']
  38. # Migrate existing IOCs
  39. for update in to_update:
  40. conn = op.get_bind()
  41. res = conn.execute(text(f"select id from case_tasks where task_status = '{update}';"))
  42. results = res.fetchall()
  43. res = conn.execute(text(f"select id from task_status where status_name = '{update}';"))
  44. e_info = res.fetchall()
  45. if e_info:
  46. status_id = e_info[0][0]
  47. for res in results:
  48. conn.execute(t_tasks.update().where(t_tasks.c.id == res[0]).values(
  49. task_status_id=status_id
  50. ))
  51. op.drop_column(
  52. table_name='case_tasks',
  53. column_name='task_status'
  54. )
  55. if not _table_has_column('global_tasks', 'task_status_id'):
  56. op.add_column('global_tasks',
  57. sa.Column('task_status_id', sa.Integer, sa.ForeignKey('task_status.id'))
  58. )
  59. # Add the foreign key of ioc_type to ioc
  60. op.create_foreign_key(
  61. constraint_name='global_task_status_id',
  62. source_table="global_tasks",
  63. referent_table="task_status",
  64. local_cols=["task_status_id"],
  65. remote_cols=["id"])
  66. if _table_has_column('global_tasks', 'task_status'):
  67. # Set schema and make migration of data
  68. tg_tasks = sa.Table(
  69. 'global_tasks',
  70. sa.MetaData(),
  71. sa.Column('id', sa.Integer, primary_key=True),
  72. sa.Column('task_title', sa.Text),
  73. sa.Column('task_status', sa.Text),
  74. sa.Column('task_status_id', sa.ForeignKey('task_status.id')),
  75. )
  76. to_update = ['To do', 'In progress', 'On hold', 'Done', 'Canceled']
  77. # Migrate existing IOCs
  78. for update in to_update:
  79. conn = op.get_bind()
  80. res = conn.execute(text(f"select id from global_tasks where task_status = '{update}';"))
  81. results = res.fetchall()
  82. res = conn.execute(text(f"select id from task_status where status_name = '{update}';"))
  83. e_info = res.fetchall()
  84. if e_info:
  85. status_id = e_info[0][0]
  86. for res in results:
  87. conn.execute(tg_tasks.update().where(tg_tasks.c.id == res[0]).values(
  88. task_status_id=status_id
  89. ))
  90. op.drop_column(
  91. table_name='global_tasks',
  92. column_name='task_status'
  93. )
  94. pass
  95. def downgrade():
  96. pass