dm_event 4.2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +23 -0
  3. data/README.md +33 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/images/dm_event/payment_logos/sofort/at/100x38.png +0 -0
  6. data/app/assets/images/dm_event/payment_logos/sofort/at/200x75.png +0 -0
  7. data/app/assets/images/dm_event/payment_logos/sofort/at/250x94.png +0 -0
  8. data/app/assets/images/dm_event/payment_logos/sofort/at/28x7.png +0 -0
  9. data/app/assets/images/dm_event/payment_logos/sofort/at/320x120.png +0 -0
  10. data/app/assets/images/dm_event/payment_logos/sofort/at/42x11.png +0 -0
  11. data/app/assets/images/dm_event/payment_logos/sofort/at/75x28.png +0 -0
  12. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x22.png +0 -0
  13. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-32x24.png +0 -0
  14. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x32.png +0 -0
  15. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-48x34.png +0 -0
  16. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x42.png +0 -0
  17. data/app/assets/images/dm_event/payment_logos/sofort/at/icon-64x44.png +0 -0
  18. data/app/assets/images/dm_event/payment_logos/sofort/be/100x38.png +0 -0
  19. data/app/assets/images/dm_event/payment_logos/sofort/be/200x75.png +0 -0
  20. data/app/assets/images/dm_event/payment_logos/sofort/be/250x94.png +0 -0
  21. data/app/assets/images/dm_event/payment_logos/sofort/be/28x7.png +0 -0
  22. data/app/assets/images/dm_event/payment_logos/sofort/be/320x120.png +0 -0
  23. data/app/assets/images/dm_event/payment_logos/sofort/be/42x11.png +0 -0
  24. data/app/assets/images/dm_event/payment_logos/sofort/be/75x28.png +0 -0
  25. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x22.png +0 -0
  26. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-32x24.png +0 -0
  27. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x32.png +0 -0
  28. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-48x34.png +0 -0
  29. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x42.png +0 -0
  30. data/app/assets/images/dm_event/payment_logos/sofort/be/icon-64x44.png +0 -0
  31. data/app/assets/images/dm_event/payment_logos/sofort/ch/100x38.png +0 -0
  32. data/app/assets/images/dm_event/payment_logos/sofort/ch/200x75.png +0 -0
  33. data/app/assets/images/dm_event/payment_logos/sofort/ch/250x94.png +0 -0
  34. data/app/assets/images/dm_event/payment_logos/sofort/ch/28x7.png +0 -0
  35. data/app/assets/images/dm_event/payment_logos/sofort/ch/320x120.png +0 -0
  36. data/app/assets/images/dm_event/payment_logos/sofort/ch/42x11.png +0 -0
  37. data/app/assets/images/dm_event/payment_logos/sofort/ch/75x28.png +0 -0
  38. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x22.png +0 -0
  39. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-32x24.png +0 -0
  40. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x32.png +0 -0
  41. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-48x34.png +0 -0
  42. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x42.png +0 -0
  43. data/app/assets/images/dm_event/payment_logos/sofort/ch/icon-64x44.png +0 -0
  44. data/app/assets/images/dm_event/payment_logos/sofort/de/100x38.png +0 -0
  45. data/app/assets/images/dm_event/payment_logos/sofort/de/200x75.png +0 -0
  46. data/app/assets/images/dm_event/payment_logos/sofort/de/250x94.png +0 -0
  47. data/app/assets/images/dm_event/payment_logos/sofort/de/28x7.png +0 -0
  48. data/app/assets/images/dm_event/payment_logos/sofort/de/320x120.png +0 -0
  49. data/app/assets/images/dm_event/payment_logos/sofort/de/42x11.png +0 -0
  50. data/app/assets/images/dm_event/payment_logos/sofort/de/75x28.png +0 -0
  51. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x22.png +0 -0
  52. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-32x24.png +0 -0
  53. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x32.png +0 -0
  54. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-48x34.png +0 -0
  55. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x42.png +0 -0
  56. data/app/assets/images/dm_event/payment_logos/sofort/de/icon-64x44.png +0 -0
  57. data/app/assets/images/dm_event/payment_logos/sofort/es/100x38.png +0 -0
  58. data/app/assets/images/dm_event/payment_logos/sofort/es/200x75.png +0 -0
  59. data/app/assets/images/dm_event/payment_logos/sofort/es/250x94.png +0 -0
  60. data/app/assets/images/dm_event/payment_logos/sofort/es/28x7.png +0 -0
  61. data/app/assets/images/dm_event/payment_logos/sofort/es/320x120.png +0 -0
  62. data/app/assets/images/dm_event/payment_logos/sofort/es/42x11.png +0 -0
  63. data/app/assets/images/dm_event/payment_logos/sofort/es/75x28.png +0 -0
  64. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x22.png +0 -0
  65. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-32x24.png +0 -0
  66. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x32.png +0 -0
  67. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-48x34.png +0 -0
  68. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x42.png +0 -0
  69. data/app/assets/images/dm_event/payment_logos/sofort/es/icon-64x44.png +0 -0
  70. data/app/assets/images/dm_event/payment_logos/sofort/fr/100x38.png +0 -0
  71. data/app/assets/images/dm_event/payment_logos/sofort/fr/200x75.png +0 -0
  72. data/app/assets/images/dm_event/payment_logos/sofort/fr/250x94.png +0 -0
  73. data/app/assets/images/dm_event/payment_logos/sofort/fr/28x7.png +0 -0
  74. data/app/assets/images/dm_event/payment_logos/sofort/fr/320x120.png +0 -0
  75. data/app/assets/images/dm_event/payment_logos/sofort/fr/42x11.png +0 -0
  76. data/app/assets/images/dm_event/payment_logos/sofort/fr/75x28.png +0 -0
  77. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x22.png +0 -0
  78. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-32x24.png +0 -0
  79. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x32.png +0 -0
  80. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-48x34.png +0 -0
  81. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x42.png +0 -0
  82. data/app/assets/images/dm_event/payment_logos/sofort/fr/icon-64x44.png +0 -0
  83. data/app/assets/images/dm_event/payment_logos/sofort/it/100x38.png +0 -0
  84. data/app/assets/images/dm_event/payment_logos/sofort/it/200x75.png +0 -0
  85. data/app/assets/images/dm_event/payment_logos/sofort/it/250x94.png +0 -0
  86. data/app/assets/images/dm_event/payment_logos/sofort/it/28x7.png +0 -0
  87. data/app/assets/images/dm_event/payment_logos/sofort/it/320x120.png +0 -0
  88. data/app/assets/images/dm_event/payment_logos/sofort/it/42x11.png +0 -0
  89. data/app/assets/images/dm_event/payment_logos/sofort/it/75x28.png +0 -0
  90. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x22.png +0 -0
  91. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-32x24.png +0 -0
  92. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x32.png +0 -0
  93. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-48x34.png +0 -0
  94. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x42.png +0 -0
  95. data/app/assets/images/dm_event/payment_logos/sofort/it/icon-64x44.png +0 -0
  96. data/app/assets/images/dm_event/payment_logos/sofort/nl/100x38.png +0 -0
  97. data/app/assets/images/dm_event/payment_logos/sofort/nl/200x75.png +0 -0
  98. data/app/assets/images/dm_event/payment_logos/sofort/nl/250x94.png +0 -0
  99. data/app/assets/images/dm_event/payment_logos/sofort/nl/28x7.png +0 -0
  100. data/app/assets/images/dm_event/payment_logos/sofort/nl/320x120.png +0 -0
  101. data/app/assets/images/dm_event/payment_logos/sofort/nl/42x11.png +0 -0
  102. data/app/assets/images/dm_event/payment_logos/sofort/nl/75x28.png +0 -0
  103. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x22.png +0 -0
  104. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-32x24.png +0 -0
  105. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x32.png +0 -0
  106. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-48x34.png +0 -0
  107. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x42.png +0 -0
  108. data/app/assets/images/dm_event/payment_logos/sofort/nl/icon-64x44.png +0 -0
  109. data/app/assets/images/dm_event/payment_logos/sofort/pl/100x38.png +0 -0
  110. data/app/assets/images/dm_event/payment_logos/sofort/pl/200x75.png +0 -0
  111. data/app/assets/images/dm_event/payment_logos/sofort/pl/250x94.png +0 -0
  112. data/app/assets/images/dm_event/payment_logos/sofort/pl/28x7.png +0 -0
  113. data/app/assets/images/dm_event/payment_logos/sofort/pl/320x120.png +0 -0
  114. data/app/assets/images/dm_event/payment_logos/sofort/pl/42x11.png +0 -0
  115. data/app/assets/images/dm_event/payment_logos/sofort/pl/75x28.png +0 -0
  116. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x22.png +0 -0
  117. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-32x24.png +0 -0
  118. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x32.png +0 -0
  119. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-48x34.png +0 -0
  120. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x42.png +0 -0
  121. data/app/assets/images/dm_event/payment_logos/sofort/pl/icon-64x44.png +0 -0
  122. data/app/assets/images/dm_event/payment_logos/sofort/uk/100x38.png +0 -0
  123. data/app/assets/images/dm_event/payment_logos/sofort/uk/200x75.png +0 -0
  124. data/app/assets/images/dm_event/payment_logos/sofort/uk/250x94.png +0 -0
  125. data/app/assets/images/dm_event/payment_logos/sofort/uk/28x7.png +0 -0
  126. data/app/assets/images/dm_event/payment_logos/sofort/uk/320x120.png +0 -0
  127. data/app/assets/images/dm_event/payment_logos/sofort/uk/42x11.png +0 -0
  128. data/app/assets/images/dm_event/payment_logos/sofort/uk/75x28.png +0 -0
  129. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x22.png +0 -0
  130. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-32x24.png +0 -0
  131. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x32.png +0 -0
  132. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-48x34.png +0 -0
  133. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x42.png +0 -0
  134. data/app/assets/images/dm_event/payment_logos/sofort/uk/icon-64x44.png +0 -0
  135. data/app/assets/javascripts/dm_event/admin.js +94 -0
  136. data/app/assets/stylesheets/dm_event/admin.css +152 -0
  137. data/app/assets/stylesheets/dm_event/application.css +65 -0
  138. data/app/controllers/dm_event/admin/admin_controller.rb +13 -0
  139. data/app/controllers/dm_event/admin/registrations_controller.rb +411 -0
  140. data/app/controllers/dm_event/admin/workshop_prices_controller.rb +73 -0
  141. data/app/controllers/dm_event/admin/workshops_controller.rb +147 -0
  142. data/app/controllers/dm_event/application_controller.rb +23 -0
  143. data/app/controllers/dm_event/payments_controller.rb +83 -0
  144. data/app/controllers/dm_event/registrations_controller.rb +368 -0
  145. data/app/datatables/registration_datatable.rb +117 -0
  146. data/app/helpers/dm_event/application_helper.rb +4 -0
  147. data/app/helpers/dm_event/registrations_helper.rb +14 -0
  148. data/app/helpers/dm_event/workshops_helper.rb +41 -0
  149. data/app/mailers/payment_reminder_mailer.rb +25 -0
  150. data/app/mailers/registration_notify_mailer.rb +31 -0
  151. data/app/models/dm_event/concerns/ability.rb +38 -0
  152. data/app/models/dm_event/concerns/registration_state_email.rb +80 -0
  153. data/app/models/dm_event/concerns/registration_state_machine.rb +218 -0
  154. data/app/models/dm_event/concerns/user_profile.rb +20 -0
  155. data/app/models/dm_event/model_decorators.rb +6 -0
  156. data/app/models/dm_event/permitted_params.rb +35 -0
  157. data/app/models/payment.rb +48 -0
  158. data/app/models/registration.rb +297 -0
  159. data/app/models/workshop.rb +247 -0
  160. data/app/models/workshop_price.rb +118 -0
  161. data/app/presenters/event_common_presenter.rb +31 -0
  162. data/app/presenters/registration_presenter.rb +34 -0
  163. data/app/presenters/workshop_presenter.rb +22 -0
  164. data/app/views/dm_event/admin/registrations/_form.html.erb +297 -0
  165. data/app/views/dm_event/admin/registrations/action_state.js.erb +1 -0
  166. data/app/views/dm_event/admin/registrations/edit.html.erb +1 -0
  167. data/app/views/dm_event/admin/registrations/index.html.erb +0 -0
  168. data/app/views/dm_event/admin/workshop_prices/_form.html.erb +62 -0
  169. data/app/views/dm_event/admin/workshop_prices/edit.html.erb +2 -0
  170. data/app/views/dm_event/admin/workshop_prices/index.html.erb +31 -0
  171. data/app/views/dm_event/admin/workshop_prices/new.html.erb +2 -0
  172. data/app/views/dm_event/admin/workshops/_form.html.erb +61 -0
  173. data/app/views/dm_event/admin/workshops/_header_menu.html.erb +21 -0
  174. data/app/views/dm_event/admin/workshops/_registration_stats.html.erb +58 -0
  175. data/app/views/dm_event/admin/workshops/additional_configuration.html.erb +47 -0
  176. data/app/views/dm_event/admin/workshops/edit.html.erb +2 -0
  177. data/app/views/dm_event/admin/workshops/edit_system_email.html.erb +75 -0
  178. data/app/views/dm_event/admin/workshops/financials.html.erb +179 -0
  179. data/app/views/dm_event/admin/workshops/index.html.erb +100 -0
  180. data/app/views/dm_event/admin/workshops/lost_users.html.erb +44 -0
  181. data/app/views/dm_event/admin/workshops/new.html.erb +2 -0
  182. data/app/views/dm_event/admin/workshops/show.html.erb +47 -0
  183. data/app/views/dm_event/admin/workshops/user_outstanding_balances.html.erb +29 -0
  184. data/app/views/dm_event/liquid_tags/_funding_project_status.html.erb +27 -0
  185. data/app/views/dm_event/payments/_registrations_paypal_standard.html.erb +23 -0
  186. data/app/views/dm_event/payments/_registrations_sofort.html.erb +18 -0
  187. data/app/views/dm_event/registrations/_section_address.html.erb +30 -0
  188. data/app/views/dm_event/registrations/_section_custom_fields.html.erb +7 -0
  189. data/app/views/dm_event/registrations/_section_prices.html.erb +33 -0
  190. data/app/views/dm_event/registrations/_workshop_price.html.erb +18 -0
  191. data/app/views/dm_event/registrations/choose_payment.html.erb +5 -0
  192. data/app/views/dm_event/registrations/closed.html.erb +14 -0
  193. data/app/views/dm_event/registrations/new.html.erb +30 -0
  194. data/app/views/dm_event/registrations/success.html.erb +15 -0
  195. data/app/views/layouts/email_templates/dm_event_email_layout.html.erb +318 -0
  196. data/app/views/layouts/email_templates/dm_event_email_layout.text.erb +1 -0
  197. data/app/views/layouts/email_templates/dm_event_payment_reminder.html.erb +22 -0
  198. data/app/views/layouts/email_templates/dm_event_payment_reminder.text.erb +19 -0
  199. data/app/views/layouts/email_templates/dm_event_registration_notify.html.erb +21 -0
  200. data/app/views/layouts/email_templates/dm_event_registration_notify.text.erb +13 -0
  201. data/config/initializers/dm_event.rb +1 -0
  202. data/config/initializers/liquid_init.rb +2 -0
  203. data/config/locales/ems.cs.yml +51 -0
  204. data/config/locales/ems.de.yml +51 -0
  205. data/config/locales/ems.en.yml +51 -0
  206. data/config/locales/ems.fi.yml +51 -0
  207. data/config/locales/ems.ja.yml +51 -0
  208. data/config/routes.rb +40 -0
  209. data/db/migrate/20130510155617_create_events.rb +98 -0
  210. data/db/migrate/20130516124327_add_locale_to_registration.rb +5 -0
  211. data/db/migrate/20130516204454_add_user_profile_to_registration.rb +11 -0
  212. data/db/migrate/20130518092324_add_require_address.rb +7 -0
  213. data/db/migrate/20130609145812_add_workshop_published.rb +5 -0
  214. data/db/migrate/20130624134506_add_amount_currency.rb +16 -0
  215. data/db/migrate/20130703131515_add_workshop_currency.rb +5 -0
  216. data/db/migrate/20130913083529_add_event_funding_type.rb +6 -0
  217. data/db/migrate/20130914105736_add_enable_payments.rb +5 -0
  218. data/db/migrate/20130916160033_add_sidebar_to_workshop.rb +5 -0
  219. data/db/migrate/20130917161700_add_show_address.rb +5 -0
  220. data/db/migrate/20131116180719_add_default_funding_goal.rb +8 -0
  221. data/db/migrate/20131127165445_add_payment_reminder.rb +5 -0
  222. data/db/migrate/20140122204702_add_event_image.rb +5 -0
  223. data/db/migrate/20140523165342_add_workshop_summary.rb +5 -0
  224. data/db/migrate/20140605052208_add_uuid_to_registration.rb +10 -0
  225. data/db/migrate/20140707152124_add_registration_comment_count.rb +5 -0
  226. data/db/migrate/20140708142312_add_payment_comment.rb +20 -0
  227. data/db/migrate/20150709125105_add_payment_reminder_history.rb +16 -0
  228. data/db/migrate/20160810081542_add_bcc_contact_email.rb +5 -0
  229. data/db/migrate/20160821150120_index_foreign_keys_in_ems_registrations.rb +9 -0
  230. data/db/migrate/20160821150121_index_foreign_keys_in_ems_workshop_price_translations.rb +5 -0
  231. data/db/migrate/20160821150122_index_foreign_keys_in_ems_workshop_prices.rb +6 -0
  232. data/db/migrate/20160821150123_index_foreign_keys_in_ems_workshop_translations.rb +5 -0
  233. data/db/migrate/20160821150124_index_foreign_keys_in_ems_workshops.rb +6 -0
  234. data/lib/dm_event/engine.rb +20 -0
  235. data/lib/dm_event/liquid/tags/funding_project_status.rb +55 -0
  236. data/lib/dm_event.rb +4 -0
  237. data/lib/tasks/dm_event_tasks.rake +4 -0
  238. data/spec/controllers/registrations_controller_spec.rb +152 -0
  239. data/spec/dummy/README.rdoc +28 -0
  240. data/spec/dummy/Rakefile +6 -0
  241. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  242. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  243. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  244. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  245. data/spec/dummy/app/models/ability.rb +10 -0
  246. data/spec/dummy/app/models/user.rb +6 -0
  247. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  248. data/spec/dummy/bin/bundle +3 -0
  249. data/spec/dummy/bin/rails +4 -0
  250. data/spec/dummy/bin/rake +4 -0
  251. data/spec/dummy/config/application.rb +26 -0
  252. data/spec/dummy/config/boot.rb +5 -0
  253. data/spec/dummy/config/database.yml +25 -0
  254. data/spec/dummy/config/environment.rb +5 -0
  255. data/spec/dummy/config/environments/development.rb +37 -0
  256. data/spec/dummy/config/environments/production.rb +82 -0
  257. data/spec/dummy/config/environments/test.rb +39 -0
  258. data/spec/dummy/config/initializers/assets.rb +8 -0
  259. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  260. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  261. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  262. data/spec/dummy/config/initializers/inflections.rb +16 -0
  263. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  264. data/spec/dummy/config/initializers/session_store.rb +3 -0
  265. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  266. data/spec/dummy/config/locales/en.yml +23 -0
  267. data/spec/dummy/config/routes.rb +11 -0
  268. data/spec/dummy/config/secrets.yml +22 -0
  269. data/spec/dummy/config.ru +4 -0
  270. data/spec/dummy/db/development.sqlite3 +0 -0
  271. data/spec/dummy/db/migrate/20141114170927_add_globalize_countries.dm_core.rb +50 -0
  272. data/spec/dummy/db/migrate/20141114170928_devise_create_users.dm_core.rb +46 -0
  273. data/spec/dummy/db/migrate/20141114170929_add_user_fields.dm_core.rb +14 -0
  274. data/spec/dummy/db/migrate/20141114170930_rolify_create_roles.dm_core.rb +20 -0
  275. data/spec/dummy/db/migrate/20141114170931_add_last_access.dm_core.rb +10 -0
  276. data/spec/dummy/db/migrate/20141114170932_create_versions.dm_core.rb +19 -0
  277. data/spec/dummy/db/migrate/20141114170933_add_object_changes_column_to_versions.dm_core.rb +12 -0
  278. data/spec/dummy/db/migrate/20141114170934_create_dm_core_accounts.dm_core.rb +13 -0
  279. data/spec/dummy/db/migrate/20141114170935_add_account_to_users.dm_core.rb +9 -0
  280. data/spec/dummy/db/migrate/20141114170936_create_preferences.dm_core.rb +13 -0
  281. data/spec/dummy/db/migrate/20141114170937_create_comments.dm_core.rb +22 -0
  282. data/spec/dummy/db/migrate/20141114170938_add_activity.dm_core.rb +21 -0
  283. data/spec/dummy/db/migrate/20141114170939_add_type_to_comments.dm_core.rb +9 -0
  284. data/spec/dummy/db/migrate/20141114170940_add_category.dm_core.rb +28 -0
  285. data/spec/dummy/db/migrate/20141114170941_create_email_table.dm_core.rb +26 -0
  286. data/spec/dummy/db/migrate/20141114170942_add_user_profile.dm_core.rb +46 -0
  287. data/spec/dummy/db/migrate/20141114170943_add_profile_email.dm_core.rb +14 -0
  288. data/spec/dummy/db/migrate/20141114170944_create_payment_history.dm_core.rb +37 -0
  289. data/spec/dummy/db/migrate/20141114170945_change_anchor_field.dm_core.rb +10 -0
  290. data/spec/dummy/db/migrate/20141114170946_create_user_site_profile.dm_core.rb +27 -0
  291. data/spec/dummy/db/migrate/20141114170947_add_avatar.dm_core.rb +12 -0
  292. data/spec/dummy/db/migrate/20141114170948_add_notify_to_payment_history.dm_core.rb +8 -0
  293. data/spec/dummy/db/migrate/20141114170949_acts_as_votable_migration.dm_core.rb +28 -0
  294. data/spec/dummy/db/migrate/20141114170950_add_user_site_profile_uuid.dm_core.rb +19 -0
  295. data/spec/dummy/db/migrate/20141114170951_add_invoice_id.dm_core.rb +7 -0
  296. data/spec/dummy/db/migrate/20141114170952_acts_as_follower_migration.dm_core.rb +18 -0
  297. data/spec/dummy/db/migrate/20141114170953_rename_invoice_id.dm_core.rb +12 -0
  298. data/spec/dummy/db/migrate/20141114170954_add_core_addresses.dm_core.rb +18 -0
  299. data/spec/dummy/db/migrate/20141114170955_papertrail_increase_column.dm_core.rb +9 -0
  300. data/spec/dummy/db/migrate/20141114170956_acts_as_taggable_on_migration.dm_core.rb +32 -0
  301. data/spec/dummy/db/migrate/20141114170957_add_missing_unique_indices.dm_core.rb +23 -0
  302. data/spec/dummy/db/migrate/20141114170958_add_taggings_counter_cache_to_tags.dm_core.rb +16 -0
  303. data/spec/dummy/db/migrate/20141114170959_create_custom_fields.dm_core.rb +40 -0
  304. data/spec/dummy/db/migrate/20141114170960_add_missing_taggable_index.dm_core.rb +11 -0
  305. data/spec/dummy/db/migrate/20141119103740_create_cms.dm_cms.rb +92 -0
  306. data/spec/dummy/db/migrate/20141119103741_add_account_to_cms.dm_cms.rb +11 -0
  307. data/spec/dummy/db/migrate/20141119103742_create_blog.dm_cms.rb +62 -0
  308. data/spec/dummy/db/migrate/20141119103743_add_notification_sent.dm_cms.rb +6 -0
  309. data/spec/dummy/db/migrate/20141119103744_add_blog_comment.dm_cms.rb +8 -0
  310. data/spec/dummy/db/migrate/20141119103745_add_blog_image.dm_cms.rb +6 -0
  311. data/spec/dummy/db/migrate/20141119103746_rename_snippet_slug.dm_cms.rb +14 -0
  312. data/spec/dummy/db/migrate/20141119103747_add_requires_subscription_blog.dm_cms.rb +8 -0
  313. data/spec/dummy/db/migrate/20141119103748_add_pages_ranked_model.dm_cms.rb +23 -0
  314. data/spec/dummy/db/migrate/20141119103749_add_blog_owner.dm_cms.rb +7 -0
  315. data/spec/dummy/db/migrate/20141119103750_create_media_files.dm_cms.rb +30 -0
  316. data/spec/dummy/db/migrate/20141119103751_add_cmspage_summary.dm_cms.rb +7 -0
  317. data/spec/dummy/db/migrate/20141119103752_add_blog_image_email_header.dm_cms.rb +6 -0
  318. data/spec/dummy/db/migrate/20141119103753_add_header_image.dm_cms.rb +10 -0
  319. data/spec/dummy/db/migrate/20160128154135_add_favored_locale.dm_core.rb +17 -0
  320. data/spec/dummy/db/migrate/20160128154136_update_papertrail_v4.dm_core.rb +41 -0
  321. data/spec/dummy/db/schema.rb +677 -0
  322. data/spec/dummy/public/404.html +67 -0
  323. data/spec/dummy/public/422.html +67 -0
  324. data/spec/dummy/public/500.html +66 -0
  325. data/spec/dummy/public/favicon.ico +0 -0
  326. data/spec/factories/account_factory.rb +7 -0
  327. data/spec/factories/registration_factory.rb +13 -0
  328. data/spec/factories/workshop_factory.rb +25 -0
  329. data/spec/factories/workshop_price_factory.rb +19 -0
  330. data/spec/models/registration_spec.rb +83 -0
  331. data/spec/models/workshop_spec.rb +26 -0
  332. data/spec/rails_helper.rb +70 -0
  333. data/spec/spec_helper.rb +85 -0
  334. data/spec/support/accounts.rb +17 -0
  335. data/spec/support/devise.rb +44 -0
  336. data/spec/support/fix_locale.rb +57 -0
  337. metadata +520 -0
