45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """adjust invitation status
 | |
| 
 | |
| Revision ID: e1081cf01780
 | |
| Revises: a9d8c6b6221c
 | |
| Create Date: 2018-11-01 12:24:10.970963
 | |
| 
 | |
| """
 | |
| from alembic import op
 | |
| import sqlalchemy as sa
 | |
| from enum import Enum
 | |
| 
 | |
| # revision identifiers, used by Alembic.
 | |
| revision = 'e1081cf01780'
 | |
| down_revision = 'a9d8c6b6221c'
 | |
| branch_labels = None
 | |
| depends_on = None
 | |
| 
 | |
| 
 | |
| class Status(Enum):
 | |
|     ACCEPTED = "accepted"
 | |
|     REVOKED = "revoked"
 | |
|     PENDING = "pending"
 | |
|     REJECTED_WRONG_USER = "rejected_wrong_user"
 | |
|     REJECTED_EXPIRED = "rejected_expired"
 | |
| 
 | |
| def upgrade():
 | |
|     conn = op.get_bind()
 | |
|     constraints = ", ".join(["'{}'::character varying::text".format(s.name) for s in Status])
 | |
|     conn.execute("ALTER TABLE invitations ALTER COLUMN status TYPE varchar(30)")
 | |
|     conn.execute("ALTER TABLE invitations DROP CONSTRAINT status")
 | |
|     conn.execute("ALTER TABLE invitations ADD CONSTRAINT status CHECK(status::text = ANY (ARRAY[{}]))".format(constraints))
 | |
| 
 | |
| class PreviousStatus(Enum):
 | |
|     ACCEPTED = "accepted"
 | |
|     REVOKED = "revoked"
 | |
|     PENDING = "pending"
 | |
|     REJECTED = "rejected"
 | |
| 
 | |
| def downgrade():
 | |
|     conn = op.get_bind()
 | |
|     constraints = ", ".join(["'{}'::character varying::text".format(s.name) for s in PreviousStatus])
 | |
|     conn.execute("ALTER TABLE invitations ALTER COLUMN status TYPE varchar(8)")
 | |
|     conn.execute("ALTER TABLE invitations DROP CONSTRAINT status")
 | |
|     conn.execute("ALTER TABLE invitations ADD CONSTRAINT status CHECK(status::text = ANY (ARRAY[{}]))".format(constraints))
 |