15305f71bfda_fill_content_file_extension_column.py 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. """fill content file_extension column
  2. Revision ID: 15305f71bfda
  3. Revises: e31ddc009b37
  4. Create Date: 2016-11-25 10:50:01.874820
  5. """
  6. # revision identifiers, used by Alembic.
  7. import os
  8. revision = '15305f71bfda'
  9. down_revision = 'e31ddc009b37'
  10. from alembic import op
  11. import sqlalchemy as sa
  12. content_revision_helper = sa.Table(
  13. 'content_revisions',
  14. sa.MetaData(),
  15. sa.Column('revision_id', sa.Integer, primary_key=True),
  16. sa.Column('content_id', sa.ForeignKey(u'content.id'), nullable=False),
  17. sa.Column('owner_id', sa.ForeignKey(u'users.user_id'), index=True),
  18. sa.Column('label', sa.String(1024), nullable=False),
  19. sa.Column('description', sa.Text, nullable=False),
  20. sa.Column('file_name', sa.String(255), nullable=False),
  21. sa.Column('file_extension', sa.String(255), nullable=False),
  22. sa.Column('file_mimetype', sa.String(255), nullable=False),
  23. sa.Column('file_content', sa.LargeBinary),
  24. sa.Column('properties', sa.Text, nullable=False),
  25. sa.Column('type', sa.String(32), nullable=False),
  26. sa.Column('status', sa.String(32), nullable=False),
  27. sa.Column('created', sa.DateTime, nullable=False),
  28. sa.Column('updated', sa.DateTime, nullable=False),
  29. sa.Column('is_deleted', sa.Boolean, nullable=False),
  30. sa.Column('is_archived', sa.Boolean, nullable=False),
  31. sa.Column('is_temporary', sa.Boolean, nullable=False),
  32. sa.Column('revision_type', sa.String(32), nullable=False),
  33. sa.Column('workspace_id', sa.ForeignKey(u'workspaces.workspace_id')),
  34. sa.Column('parent_id', sa.ForeignKey(u'content.id'), index=True),
  35. )
  36. def upgrade():
  37. connection = op.get_bind()
  38. for content_revision in connection.execute(
  39. content_revision_helper.select()
  40. ):
  41. # On work with FILE
  42. if content_revision.type == 'file':
  43. file_name, file_extension = \
  44. os.path.splitext(content_revision.file_name)
  45. # Don't touch label if already set
  46. if content_revision.label:
  47. new_label = content_revision.label
  48. # Label will be file name without extension
  49. else:
  50. new_label = file_name
  51. # Update record
  52. connection.execute(
  53. content_revision_helper.update()
  54. .where(
  55. content_revision_helper.c.revision_id ==
  56. content_revision.revision_id
  57. ).values(
  58. label=new_label,
  59. file_extension=file_extension,
  60. )
  61. )
  62. def downgrade():
  63. pass