Asterisk - The Open Source Telephony Project  18.5.0
31cd4f4891ec_add_auto_dtmf_mode.py
Go to the documentation of this file.
1 """Add auto DTMF mode
2 
3 Revision ID: 31cd4f4891ec
4 Revises: 23530d604b96
5 Create Date: 2015-04-10 12:36:51.619419
6 
7 """
8 
9 # revision identifiers, used by Alembic.
10 revision = '31cd4f4891ec'
11 down_revision = '23530d604b96'
12 
13 from alembic import op
14 from sqlalchemy.dialects.postgresql import ENUM
15 import sqlalchemy as sa
16 
17 OLD_ENUM = ['rfc4733', 'inband', 'info']
18 NEW_ENUM = ['rfc4733', 'inband', 'info', 'auto']
19 
20 old_type = sa.Enum(*OLD_ENUM, name='pjsip_dtmf_mode_values')
21 new_type = sa.Enum(*NEW_ENUM, name='pjsip_dtmf_mode_values_v2')
22 
23 def upgrade():
24  context = op.get_context()
25 
26  # Upgrading to this revision WILL clear your directmedia values.
27  if context.bind.dialect.name != 'postgresql':
28  op.alter_column('ps_endpoints', 'dtmf_mode',
29  type_=new_type,
30  existing_type=old_type)
31  else:
32  enum = ENUM('rfc4733', 'inband', 'info', 'auto',
33  name='pjsip_dtmf_mode_values_v2')
34  enum.create(op.get_bind(), checkfirst=False)
35 
36  op.execute('ALTER TABLE ps_endpoints ALTER COLUMN dtmf_mode TYPE'
37  ' pjsip_dtmf_mode_values_v2 USING'
38  ' dtmf_mode::text::pjsip_dtmf_mode_values_v2')
39 
40  ENUM(name="pjsip_dtmf_mode_values").drop(op.get_bind(), checkfirst=False)
41 
42 def downgrade():
43  context = op.get_context()
44 
45  if context.bind.dialect.name != 'postgresql':
46  op.alter_column('ps_endpoints', 'dtmf_mode',
47  type_=old_type,
48  existing_type=new_type)
49  else:
50  enum = ENUM('rfc4733', 'inband', 'info',
51  name='pjsip_dtmf_mode_values')
52  enum.create(op.get_bind(), checkfirst=False)
53 
54  op.execute('ALTER TABLE ps_endpoints ALTER COLUMN dtmf_mode TYPE'
55  ' pjsip_dtmf_mode_values USING'
56  ' dtmf_mode::text::pjsip_dtmf_mode_values')
57 
58  ENUM(name="pjsip_dtmf_mode_values_v2").drop(op.get_bind(), checkfirst=False)