4da0c5f79a9c_create_tables.py 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. #
  2. # Asterisk -- An open source telephony toolkit.
  3. #
  4. # Copyright (C) 2013, Russell Bryant
  5. #
  6. # Russell Bryant <russell@rusellbryant.net>
  7. #
  8. # See http://www.asterisk.org for more information about
  9. # the Asterisk project. Please do not directly contact
  10. # any of the maintainers of this project for assistance;
  11. # the project provides a web site, mailing lists and IRC
  12. # channels for your use.
  13. #
  14. # This program is free software, distributed under the terms of
  15. # the GNU General Public License Version 2. See the LICENSE file
  16. # at the top of the source tree.
  17. #
  18. """Create tables
  19. Revision ID: 4da0c5f79a9c
  20. Revises: None
  21. Create Date: 2013-07-28 12:28:03.091587
  22. """
  23. # revision identifiers, used by Alembic.
  24. revision = '4da0c5f79a9c'
  25. down_revision = None
  26. from alembic import op
  27. import sqlalchemy as sa
  28. YESNO_VALUES = ['yes', 'no']
  29. TYPE_VALUES = ['friend', 'user', 'peer']
  30. SIP_TRANSPORT_VALUES = ['udp', 'tcp', 'tls', 'ws', 'wss', 'udp,tcp', 'tcp,udp']
  31. SIP_DTMFMODE_VALUES = ['rfc2833', 'info', 'shortinfo', 'inband', 'auto']
  32. SIP_DIRECTMEDIA_VALUES = ['yes', 'no', 'nonat', 'update']
  33. SIP_PROGRESSINBAND_VALUES = ['yes', 'no', 'never']
  34. SIP_SESSION_TIMERS_VALUES = ['accept', 'refuse', 'originate']
  35. SIP_SESSION_REFRESHER_VALUES = ['uac', 'uas']
  36. SIP_CALLINGPRES_VALUES = ['allowed_not_screened', 'allowed_passed_screen',
  37. 'allowed_failed_screen', 'allowed',
  38. 'prohib_not_screened', 'prohib_passed_screen',
  39. 'prohib_failed_screen', 'prohib']
  40. IAX_REQUIRECALLTOKEN_VALUES = ['yes', 'no', 'auto']
  41. IAX_ENCRYPTION_VALUES = ['yes', 'no', 'aes128']
  42. IAX_TRANSFER_VALUES = ['yes', 'no', 'mediaonly']
  43. MOH_MODE_VALUES = ['custom', 'files', 'mp3nb', 'quietmp3nb', 'quietmp3']
  44. def upgrade():
  45. op.create_table(
  46. 'sippeers',
  47. sa.Column('id', sa.Integer, primary_key=True, nullable=False,
  48. autoincrement=True),
  49. sa.Column('name', sa.String(40), nullable=False, unique=True),
  50. sa.Column('ipaddr', sa.String(45)),
  51. sa.Column('port', sa.Integer),
  52. sa.Column('regseconds', sa.Integer),
  53. sa.Column('defaultuser', sa.String(40)),
  54. sa.Column('fullcontact', sa.String(80)),
  55. sa.Column('regserver', sa.String(20)),
  56. sa.Column('useragent', sa.String(20)),
  57. sa.Column('lastms', sa.Integer),
  58. sa.Column('host', sa.String(40)),
  59. sa.Column('type', sa.Enum(*TYPE_VALUES, name='type_values')),
  60. sa.Column('context', sa.String(40)),
  61. sa.Column('permit', sa.String(95)),
  62. sa.Column('deny', sa.String(95)),
  63. sa.Column('secret', sa.String(40)),
  64. sa.Column('md5secret', sa.String(40)),
  65. sa.Column('remotesecret', sa.String(40)),
  66. sa.Column('transport', sa.Enum(*SIP_TRANSPORT_VALUES,
  67. name='sip_transport_values')),
  68. sa.Column('dtmfmode', sa.Enum(*SIP_DTMFMODE_VALUES,
  69. name='sip_dtmfmode_values')),
  70. sa.Column('directmedia', sa.Enum(*SIP_DIRECTMEDIA_VALUES,
  71. name='sip_directmedia_values')),
  72. sa.Column('nat', sa.String(29)),
  73. sa.Column('callgroup', sa.String(40)),
  74. sa.Column('pickupgroup', sa.String(40)),
  75. sa.Column('language', sa.String(40)),
  76. sa.Column('disallow', sa.String(200)),
  77. sa.Column('allow', sa.String(200)),
  78. sa.Column('insecure', sa.String(40)),
  79. sa.Column('trustrpid', sa.Enum(*YESNO_VALUES,
  80. name='yes_no_values')),
  81. sa.Column('progressinband', sa.Enum(*SIP_PROGRESSINBAND_VALUES,
  82. name='sip_progressinband_values')),
  83. sa.Column('promiscredir', sa.Enum(*YESNO_VALUES,
  84. name='yes_no_values')),
  85. sa.Column('useclientcode', sa.Enum(*YESNO_VALUES,
  86. name='yes_no_values')),
  87. sa.Column('accountcode', sa.String(40)),
  88. sa.Column('setvar', sa.String(200)),
  89. sa.Column('callerid', sa.String(40)),
  90. sa.Column('amaflags', sa.String(40)),
  91. sa.Column('callcounter', sa.Enum(*YESNO_VALUES,
  92. name='yes_no_values')),
  93. sa.Column('busylevel', sa.Integer),
  94. sa.Column('allowoverlap', sa.Enum(*YESNO_VALUES,
  95. name='yes_no_values')),
  96. sa.Column('allowsubscribe', sa.Enum(*YESNO_VALUES,
  97. name='yes_no_values')),
  98. sa.Column('videosupport', sa.Enum(*YESNO_VALUES,
  99. name='yes_no_values')),
  100. sa.Column('maxcallbitrate', sa.Integer),
  101. sa.Column('rfc2833compensate', sa.Enum(*YESNO_VALUES,
  102. name='yes_no_values')),
  103. sa.Column('mailbox', sa.String(40)),
  104. sa.Column('session-timers', sa.Enum(*SIP_SESSION_TIMERS_VALUES,
  105. name='sip_session_timers_values')),
  106. sa.Column('session-expires', sa.Integer),
  107. sa.Column('session-minse', sa.Integer),
  108. sa.Column('session-refresher', sa.Enum(*SIP_SESSION_REFRESHER_VALUES,
  109. name='sip_session_refresher_values')),
  110. sa.Column('t38pt_usertpsource', sa.String(40)),
  111. sa.Column('regexten', sa.String(40)),
  112. sa.Column('fromdomain', sa.String(40)),
  113. sa.Column('fromuser', sa.String(40)),
  114. sa.Column('qualify', sa.String(40)),
  115. sa.Column('defaultip', sa.String(45)),
  116. sa.Column('rtptimeout', sa.Integer),
  117. sa.Column('rtpholdtimeout', sa.Integer),
  118. sa.Column('sendrpid', sa.Enum(*YESNO_VALUES,
  119. name='yes_no_values')),
  120. sa.Column('outboundproxy', sa.String(40)),
  121. sa.Column('callbackextension', sa.String(40)),
  122. sa.Column('timert1', sa.Integer),
  123. sa.Column('timerb', sa.Integer),
  124. sa.Column('qualifyfreq', sa.Integer),
  125. sa.Column('constantssrc', sa.Enum(*YESNO_VALUES,
  126. name='yes_no_values')),
  127. sa.Column('contactpermit', sa.String(95)),
  128. sa.Column('contactdeny', sa.String(95)),
  129. sa.Column('usereqphone', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  130. sa.Column('textsupport', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  131. sa.Column('faxdetect', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  132. sa.Column('buggymwi', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  133. sa.Column('auth', sa.String(40)),
  134. sa.Column('fullname', sa.String(40)),
  135. sa.Column('trunkname', sa.String(40)),
  136. sa.Column('cid_number', sa.String(40)),
  137. sa.Column('callingpres', sa.Enum(*SIP_CALLINGPRES_VALUES,
  138. name='sip_callingpres_values')),
  139. sa.Column('mohinterpret', sa.String(40)),
  140. sa.Column('mohsuggest', sa.String(40)),
  141. sa.Column('parkinglot', sa.String(40)),
  142. sa.Column('hasvoicemail', sa.Enum(*YESNO_VALUES,
  143. name='yes_no_values')),
  144. sa.Column('subscribemwi', sa.Enum(*YESNO_VALUES,
  145. name='yes_no_values')),
  146. sa.Column('vmexten', sa.String(40)),
  147. sa.Column('autoframing', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  148. sa.Column('rtpkeepalive', sa.Integer),
  149. sa.Column('call-limit', sa.Integer),
  150. sa.Column('g726nonstandard', sa.Enum(*YESNO_VALUES,
  151. name='yes_no_values')),
  152. sa.Column('ignoresdpversion', sa.Enum(*YESNO_VALUES,
  153. name='yes_no_values')),
  154. sa.Column('allowtransfer', sa.Enum(*YESNO_VALUES,
  155. name='yes_no_values')),
  156. sa.Column('dynamic', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  157. sa.Column('path', sa.String(256)),
  158. sa.Column('supportpath', sa.Enum(*YESNO_VALUES, name='yes_no_values'))
  159. )
  160. op.create_index('sippeers_name', 'sippeers', ['name'])
  161. op.create_index('sippeers_name_host', 'sippeers', ['name', 'host'])
  162. op.create_index('sippeers_ipaddr_port', 'sippeers', ['ipaddr', 'port'])
  163. op.create_index('sippeers_host_port', 'sippeers', ['host', 'port'])
  164. op.create_table(
  165. 'iaxfriends',
  166. sa.Column('id', sa.Integer, primary_key=True, nullable=False,
  167. autoincrement=True),
  168. sa.Column('name', sa.String(40), nullable=False, unique=True),
  169. sa.Column('type', sa.Enum(*TYPE_VALUES, name='type_values')),
  170. sa.Column('username', sa.String(40)),
  171. sa.Column('mailbox', sa.String(40)),
  172. sa.Column('secret', sa.String(40)),
  173. sa.Column('dbsecret', sa.String(40)),
  174. sa.Column('context', sa.String(40)),
  175. sa.Column('regcontext', sa.String(40)),
  176. sa.Column('host', sa.String(40)),
  177. sa.Column('ipaddr', sa.String(40)),
  178. sa.Column('port', sa.Integer),
  179. sa.Column('defaultip', sa.String(20)),
  180. sa.Column('sourceaddress', sa.String(20)),
  181. sa.Column('mask', sa.String(20)),
  182. sa.Column('regexten', sa.String(40)),
  183. sa.Column('regseconds', sa.Integer),
  184. sa.Column('accountcode', sa.String(20)),
  185. sa.Column('mohinterpret', sa.String(20)),
  186. sa.Column('mohsuggest', sa.String(20)),
  187. sa.Column('inkeys', sa.String(40)),
  188. sa.Column('outkeys', sa.String(40)),
  189. sa.Column('language', sa.String(10)),
  190. sa.Column('callerid', sa.String(100)),
  191. sa.Column('cid_number', sa.String(40)),
  192. sa.Column('sendani', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  193. sa.Column('fullname', sa.String(40)),
  194. sa.Column('trunk', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  195. sa.Column('auth', sa.String(20)),
  196. sa.Column('maxauthreq', sa.Integer),
  197. sa.Column('requirecalltoken', sa.Enum(*IAX_REQUIRECALLTOKEN_VALUES,
  198. name='iax_requirecalltoken_values')),
  199. sa.Column('encryption', sa.Enum(*IAX_ENCRYPTION_VALUES,
  200. name='iax_encryption_values')),
  201. sa.Column('transfer', sa.Enum(*IAX_TRANSFER_VALUES,
  202. name='iax_transfer_values')),
  203. sa.Column('jitterbuffer', sa.Enum(*YESNO_VALUES,
  204. name='yes_no_values')),
  205. sa.Column('forcejitterbuffer', sa.Enum(*YESNO_VALUES,
  206. name='yes_no_values')),
  207. sa.Column('disallow', sa.String(200)),
  208. sa.Column('allow', sa.String(200)),
  209. sa.Column('codecpriority', sa.String(40)),
  210. sa.Column('qualify', sa.String(10)),
  211. sa.Column('qualifysmoothing',
  212. sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  213. sa.Column('qualifyfreqok', sa.String(10)),
  214. sa.Column('qualifyfreqnotok', sa.String(10)),
  215. sa.Column('timezone', sa.String(20)),
  216. sa.Column('adsi', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  217. sa.Column('amaflags', sa.String(20)),
  218. sa.Column('setvar', sa.String(200))
  219. )
  220. op.create_index('iaxfriends_name', 'iaxfriends', ['name'])
  221. op.create_index('iaxfriends_name_host', 'iaxfriends', ['name', 'host'])
  222. op.create_index('iaxfriends_name_ipaddr_port', 'iaxfriends',
  223. ['name', 'ipaddr', 'port'])
  224. op.create_index('iaxfriends_ipaddr_port', 'iaxfriends', ['ipaddr', 'port'])
  225. op.create_index('iaxfriends_host_port', 'iaxfriends', ['host', 'port'])
  226. op.create_table(
  227. 'voicemail',
  228. sa.Column('uniqueid', sa.Integer, primary_key=True, nullable=False,
  229. autoincrement=True),
  230. sa.Column('context', sa.String(80), nullable=False),
  231. sa.Column('mailbox', sa.String(80), nullable=False),
  232. sa.Column('password', sa.String(80), nullable=False),
  233. sa.Column('fullname', sa.String(80)),
  234. sa.Column('alias', sa.String(80)),
  235. sa.Column('email', sa.String(80)),
  236. sa.Column('pager', sa.String(80)),
  237. sa.Column('attach', sa.Enum(*YESNO_VALUES, name='yes_no_values')),
  238. sa.Column('attachfmt', sa.String(10)),
  239. sa.Column('serveremail', sa.String(80)),
  240. sa.Column('language', sa.String(20)),
  241. sa.Column('tz', sa.String(30)),
  242. sa.Column('deletevoicemail', sa.Enum(*YESNO_VALUES,
  243. name='yes_no_values')),
  244. sa.Column('saycid', sa.Enum(*YESNO_VALUES,
  245. name='yes_no_values')),
  246. sa.Column('sendvoicemail', sa.Enum(*YESNO_VALUES,
  247. name='yes_no_values')),
  248. sa.Column('review', sa.Enum(*YESNO_VALUES,
  249. name='yes_no_values')),
  250. sa.Column('tempgreetwarn', sa.Enum(*YESNO_VALUES,
  251. name='yes_no_values')),
  252. sa.Column('operator', sa.Enum(*YESNO_VALUES,
  253. name='yes_no_values')),
  254. sa.Column('envelope', sa.Enum(*YESNO_VALUES,
  255. name='yes_no_values')),
  256. sa.Column('sayduration', sa.Integer),
  257. sa.Column('forcename', sa.Enum(*YESNO_VALUES,
  258. name='yes_no_values')),
  259. sa.Column('forcegreetings', sa.Enum(*YESNO_VALUES,
  260. name='yes_no_values')),
  261. sa.Column('callback', sa.String(80)),
  262. sa.Column('dialout', sa.String(80)),
  263. sa.Column('exitcontext', sa.String(80)),
  264. sa.Column('maxmsg', sa.Integer),
  265. sa.Column('volgain', sa.Numeric(precision=5, scale=2)),
  266. sa.Column('imapuser', sa.String(80)),
  267. sa.Column('imappassword', sa.String(80)),
  268. sa.Column('imapserver', sa.String(80)),
  269. sa.Column('imapport', sa.String(8)),
  270. sa.Column('imapflags', sa.String(80)),
  271. sa.Column('stamp', sa.DateTime())
  272. )
  273. op.create_index('voicemail_mailbox', 'voicemail', ['mailbox'])
  274. op.create_index('voicemail_context', 'voicemail', ['context'])
  275. op.create_index('voicemail_mailbox_context', 'voicemail',
  276. ['mailbox', 'context'])
  277. op.create_index('voicemail_imapuser', 'voicemail', ['imapuser'])
  278. op.create_table(
  279. 'meetme',
  280. sa.Column('bookid', sa.Integer, primary_key=True, nullable=False,
  281. autoincrement=True),
  282. sa.Column('confno', sa.String(80), nullable=False),
  283. sa.Column('starttime', sa.DateTime()),
  284. sa.Column('endtime', sa.DateTime()),
  285. sa.Column('pin', sa.String(20)),
  286. sa.Column('adminpin', sa.String(20)),
  287. sa.Column('opts', sa.String(20)),
  288. sa.Column('adminopts', sa.String(20)),
  289. sa.Column('recordingfilename', sa.String(80)),
  290. sa.Column('recordingformat', sa.String(10)),
  291. sa.Column('maxusers', sa.Integer),
  292. sa.Column('members', sa.Integer, nullable=False, default=0)
  293. )
  294. op.create_index('meetme_confno_start_end', 'meetme',
  295. ['confno', 'starttime', 'endtime'])
  296. op.create_table(
  297. 'musiconhold',
  298. sa.Column('name', sa.String(80), primary_key=True, nullable=False),
  299. sa.Column('mode', sa.Enum(*MOH_MODE_VALUES, name='moh_mode_values')),
  300. sa.Column('directory', sa.String(255)),
  301. sa.Column('application', sa.String(255)),
  302. sa.Column('digit', sa.String(1)),
  303. sa.Column('sort', sa.String(10)),
  304. sa.Column('format', sa.String(10)),
  305. sa.Column('stamp', sa.DateTime())
  306. )
  307. def downgrade():
  308. op.drop_table('sippeers')
  309. op.drop_table('iaxfriends')
  310. op.drop_table('voicemail')
  311. op.drop_table('meetme')
  312. op.drop_table('musiconhold')