@@ -0,0 +1,18 @@
1
+ # This migration comes from dm_core (originally 20140210195143)
2
+ class AddCoreAddresses < ActiveRecord::Migration
3
+ def change
4
+ create_table :core_addresses do |t|
5
+ t.string :line1
6
+ t.string :line2
7
+ t.string :city
8
+ t.string :state
9
+ t.string :zip
10
+ t.string :country_code, limit: 2
11
+ t.integer :addressable_id
12
+ t.string :addressable_type
13
+ t.timestamps null: true
14
+ end
15
+
16
+ add_index :core_addresses, [:addressable_type, :addressable_id], :unique => true
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ # This migration comes from dm_core (originally 20140411190454)
2
+ class PapertrailIncreaseColumn < ActiveRecord::Migration
3
+ def up
4
+ change_column :versions, :object_changes, :mediumtext
5
+ end
6
+ def down
7
+ change_column :versions, :object_changes, :text
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ # This migration comes from dm_core (originally 20140501160009)
2
+ # This migration comes from acts_as_taggable_on_engine (originally 1)
3
+ class ActsAsTaggableOnMigration < ActiveRecord::Migration
4
+ def self.up
5
+ create_table :tags do |t|
6
+ t.string :name
7
+ end
8
+
9
+ create_table :taggings do |t|
10
+ t.references :tag
11
+
12
+ # You should make sure that the column created is
13
+ # long enough to store the required class names.
14
+ t.references :taggable, :polymorphic => true
15
+ t.references :tagger, :polymorphic => true
16
+
17
+ # Limit is created to prevent MySQL error on index
18
+ # length for MyISAM table type: http://bit.ly/vgW2Ql
19
+ t.string :context, :limit => 128
20
+
21
+ t.datetime :created_at
22
+ end
23
+
24
+ add_index :taggings, :tag_id
25
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
26
+ end
27
+
28
+ def self.down
29
+ drop_table :taggings
30
+ drop_table :tags
31
+ end
32
+ end
@@ -0,0 +1,23 @@
1
+ # This migration comes from dm_core (originally 20140501160010)
2
+ # This migration comes from acts_as_taggable_on_engine (originally 2)
3
+ class AddMissingUniqueIndices < ActiveRecord::Migration
4
+
5
+ def self.up
6
+ add_index :tags, :name, unique: true
7
+
8
+ remove_index :taggings, :tag_id
9
+ remove_index :taggings, [:taggable_id, :taggable_type, :context]
10
+ add_index :taggings,
11
+ [:tag_id, :taggable_id, :taggable_type, :context, :tagger_id, :tagger_type],
12
+ unique: true, name: 'taggings_idx'
13
+ end
14
+
15
+ def self.down
16
+ remove_index :tags, :name
17
+
18
+ remove_index :taggings, name: 'taggings_idx'
19
+ add_index :taggings, :tag_id
20
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
21
+ end
22
+
23
+ end
@@ -0,0 +1,16 @@
1
+ # This migration comes from dm_core (originally 20140501160011)
2
+ # This migration comes from acts_as_taggable_on_engine (originally 3)
3
+ class AddTaggingsCounterCacheToTags < ActiveRecord::Migration
4
+ def self.up
5
+ add_column :tags, :taggings_count, :integer, :default => 0
6
+
7
+ ActsAsTaggableOn::Tag.reset_column_information
8
+ ActsAsTaggableOn::Tag.find_each do |tag|
9
+ ActsAsTaggableOn::Tag.reset_counters(tag.id, :taggings)
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ remove_column :tags, :taggings_count
15
+ end
16
+ end
@@ -0,0 +1,40 @@
1
+ # This migration comes from dm_core (originally 20140529164730)
2
+ class CreateCustomFields < ActiveRecord::Migration
3
+ def change
4
+ create_table :core_custom_field_defs do |t|
5
+ t.references :owner, polymorphic: true
6
+ t.string :name
7
+ t.string :field_type
8
+ t.integer :row_order
9
+ t.boolean :required, default: false
10
+ t.string :properties, limit: 2048
11
+ t.timestamps null: true
12
+ t.integer :account_id
13
+ end
14
+
15
+ add_index :core_custom_field_defs, :account_id
16
+ add_index :core_custom_field_defs, [:owner_id, :owner_type]
17
+
18
+ create_table :core_custom_field_def_translations, force: true do |t|
19
+ t.integer :core_custom_field_def_id
20
+ t.string :locale
21
+ t.string :label
22
+ t.text :description
23
+ t.datetime :created_at
24
+ t.datetime :updated_at
25
+ end
26
+
27
+ add_index :core_custom_field_def_translations, [:core_custom_field_def_id], name: 'core_custom_field_def_translations_index'
28
+
29
+ create_table :core_custom_fields do |t|
30
+ t.references :owner, polymorphic: true
31
+ t.integer :custom_field_def_id
32
+ t.string :field_data, limit: 4096
33
+ t.timestamps null: true
34
+ t.integer :account_id
35
+ end
36
+
37
+ add_index :core_custom_fields, :account_id
38
+ add_index :core_custom_fields, [:owner_id, :owner_type]
39
+ end
40
+ end
@@ -0,0 +1,11 @@
1
+ # This migration comes from dm_core (originally 20140709145503)
2
+ # This migration comes from acts_as_taggable_on_engine (originally 4)
3
+ class AddMissingTaggableIndex < ActiveRecord::Migration
4
+ def self.up
5
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
6
+ end
7
+
8
+ def self.down
9
+ remove_index :taggings, [:taggable_id, :taggable_type, :context]
10
+ end
11
+ end
@@ -0,0 +1,92 @@
1
+ # This migration comes from dm_cms (originally 20121103181909)
2
+ class CreateCms < ActiveRecord::Migration
3
+ def up
4
+ create_table "cms_contentitem_translations", :force => true do |t|
5
+ t.integer "cms_contentitem_id"
6
+ t.string "locale"
7
+ t.text "content"
8
+ t.datetime "created_at"
9
+ t.datetime "updated_at"
10
+ end
11
+
12
+ add_index "cms_contentitem_translations", ["cms_contentitem_id"], :name => "index_072c3a76f87c96e2f91149eccd2a283dca2b613f"
13
+
14
+ create_table "cms_contentitems", :force => true do |t|
15
+ t.integer "cms_page_id"
16
+ t.string "itemtype", :limit => 30, :default => "textile"
17
+ t.string "container", :limit => 30
18
+ t.integer "position", :default => 0
19
+ t.boolean "enable_cache", :default => true, :null => false
20
+ t.datetime "created_on"
21
+ t.datetime "updated_on"
22
+ t.integer "lock_version", :default => 0
23
+ end
24
+
25
+ add_index "cms_contentitems", ["cms_page_id"], :name => "cms_contentitems_cms_page_id_index"
26
+
27
+ create_table "cms_page_translations", :force => true do |t|
28
+ t.integer "cms_page_id"
29
+ t.string "locale"
30
+ t.string "title"
31
+ t.string "menutitle"
32
+ t.datetime "created_at"
33
+ t.datetime "updated_at"
34
+ end
35
+
36
+ add_index "cms_page_translations", ["cms_page_id"], :name => "index_cms_page_translations_on_cms_page_id"
37
+
38
+ create_table "cms_pages", :force => true do |t|
39
+ t.string "slug", :limit => 50, :default => "", :null => false
40
+ t.string "pagetype", :limit => 20, :default => "content", :null => false
41
+ t.boolean "published", :default => false, :null => false
42
+ t.string "template", :limit => 50, :default => "", :null => false
43
+ t.string "link", :default => "", :null => false
44
+ t.string "menuimage"
45
+ t.boolean "requires_login", :default => false
46
+ t.string "ancestry"
47
+ t.integer 'ancestry_depth', :default => 0
48
+ t.integer 'position'
49
+ t.datetime "updated_on"
50
+ t.datetime "created_on"
51
+ t.integer "lock_version", :default => 0, :null => false
52
+ end
53
+
54
+ add_index "cms_pages", ["slug"], :name => "pagename_key"
55
+ add_index "cms_pages", "ancestry"
56
+ add_index "cms_pages", "ancestry_depth"
57
+ add_index "cms_pages", ["published"], :name => "cms_pages_published_index"
58
+
59
+ create_table "cms_snippet_translations", :force => true do |t|
60
+ t.integer "cms_snippet_id"
61
+ t.string "locale"
62
+ t.text "content"
63
+ t.datetime "created_at"
64
+ t.datetime "updated_at"
65
+ end
66
+
67
+ add_index "cms_snippet_translations", ["cms_snippet_id"], :name => "index_cms_snippet_translations_on_cms_snippet_id"
68
+
69
+ create_table "cms_snippets", :force => true do |t|
70
+ t.string "itemtype", :limit => 30, :default => "textile"
71
+ t.string "container"
72
+ t.string "description"
73
+ t.boolean "enable_cache", :default => true, :null => false
74
+ t.boolean "published", :default => true, :null => false
75
+ t.datetime "created_on"
76
+ t.datetime "updated_on"
77
+ t.integer "lock_version", :default => 0
78
+ end
79
+
80
+ add_index "cms_snippets", ["container"], :name => "index_cms_snippets_on_container"
81
+
82
+ end
83
+
84
+ def down
85
+ drop_table :cms_snippets
86
+ drop_table :cms_snippet_translations
87
+ drop_table :cms_pages
88
+ drop_table :cms_page_translations
89
+ drop_table :cms_contentitems
90
+ drop_table :cms_contentitem_translations
91
+ end
92
+ end
@@ -0,0 +1,11 @@
1
+ # This migration comes from dm_cms (originally 20130206213720)
2
+ class AddAccountToCms < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_pages, :account_id, :integer
5
+ add_index :cms_pages, :account_id
6
+ add_column :cms_contentitems, :account_id, :integer
7
+ add_index :cms_contentitems, :account_id
8
+ add_column :cms_snippets, :account_id, :integer
9
+ add_index :cms_snippets, :account_id
10
+ end
11
+ end
@@ -0,0 +1,62 @@
1
+ # This migration comes from dm_cms (originally 20130507123255)
2
+ class CreateBlog < ActiveRecord::Migration
3
+ def up
4
+ create_table :cms_blog_translations, :force => true do |t|
5
+ t.integer :cms_blog_id
6
+ t.string :locale
7
+ t.string :title
8
+ t.datetime :created_at
9
+ t.datetime :updated_at
10
+ end
11
+
12
+ add_index :cms_blog_translations, ["cms_blog_id"], :name => "index_cms_blog_translations_on_cms_blog_id"
13
+
14
+ create_table :cms_blogs, :force => true do |t|
15
+ t.string :slug
16
+ t.boolean :published, :default => false
17
+ t.boolean :is_public, :default => false
18
+ t.boolean :requires_login, :default => false
19
+ t.integer :row_order
20
+ t.datetime :updated_on
21
+ t.datetime :created_on
22
+ t.integer :account_id
23
+ t.integer :lock_version, :default => 0, :null => false
24
+ end
25
+
26
+ add_index :cms_blogs, ["slug"], :name => "blogname_key"
27
+ add_index :cms_blogs, ["published"], :name => "cms_blogs_published_index"
28
+
29
+ create_table :cms_post_translations, :force => true do |t|
30
+ t.integer :cms_post_id
31
+ t.string :locale
32
+ t.string :title
33
+ t.text :content
34
+ t.text :summary
35
+ t.datetime :created_at
36
+ t.datetime :updated_at
37
+ end
38
+
39
+ add_index :cms_post_translations, ["cms_post_id"], :name => "index_cms_post_translations_on_cms_post_id"
40
+
41
+ create_table :cms_posts, :force => true do |t|
42
+ t.string :slug
43
+ t.integer :cms_blog_id
44
+ t.string :image
45
+ t.datetime :published_on
46
+ t.datetime :updated_on
47
+ t.datetime :created_on
48
+ t.integer :account_id
49
+ t.integer :lock_version, :default => 0, :null => false
50
+ end
51
+
52
+ add_index :cms_posts, ["slug"], :name => "postname_key"
53
+ add_index :cms_posts, ["published_on"], :name => "cms_posts_published_index"
54
+ end
55
+
56
+ def down
57
+ drop_table :cms_blogs
58
+ drop_table :cms_blog_translations
59
+ drop_table :cms_posts
60
+ drop_table :cms_post_translations
61
+ end
62
+ end
@@ -0,0 +1,6 @@
1
+ # This migration comes from dm_cms (originally 20130531212537)
2
+ class AddNotificationSent < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_posts, :notification_sent_on, :datetime
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ # This migration comes from dm_cms (originally 20130605184116)
2
+ class AddBlogComment < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_posts, :comments_count, :integer, :default => 0
5
+ add_column :cms_posts, :comments_allowed, :boolean
6
+ add_column :cms_blogs, :comments_allowed, :boolean
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ # This migration comes from dm_cms (originally 20131128201053)
2
+ class AddBlogImage < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_blogs, :image, :string
5
+ end
6
+ end
@@ -0,0 +1,14 @@
1
+ # This migration comes from dm_cms (originally 20140217135228)
2
+ class RenameSnippetSlug < ActiveRecord::Migration
3
+ def up
4
+ change_column :cms_snippets, :itemtype, :string, :default => 'markdown'
5
+ rename_column :cms_snippets, :container, :slug
6
+ rename_index :cms_snippets, 'index_cms_snippets_on_container', 'index_cms_snippets_on_slug'
7
+ end
8
+
9
+ def down
10
+ change_column :cms_snippets, :itemtype, :string, :default => 'textile'
11
+ rename_column :cms_snippets, :slug, :container
12
+ rename_index :cms_snippets, 'index_cms_snippets_on_slug', 'index_cms_snippets_on_container'
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ # This migration comes from dm_cms (originally 20140303121217)
2
+ class AddRequiresSubscriptionBlog < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_blogs, :requires_subscription, :boolean, :default => false
5
+ add_column :cms_pages, :requires_subscription, :boolean, :default => false
6
+ add_column :cms_pages, :is_public, :boolean, :default => true
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ # This migration comes from dm_cms (originally 20140328205246)
2
+ class AddPagesRankedModel < ActiveRecord::Migration
3
+ def up
4
+ add_column :cms_pages, :row_order, :integer
5
+ rename_column :cms_contentitems, :position, :row_order
6
+
7
+ #--- because of some duplications in the position column, need to
8
+ # create a more unique position value. So add up the positions
9
+ total = 0
10
+ CmsPage.unscoped.order(:ancestry, :position).each do |page|
11
+ total = total + page.position
12
+ Account.current = Account.find(page.account_id)
13
+ page.update_attributes :row_order => total
14
+ end
15
+ remove_column :cms_pages, :position
16
+ end
17
+
18
+ def down
19
+ remove_column :cms_pages, :row_order
20
+ add_columnn :cms_pages, :position, :integer
21
+ rename_column :cms_contentitems, :row_order, :position
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ # This migration comes from dm_cms (originally 20140423113417)
2
+ class AddBlogOwner < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_blogs, :owner_id, :integer
5
+ add_column :cms_blogs, :owner_type, :string
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # This migration comes from dm_cms (originally 20140428122156)
2
+ class CreateMediaFiles < ActiveRecord::Migration
3
+ def change
4
+ create_table :cms_media_files do |t|
5
+ t.string :media
6
+ t.integer :media_file_size
7
+ t.string :media_content_type
8
+ t.string :folder
9
+ t.boolean :generate_retina
10
+ t.integer :user_id
11
+ t.datetime :created_at
12
+ t.datetime :updated_at
13
+ t.integer :account_id
14
+ end
15
+
16
+ add_index :cms_media_files, [:media, :folder, :account_id], unique: true, name: "index_media_folder_account_id"
17
+
18
+ create_table :cms_media_file_translations, :force => true do |t|
19
+ t.integer :cms_media_file_id
20
+ t.string :locale
21
+ t.string :title
22
+ t.string :description
23
+ t.datetime :created_at
24
+ t.datetime :updated_at
25
+ end
26
+
27
+ add_index :cms_media_file_translations, [:cms_media_file_id], name: "index_cms_media_file_translations_on_cms_media_file_id"
28
+
29
+ end
30
+ end
@@ -0,0 +1,7 @@
1
+ # This migration comes from dm_cms (originally 20140523134543)
2
+ class AddCmspageSummary < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_pages, :image, :string
5
+ add_column :cms_page_translations, :summary, :text
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ # This migration comes from dm_cms (originally 20140601151631)
2
+ class AddBlogImageEmailHeader < ActiveRecord::Migration
3
+ def change
4
+ add_column :cms_blogs, :image_email_header, :string
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ # This migration comes from dm_cms (originally 20141004154725)
2
+ class AddHeaderImage < ActiveRecord::Migration
3
+ def change
4
+ rename_column :cms_pages, :image, :featured_image
5
+ add_column :cms_pages, :header_image, :string
6
+
7
+ rename_column :cms_blogs, :image, :header_image
8
+ rename_column :cms_posts, :image, :featured_image
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ # This migration comes from dm_core (originally 20141216094639)
2
+ class AddFavoredLocale < ActiveRecord::Migration
3
+ def up
4
+ add_column :user_profiles, :favored_locale, :string
5
+
6
+ locale_map = {'DE' => :de, 'AT' => :de, 'CH' => :de, 'JP' => :ja, 'FI' => :fi}
7
+ UserProfile.all.find_each do |user_profile|
8
+ country_code = user_profile.country.code
9
+ locale = locale_map[country_code].nil? ? :en : locale_map[country_code]
10
+ user_profile.update_attribute(:favored_locale, locale)
11
+ end
12
+ end
13
+
14
+ def down
15
+ remove_column :user_profiles, :favored_locale
16
+ end
17
+ end
@@ -0,0 +1,41 @@
1
+ # This migration comes from dm_core (originally 20160128094739)
2
+ # Migration for upgrading PaperTrail from V3 to V4
3
+ #------------------------------------------------------------------------------
4
+ class UpdatePapertrailV4 < ActiveRecord::Migration
5
+ # The largest text column available in all supported RDBMS is
6
+ # 1024^3 - 1 bytes, roughly one gibibyte. We specify a size
7
+ # so that MySQL will use `longtext` instead of `text`. Otherwise,
8
+ # when serializing very large objects, `text` might not be big enough.
9
+ TEXT_BYTES = 1_073_741_823
10
+
11
+ def up
12
+ change_column :versions, :created_at, :datetime, precision: 6
13
+ change_column :versions, :object, :text, limit: TEXT_BYTES
14
+ change_column :versions, :object_changes, :text, limit: TEXT_BYTES
15
+ add_column :versions, :transaction_id, :integer
16
+ add_index :versions, [:transaction_id]
17
+
18
+ create_table :version_associations do |t|
19
+ t.integer :version_id
20
+ t.string :foreign_key_name, :null => false
21
+ t.integer :foreign_key_id
22
+ end
23
+ add_index :version_associations, [:version_id]
24
+ add_index :version_associations,
25
+ [:foreign_key_name, :foreign_key_id],
26
+ :name => 'index_version_associations_on_foreign_key'
27
+ end
28
+
29
+ def down
30
+ change_column :versions, :created_at, :datetime
31
+ change_column :versions, :object, :mediumtext
32
+ change_column :versions, :object_changes, :mediumtext
33
+ remove_index :versions, [:transaction_id]
34
+ remove_column :versions, :transaction_id
35
+
36
+ remove_index :version_associations, [:version_id]
37
+ remove_index :version_associations,
38
+ :name => 'index_version_associations_on_foreign_key'
39
+ drop_table :version_associations
40
+ end
41
+ end