enju_event 0.1.17.pre18 → 0.1.17.pre19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/event_export_files_controller.rb +100 -0
  3. data/app/controllers/event_import_files_controller.rb +21 -12
  4. data/app/controllers/event_import_results_controller.rb +1 -1
  5. data/app/controllers/events_controller.rb +16 -16
  6. data/app/controllers/participates_controller.rb +8 -8
  7. data/app/models/enju_event/ability.rb +2 -0
  8. data/app/models/event.rb +36 -15
  9. data/app/models/event_category.rb +1 -1
  10. data/app/models/event_export_file.rb +51 -0
  11. data/app/models/event_export_file_state_machine.rb +15 -0
  12. data/app/models/event_export_file_transition.rb +20 -0
  13. data/app/models/event_import_file.rb +44 -45
  14. data/app/models/event_import_result.rb +2 -2
  15. data/app/models/participate.rb +2 -2
  16. data/app/views/calendar/index.html.erb +6 -6
  17. data/app/views/event_categories/edit.html.erb +1 -1
  18. data/app/views/event_categories/index.html.erb +3 -3
  19. data/app/views/event_categories/new.html.erb +1 -1
  20. data/app/views/event_categories/show.html.erb +1 -1
  21. data/app/views/event_export_files/_form.html.erb +22 -0
  22. data/app/views/event_export_files/edit.html.erb +6 -0
  23. data/app/views/event_export_files/index.html.erb +44 -0
  24. data/app/views/event_export_files/new.html.erb +16 -0
  25. data/app/views/event_export_files/show.html.erb +31 -0
  26. data/app/views/event_import_files/edit.html.erb +1 -1
  27. data/app/views/event_import_files/index.html.erb +30 -25
  28. data/app/views/event_import_files/new.html.erb +24 -12
  29. data/app/views/event_import_files/show.html.erb +14 -4
  30. data/app/views/event_import_results/index.html.erb +6 -6
  31. data/app/views/event_import_results/{index.tsv.erb → index.txt.erb} +1 -1
  32. data/app/views/event_import_results/show.html.erb +1 -1
  33. data/app/views/events/_form.html.erb +6 -6
  34. data/app/views/events/edit.html.erb +2 -2
  35. data/app/views/events/index.atom.builder +2 -2
  36. data/app/views/events/index.html.erb +22 -22
  37. data/app/views/events/index.mobile.erb +11 -11
  38. data/app/views/events/index.rss.builder +5 -5
  39. data/app/views/events/index.txt.erb +4 -0
  40. data/app/views/events/new.html.erb +1 -1
  41. data/app/views/events/show.html.erb +5 -5
  42. data/app/views/events/show.mobile.erb +4 -4
  43. data/app/views/layouts/calendar.html.erb +3 -3
  44. data/app/views/participates/edit.html.erb +1 -1
  45. data/app/views/participates/index.html.erb +3 -3
  46. data/app/views/participates/new.html.erb +1 -1
  47. data/app/views/participates/show.html.erb +1 -1
  48. data/app/workers/event_export_file_queue.rb +7 -0
  49. data/config/locales/translation_en.yml +10 -0
  50. data/config/locales/translation_ja.yml +11 -1
  51. data/config/routes.rb +4 -3
  52. data/db/migrate/113_create_events.rb +2 -2
  53. data/db/migrate/20140720192418_add_default_library_id_to_event_import_file.rb +5 -0
  54. data/db/migrate/20140812152348_create_event_export_files.rb +11 -0
  55. data/db/migrate/20140812153137_create_event_export_file_transitions.rb +14 -0
  56. data/db/migrate/20140814070854_add_default_event_category_id_to_event_import_file.rb +5 -0
  57. data/lib/enju_event/version.rb +1 -1
  58. data/spec/controllers/calendar_controller_spec.rb +2 -2
  59. data/spec/controllers/event_categories_controller_spec.rb +21 -21
  60. data/spec/controllers/event_export_files_controller_spec.rb +286 -0
  61. data/spec/controllers/event_import_files_controller_spec.rb +20 -60
  62. data/spec/controllers/event_import_results_controller_spec.rb +6 -18
  63. data/spec/controllers/events_controller_spec.rb +21 -63
  64. data/spec/controllers/participates_controller_spec.rb +21 -21
  65. data/spec/dummy/app/helpers/application_helper.rb +1 -0
  66. data/spec/dummy/app/models/user.rb +2 -84
  67. data/spec/dummy/config/environments/test.rb +6 -6
  68. data/spec/dummy/db/development.sqlite3 +0 -0
  69. data/spec/dummy/db/migrate/001_create_agents.rb +0 -1
  70. data/spec/dummy/db/migrate/{20111201155456_devise_create_users.rb → 002_devise_create_users.rb} +6 -2
  71. data/spec/dummy/db/migrate/005_create_manifestations.rb +7 -7
  72. data/spec/dummy/db/migrate/006_create_items.rb +0 -3
  73. data/spec/dummy/db/migrate/041_create_roles.rb +13 -0
  74. data/spec/dummy/db/migrate/080_create_library_groups.rb +0 -1
  75. data/spec/dummy/db/migrate/154_create_messages.rb +0 -1
  76. data/spec/dummy/db/migrate/20080819181903_create_message_requests.rb +0 -2
  77. data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +0 -2
  78. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +1 -3
  79. data/spec/dummy/db/migrate/20081212080038_create_manifestation_checkout_stats.rb +0 -1
  80. data/spec/dummy/db/migrate/20081215094302_create_user_checkout_stats.rb +0 -1
  81. data/spec/dummy/db/migrate/20081216190724_create_manifestation_reserve_stats.rb +0 -1
  82. data/spec/dummy/db/migrate/20081220023628_create_user_reserve_stats.rb +0 -1
  83. data/spec/dummy/db/migrate/20090321130448_add_completed_at_to_user_checkout_stat.rb +0 -4
  84. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +0 -1
  85. data/spec/dummy/db/migrate/{20111201163718_create_user_has_roles.rb → 20100606065209_create_user_has_roles.rb} +2 -0
  86. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +9 -0
  87. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +12 -0
  88. data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +5 -0
  89. data/spec/dummy/db/migrate/20130221154434_add_additional_attributes_to_user.rb +0 -10
  90. data/spec/dummy/db/migrate/20140110122216_create_user_import_files.rb +18 -0
  91. data/spec/dummy/db/migrate/20140110131010_create_user_import_results.rb +11 -0
  92. data/spec/dummy/db/migrate/20140122054321_create_profiles.rb +20 -0
  93. data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +14 -0
  94. data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +14 -0
  95. data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +14 -0
  96. data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +14 -0
  97. data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +14 -0
  98. data/spec/dummy/db/migrate/20140524074813_create_user_import_file_transitions.rb +14 -0
  99. data/spec/dummy/db/migrate/20140528045518_create_user_checkout_stat_transitions.rb +14 -0
  100. data/spec/dummy/db/migrate/20140528045539_create_user_reserve_stat_transitions.rb +14 -0
  101. data/spec/dummy/db/migrate/20140528045600_create_manifestation_checkout_stat_transitions.rb +14 -0
  102. data/spec/dummy/db/migrate/20140528045617_create_manifestation_reserve_stat_transitions.rb +14 -0
  103. data/spec/dummy/db/migrate/20140614065404_create_resource_export_files.rb +11 -0
  104. data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +14 -0
  105. data/spec/dummy/db/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +5 -0
  106. data/spec/dummy/db/migrate/20140628073524_add_user_encoding_to_agent_import_file.rb +5 -0
  107. data/spec/dummy/db/migrate/20140628073535_add_user_encoding_to_resource_import_file.rb +5 -0
  108. data/spec/dummy/db/migrate/20140709113413_create_user_export_files.rb +11 -0
  109. data/spec/dummy/db/migrate/20140709113905_create_user_export_file_transitions.rb +14 -0
  110. data/spec/dummy/db/migrate/20140720140916_add_binding_item_identifier_to_item.rb +8 -0
  111. data/spec/dummy/db/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +5 -0
  112. data/spec/dummy/db/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +5 -0
  113. data/spec/dummy/db/migrate/20140721151416_add_default_shelf_id_to_resource_import_file.rb +5 -0
  114. data/spec/dummy/db/migrate/20140802082007_add_manifestation_id_to_item.rb +6 -0
  115. data/spec/dummy/db/migrate/20140810061942_add_user_id_to_stat.rb +12 -0
  116. data/spec/dummy/db/migrate/20140810091231_add_checkout_icalendar_token_to_profile.rb +6 -0
  117. data/spec/dummy/db/migrate/20140810091417_add_save_checkout_history_to_profile.rb +5 -0
  118. data/spec/dummy/db/migrate/20140811031145_add_expired_at_to_profile.rb +5 -0
  119. data/spec/dummy/db/schema.rb +290 -165
  120. data/spec/dummy/db/test.sqlite3 +0 -0
  121. data/spec/dummy/private/system/event_import_files/event_imports/000/000/004/original/event_import51.txt +3 -0
  122. data/spec/dummy/private/system/event_import_files/event_imports/000/000/004/original/event_import_file_sample1.tsv +1 -1
  123. data/spec/dummy/solr/default/data/index/_1dz.fdt +0 -0
  124. data/spec/dummy/solr/default/data/index/{_b2.si → _1dz.si} +0 -0
  125. data/spec/dummy/solr/default/data/index/{_b2_Lucene41_0.tim → _1dz_Lucene41_0.tim} +0 -0
  126. data/spec/dummy/solr/default/data/index/_1e0.fdt +0 -0
  127. data/spec/dummy/solr/default/data/index/{_b3.fnm → _1e0.fnm} +0 -0
  128. data/spec/dummy/solr/default/data/index/{_b3.si → _1e0.si} +0 -0
  129. data/spec/dummy/solr/default/data/index/_1e0_Lucene41_0.pos +0 -0
  130. data/spec/dummy/solr/default/data/index/_1e0_Lucene41_0.tim +0 -0
  131. data/spec/dummy/solr/default/data/index/_1e0_Lucene41_0.tip +0 -0
  132. data/spec/dummy/solr/default/data/index/segments.gen +0 -0
  133. data/spec/dummy/solr/default/data/index/segments_1yj +0 -0
  134. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002528 +0 -0
  135. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002529 +0 -0
  136. data/spec/dummy/solr/default/data/tlog/{tlog.0000000000000000632 → tlog.0000000000000002530} +0 -0
  137. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002531 +0 -0
  138. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002532 +0 -0
  139. data/spec/dummy/solr/default/data/tlog/{tlog.0000000000000000635 → tlog.0000000000000002533} +0 -0
  140. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002534 +0 -0
  141. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002535 +0 -0
  142. data/spec/dummy/solr/default/data/tlog/{tlog.0000000000000000638 → tlog.0000000000000002536} +0 -0
  143. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000002537 +0 -0
  144. data/spec/dummy/solr/test/data/index/_a.fdt +0 -0
  145. data/spec/dummy/solr/test/data/index/_a.fdx +0 -0
  146. data/spec/dummy/solr/test/data/index/_a.fnm +0 -0
  147. data/spec/dummy/solr/test/data/index/_a.nvd +0 -0
  148. data/spec/dummy/solr/test/data/index/_a.nvm +0 -0
  149. data/spec/dummy/solr/test/data/index/_a.si +0 -0
  150. data/spec/dummy/solr/test/data/index/_a_Lucene41_0.doc +0 -0
  151. data/spec/dummy/solr/test/data/index/_a_Lucene41_0.pos +0 -0
  152. data/spec/dummy/solr/test/data/index/_a_Lucene41_0.tim +0 -0
  153. data/spec/dummy/solr/test/data/index/_a_Lucene41_0.tip +0 -0
  154. data/spec/dummy/solr/test/data/index/segments.gen +0 -0
  155. data/spec/dummy/solr/test/data/index/segments_n +0 -0
  156. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000013 +0 -0
  157. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000014 +0 -0
  158. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000015 +0 -0
  159. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000016 +0 -0
  160. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000017 +0 -0
  161. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000018 +0 -0
  162. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000019 +0 -0
  163. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000020 +0 -0
  164. data/spec/dummy/solr/test/data/tlog/tlog.0000000000000000021 +0 -0
  165. data/spec/dummy/tmp/cache/stdout +27 -0
  166. data/spec/dummy/tmp/pids/redis-test.pid +1 -0
  167. data/spec/factories/event.rb +2 -0
  168. data/spec/factories/profile.rb +10 -0
  169. data/spec/factories/user.rb +21 -9
  170. data/spec/fixtures/event_categories.yml +8 -8
  171. data/spec/fixtures/event_export_files.yml +26 -0
  172. data/spec/fixtures/event_import_files.yml +2 -1
  173. data/spec/fixtures/events.yml +2 -3
  174. data/spec/fixtures/library_groups.yml +0 -2
  175. data/spec/fixtures/message_templates.yml +105 -0
  176. data/spec/fixtures/profiles.yml +98 -0
  177. data/spec/fixtures/user_groups.yml +3 -3
  178. data/spec/fixtures/users.yml +3 -21
  179. data/spec/models/event_export_file_spec.rb +31 -0
  180. data/spec/models/event_import_file_spec.rb +37 -11
  181. data/spec/models/event_spec.rb +2 -3
  182. data/spec/support/resque.rb +1 -0
  183. data/spec/views/event_export_files/edit.html.erb_spec.rb +16 -0
  184. data/spec/views/event_export_files/index.html.erb_spec.rb +17 -0
  185. data/spec/views/event_export_files/new.html.erb_spec.rb +16 -0
  186. data/spec/views/event_export_files/show.html.erb_spec.rb +13 -0
  187. metadata +222 -118
  188. data/app/views/events/index.csv.erb +0 -4
  189. data/spec/dummy/app/mailers/notifier.rb +0 -28
  190. data/spec/dummy/db/migrate/029_create_subjects.rb +0 -27
  191. data/spec/dummy/db/migrate/142_create_classifications.rb +0 -19
  192. data/spec/dummy/db/migrate/143_create_subject_has_classifications.rb +0 -16
  193. data/spec/dummy/db/migrate/144_create_classification_types.rb +0 -16
  194. data/spec/dummy/db/migrate/145_create_subject_heading_types.rb +0 -16
  195. data/spec/dummy/db/migrate/146_create_subject_types.rb +0 -16
  196. data/spec/dummy/db/migrate/20080606052544_create_work_has_subjects.rb +0 -18
  197. data/spec/dummy/db/migrate/20090208044541_create_subject_heading_type_has_subjects.rb +0 -16
  198. data/spec/dummy/db/migrate/20110425133109_add_issn_to_series_statement.rb +0 -9
  199. data/spec/dummy/db/migrate/20110618091240_add_periodical_to_series_statement.rb +0 -9
  200. data/spec/dummy/db/migrate/20110820131417_create_series_has_manifestations.rb +0 -13
  201. data/spec/dummy/db/migrate/20110913120629_add_lft_and_rgt_to_classification.rb +0 -11
  202. data/spec/dummy/db/migrate/20110916053430_rename_manifestation_number_list_to_number_string.rb +0 -13
  203. data/spec/dummy/db/migrate/20111009183423_add_ndc_to_manifestation.rb +0 -9
  204. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +0 -12
  205. data/spec/dummy/db/migrate/20120406020752_add_url_to_subject.rb +0 -5
  206. data/spec/dummy/db/migrate/20120415060308_rename_resource_import_file_imported_at_to_executed_at.rb +0 -9
  207. data/spec/dummy/db/migrate/20130504133816_add_manifestation_id_to_subject.rb +0 -6
  208. data/spec/dummy/db/migrate/20130504143515_add_manifestation_id_to_classification.rb +0 -6
  209. data/spec/dummy/db/migrate/20130504195916_add_subject_heading_type_id_to_subject.rb +0 -5
  210. data/spec/dummy/solr/default/data/index/_b2.fdt +0 -0
  211. data/spec/dummy/solr/default/data/index/_b3.fdt +0 -0
  212. data/spec/dummy/solr/default/data/index/_b3_Lucene41_0.pos +0 -0
  213. data/spec/dummy/solr/default/data/index/_b3_Lucene41_0.tim +0 -0
  214. data/spec/dummy/solr/default/data/index/_b3_Lucene41_0.tip +0 -0
  215. data/spec/dummy/solr/default/data/index/segments_ht +0 -0
  216. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000630 +0 -0
  217. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000631 +0 -0
  218. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000633 +0 -0
  219. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000634 +0 -0
  220. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000636 +0 -0
  221. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000637 +0 -0
  222. data/spec/dummy/solr/default/data/tlog/tlog.0000000000000000639 +0 -0
  223. data/spec/dummy/solr/test/data/index/segments_1 +0 -0
  224. /data/spec/dummy/solr/default/data/index/{_b2.fdx → _1dz.fdx} +0 -0
  225. /data/spec/dummy/solr/default/data/index/{_b2.fnm → _1dz.fnm} +0 -0
  226. /data/spec/dummy/solr/default/data/index/{_b2.nvd → _1dz.nvd} +0 -0
  227. /data/spec/dummy/solr/default/data/index/{_b2.nvm → _1dz.nvm} +0 -0
  228. /data/spec/dummy/solr/default/data/index/{_b2_Lucene41_0.doc → _1dz_Lucene41_0.doc} +0 -0
  229. /data/spec/dummy/solr/default/data/index/{_b2_Lucene41_0.pos → _1dz_Lucene41_0.pos} +0 -0
  230. /data/spec/dummy/solr/default/data/index/{_b2_Lucene41_0.tip → _1dz_Lucene41_0.tip} +0 -0
  231. /data/spec/dummy/solr/default/data/index/{_b3.fdx → _1e0.fdx} +0 -0
  232. /data/spec/dummy/solr/default/data/index/{_b3.nvd → _1e0.nvd} +0 -0
  233. /data/spec/dummy/solr/default/data/index/{_b3.nvm → _1e0.nvm} +0 -0
  234. /data/spec/dummy/solr/default/data/index/{_b3_Lucene41_0.doc → _1e0_Lucene41_0.doc} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19d8e03ae2f152bb7bd62973d11643c6c9584142
4
- data.tar.gz: d81b4c9c0736f99728e333b39403bc5b1b1d78ce
3
+ metadata.gz: 363a80afc5aa4dd9e672f1a6f5e3b892787688e9
4
+ data.tar.gz: 12ee593d3824d87cd5b8740e0d9dc55e39cc3230
5
5
  SHA512:
6
- metadata.gz: d8d99e42d2685c5f0d4b3efd2f867f1758cab20215203e5b567a9ff984177f1ca7b5e5010e2d0fb0dfa5352ac1f992672fc43ed11e790023cbfae8f343122981
7
- data.tar.gz: f9a6a667c97accb06e93a3741425629457635aaec5f4faa7fb932a2ac23e767a82ef7c652e4d8ea683cde09a8ab1c9144c3a365a7cc561fe187a198cb05f3ba4
6
+ metadata.gz: 3da5de410c3b035d7a3b32b7078e5ed17a2c6818da98bc60f56df4bd6e94845c7fde1a835fa9010016b7b3c71bb6655bcd2dc74c7c93b9f35bcd8aaf62f031ac
7
+ data.tar.gz: c4496f7b6a4de8332a9b3e4336ea72feb9012c347a40693916b2f274eb57b83c2e21713714fd693cdd61727601ce5aa678b34a4e557753960e91dbd6dfdedb70
@@ -0,0 +1,100 @@
1
+ class EventExportFilesController < ApplicationController
2
+ load_and_authorize_resource
3
+
4
+ # GET /event_export_files
5
+ # GET /event_export_files.json
6
+ def index
7
+ @event_export_files = EventExportFile.order('id DESC').page(params[:page])
8
+
9
+ respond_to do |format|
10
+ format.html # index.html.erb
11
+ format.json { render json: @event_export_files }
12
+ end
13
+ end
14
+
15
+ # GET /event_export_files/1
16
+ # GET /event_export_files/1.json
17
+ def show
18
+ if @event_export_file.event_export.path
19
+ unless Setting.uploaded_file.storage == :s3
20
+ file = @event_export_file.event_export.path
21
+ end
22
+ end
23
+
24
+ respond_to do |format|
25
+ format.html # show.html.erb
26
+ format.json { render json: @event_export_file }
27
+ format.download {
28
+ if Setting.uploaded_file.storage == :s3
29
+ redirect_to @event_export_file.event_export.expiring_url(10)
30
+ else
31
+ send_file file, filename: @event_export_file.event_export_file_name, type: 'application/octet-stream'
32
+ end
33
+ }
34
+ end
35
+ end
36
+
37
+ # GET /event_export_files/new
38
+ # GET /event_export_files/new.json
39
+ def new
40
+ @event_export_file = EventExportFile.new
41
+ @event_export_file.user = current_user
42
+
43
+ respond_to do |format|
44
+ format.html # new.html.erb
45
+ format.json { render json: @event_export_file }
46
+ end
47
+ end
48
+
49
+ # GET /event_export_files/1/edit
50
+ def edit
51
+ end
52
+
53
+ # POST /event_export_files
54
+ # POST /event_export_files.json
55
+ def create
56
+ @event_export_file = EventExportFile.new(params[:event_export_file])
57
+ @event_export_file.user = current_user
58
+
59
+ respond_to do |format|
60
+ if @event_export_file.save
61
+ if @event_export_file.mode == 'export'
62
+ Resque.enqueue(EventExportFileQueue, @event_export_file.id)
63
+ end
64
+ format.html { redirect_to @event_export_file, notice: t('export.successfully_created', model: t('activerecord.models.event_export_file')) }
65
+ format.json { render json: @event_export_file, status: :created, location: @event_export_file }
66
+ else
67
+ format.html { render action: "new" }
68
+ format.json { render json: @event_export_file.errors, status: :unprocessable_entity }
69
+ end
70
+ end
71
+ end
72
+
73
+ # PUT /event_export_files/1
74
+ # PUT /event_export_files/1.json
75
+ def update
76
+ respond_to do |format|
77
+ if @event_export_file.update_attributes(params[:event_export_file])
78
+ if @event_export_file.mode == 'export'
79
+ EventExportFileQueue.perform(@event_export_file.id)
80
+ end
81
+ format.html { redirect_to @event_export_file, notice: t('controller.successfully_updated', model: t('activerecord.models.event_export_file')) }
82
+ format.json { head :no_content }
83
+ else
84
+ format.html { render action: "edit" }
85
+ format.json { render json: @event_export_file.errors, status: :unprocessable_entity }
86
+ end
87
+ end
88
+ end
89
+
90
+ # DELETE /event_export_files/1
91
+ # DELETE /event_export_files/1.json
92
+ def destroy
93
+ @event_export_file.destroy
94
+
95
+ respond_to do |format|
96
+ format.html { redirect_to event_export_files_url }
97
+ format.json { head :no_content }
98
+ end
99
+ end
100
+ end
@@ -1,5 +1,6 @@
1
1
  class EventImportFilesController < ApplicationController
2
2
  load_and_authorize_resource
3
+ before_filter :prepare_options, only: [:new, :edit]
3
4
 
4
5
  # GET /event_import_files
5
6
  # GET /event_import_files.json
@@ -8,7 +9,7 @@ class EventImportFilesController < ApplicationController
8
9
 
9
10
  respond_to do |format|
10
11
  format.html # index.html.erb
11
- format.json { render :json => @event_import_files }
12
+ format.json { render json: @event_import_files }
12
13
  end
13
14
  end
14
15
 
@@ -23,12 +24,12 @@ class EventImportFilesController < ApplicationController
23
24
 
24
25
  respond_to do |format|
25
26
  format.html # show.html.erb
26
- format.json { render :json => @event_import_file }
27
+ format.json { render json: @event_import_file }
27
28
  format.download {
28
29
  if Setting.uploaded_file.storage == :s3
29
30
  redirect_to @event_import_file.event_import.expiring_url(10)
30
31
  else
31
- send_file file, :filename => @event_import_file.event_import_file_name, :type => 'application/octet-stream'
32
+ send_file file, filename: @event_import_file.event_import_file_name, type: 'application/octet-stream'
32
33
  end
33
34
  }
34
35
  end
@@ -38,10 +39,12 @@ class EventImportFilesController < ApplicationController
38
39
  # GET /event_import_files/new.json
39
40
  def new
40
41
  @event_import_file = EventImportFile.new
42
+ @event_import_file.default_library = current_user.profile.library
43
+ @event_import_file.default_event_category = EventCategory.order(:position).first
41
44
 
42
45
  respond_to do |format|
43
46
  format.html # new.html.erb
44
- format.json { render :json => @event_import_file }
47
+ format.json { render json: @event_import_file }
45
48
  end
46
49
  end
47
50
 
@@ -60,12 +63,12 @@ class EventImportFilesController < ApplicationController
60
63
  if @event_import_file.mode == 'import'
61
64
  Resque.enqueue(EventImportFileQueue, @event_import_file.id)
62
65
  end
63
- flash[:notice] = t('controller.successfully_created', :model => t('activerecord.models.event_import_file'))
64
- format.html { redirect_to(@event_import_file) }
65
- format.json { render :json => @event_import_file, :status => :created, :location => @event_import_file }
66
+ format.html { redirect_to @event_import_file, notice: t('import.successfully_created', model: t('activerecord.models.event_import_file')) }
67
+ format.json { render json: @event_import_file, status: :created, location: @event_import_file }
66
68
  else
67
- format.html { render :action => "new" }
68
- format.json { render :json => @event_import_file.errors, :status => :unprocessable_entity }
69
+ prepare_options
70
+ format.html { render action: "new" }
71
+ format.json { render json: @event_import_file.errors, status: :unprocessable_entity }
69
72
  end
70
73
  end
71
74
  end
@@ -78,11 +81,12 @@ class EventImportFilesController < ApplicationController
78
81
  if @event_import_file.mode == 'import'
79
82
  Resque.enqueue(EventImportFileQueue, @event_import_file.id)
80
83
  end
81
- format.html { redirect_to @event_import_file, :notice => t('controller.successfully_updated', :model => t('activerecord.models.event_import_file')) }
84
+ format.html { redirect_to @event_import_file, notice: t('controller.successfully_updated', model: t('activerecord.models.event_import_file')) }
82
85
  format.json { head :no_content }
83
86
  else
84
- format.html { render :action => "edit" }
85
- format.json { render :json => @event_import_file.errors, :status => :unprocessable_entity }
87
+ prepare_options
88
+ format.html { render action: "edit" }
89
+ format.json { render json: @event_import_file.errors, status: :unprocessable_entity }
86
90
  end
87
91
  end
88
92
  end
@@ -97,4 +101,9 @@ class EventImportFilesController < ApplicationController
97
101
  format.json { head :no_content }
98
102
  end
99
103
  end
104
+
105
+ def prepare_options
106
+ @libraries = Library.all
107
+ @event_categories = EventCategory.all
108
+ end
100
109
  end
@@ -1,5 +1,5 @@
1
1
  class EventImportResultsController < InheritedResources::Base
2
- respond_to :html, :json, :tsv
2
+ respond_to :html, :json, :txt
3
3
  load_and_authorize_resource
4
4
  has_scope :file_id
5
5
  actions :index, :show, :destroy
@@ -2,11 +2,11 @@
2
2
  class EventsController < ApplicationController
3
3
  load_and_authorize_resource
4
4
  before_filter :get_library, :get_agent
5
- before_filter :get_libraries, :except => :destroy
5
+ before_filter :get_libraries, except: :destroy
6
6
  before_filter :prepare_options
7
- before_filter :store_page, :only => :index
8
- after_filter :solr_commit, :only => [:create, :update, :destroy]
9
- after_filter :convert_charset, :only => :index
7
+ before_filter :store_page, only: :index
8
+ after_filter :solr_commit, only: [:create, :update, :destroy]
9
+ after_filter :convert_charset, only: :index
10
10
 
11
11
  # GET /events
12
12
  # GET /events.json
@@ -45,9 +45,9 @@ class EventsController < ApplicationController
45
45
 
46
46
  respond_to do |format|
47
47
  format.html # index.html.erb
48
- format.json { render :json => @events }
49
- format.rss { render :layout => false }
50
- format.csv
48
+ format.json { render json: @events }
49
+ format.rss { render layout: false }
50
+ format.txt
51
51
  format.atom
52
52
  format.ics
53
53
  end
@@ -60,7 +60,7 @@ class EventsController < ApplicationController
60
60
 
61
61
  respond_to do |format|
62
62
  format.html # show.html.erb
63
- format.json { render :json => @event }
63
+ format.json { render json: @event }
64
64
  end
65
65
  end
66
66
 
@@ -83,7 +83,7 @@ class EventsController < ApplicationController
83
83
 
84
84
  respond_to do |format|
85
85
  format.html # new.html.erb
86
- format.json { render :json => @event }
86
+ format.json { render json: @event }
87
87
  end
88
88
  end
89
89
 
@@ -101,13 +101,13 @@ class EventsController < ApplicationController
101
101
 
102
102
  respond_to do |format|
103
103
  if @event.save
104
- flash[:notice] = t('controller.successfully_created', :model => t('activerecord.models.event'))
104
+ flash[:notice] = t('controller.successfully_created', model: t('activerecord.models.event'))
105
105
  format.html { redirect_to(@event) }
106
- format.json { render :json => @event, :status => :created, :location => @event }
106
+ format.json { render json: @event, status: :created, location: @event }
107
107
  else
108
108
  prepare_options
109
- format.html { render :action => "new" }
110
- format.json { render :json => @event.errors, :status => :unprocessable_entity }
109
+ format.html { render action: "new" }
110
+ format.json { render json: @event.errors, status: :unprocessable_entity }
111
111
  end
112
112
  end
113
113
  end
@@ -121,13 +121,13 @@ class EventsController < ApplicationController
121
121
  respond_to do |format|
122
122
  if @event.update_attributes(params[:event])
123
123
 
124
- flash[:notice] = t('controller.successfully_updated', :model => t('activerecord.models.event'))
124
+ flash[:notice] = t('controller.successfully_updated', model: t('activerecord.models.event'))
125
125
  format.html { redirect_to(@event) }
126
126
  format.json { head :no_content }
127
127
  else
128
128
  prepare_options
129
- format.html { render :action => "edit" }
130
- format.json { render :json => @event.errors, :status => :unprocessable_entity }
129
+ format.html { render action: "edit" }
130
+ format.json { render json: @event.errors, status: :unprocessable_entity }
131
131
  end
132
132
  end
133
133
  end
@@ -8,7 +8,7 @@ class ParticipatesController < ApplicationController
8
8
 
9
9
  respond_to do |format|
10
10
  format.html # index.html.erb
11
- format.json { render :json => @participates }
11
+ format.json { render json: @participates }
12
12
  end
13
13
  end
14
14
 
@@ -17,7 +17,7 @@ class ParticipatesController < ApplicationController
17
17
  def show
18
18
  respond_to do |format|
19
19
  format.html # show.html.erb
20
- format.json { render :json => @participate }
20
+ format.json { render json: @participate }
21
21
  end
22
22
  end
23
23
 
@@ -28,7 +28,7 @@ class ParticipatesController < ApplicationController
28
28
 
29
29
  respond_to do |format|
30
30
  format.html # new.html.erb
31
- format.json { render :json => @participate }
31
+ format.json { render json: @participate }
32
32
  end
33
33
  end
34
34
 
@@ -45,10 +45,10 @@ class ParticipatesController < ApplicationController
45
45
  if @participate.save
46
46
  flash[:notice] = 'Participate was successfully created.'
47
47
  format.html { redirect_to(@participate) }
48
- format.json { render :json => @participate, :status => :created, :location => @participate }
48
+ format.json { render json: @participate, status: :created, location: @participate }
49
49
  else
50
- format.html { render :action => "new" }
51
- format.json { render :json => @participate.errors, :status => :unprocessable_entity }
50
+ format.html { render action: "new" }
51
+ format.json { render json: @participate.errors, status: :unprocessable_entity }
52
52
  end
53
53
  end
54
54
  end
@@ -62,8 +62,8 @@ class ParticipatesController < ApplicationController
62
62
  format.html { redirect_to(@participate) }
63
63
  format.json { head :no_content }
64
64
  else
65
- format.html { render :action => "edit" }
66
- format.json { render :json => @participate.errors, :status => :unprocessable_entity }
65
+ format.html { render action: "edit" }
66
+ format.json { render json: @participate.errors, status: :unprocessable_entity }
67
67
  end
68
68
  end
69
69
  end
@@ -12,6 +12,7 @@ module EnjuEvent
12
12
  can :manage, [
13
13
  Event,
14
14
  EventImportFile,
15
+ EventExportFile,
15
16
  Participate
16
17
  ]
17
18
  can :read, EventImportResult
@@ -19,6 +20,7 @@ module EnjuEvent
19
20
  can :manage, [
20
21
  Event,
21
22
  EventImportFile,
23
+ EventExportFile,
22
24
  Participate
23
25
  ]
24
26
  can :read, [
data/app/models/event.rb CHANGED
@@ -9,11 +9,11 @@ class Event < ActiveRecord::Base
9
9
  scope :upcoming, lambda {|datetime| where('start_at >= ?', Time.zone.parse(datetime).beginning_of_day)}
10
10
  scope :at, lambda {|library| where(:library_id => library.id)}
11
11
 
12
- belongs_to :event_category, :validate => true
13
- belongs_to :library, :validate => true
14
- has_many :picture_files, :as => :picture_attachable
15
- has_many :participates, :dependent => :destroy
16
- has_many :agents, :through => :participates
12
+ belongs_to :event_category, validate: true
13
+ belongs_to :library, validate: true
14
+ has_many :picture_files, as: :picture_attachable
15
+ has_many :participates, dependent: :destroy
16
+ has_many :agents, through: :participates
17
17
  has_one :event_import_result
18
18
 
19
19
  has_event_calendar
@@ -27,11 +27,11 @@ class Event < ActiveRecord::Base
27
27
  time :end_at
28
28
  end
29
29
 
30
- validates_presence_of :name, :library, :event_category
30
+ validates_presence_of :name, :library, :event_category, :start_at, :end_at
31
31
  validates_associated :library, :event_category
32
32
  validate :check_date
33
33
  before_validation :set_date
34
- before_validation :set_display_name, :on => :create
34
+ before_validation :set_display_name, on: :create
35
35
 
36
36
  paginates_per 10
37
37
 
@@ -42,12 +42,9 @@ class Event < ActiveRecord::Base
42
42
  end
43
43
 
44
44
  def set_all_day
45
- return false unless start_at
46
- self.start_at = start_at.beginning_of_day
47
- if end_at
45
+ if start_at and end_at
46
+ self.start_at = start_at.beginning_of_day
48
47
  self.end_at = end_at.end_of_day
49
- else
50
- self.end_at = start_at.end_of_day
51
48
  end
52
49
  end
53
50
 
@@ -63,6 +60,31 @@ class Event < ActiveRecord::Base
63
60
  def set_display_name
64
61
  self.display_name = name if display_name.blank?
65
62
  end
63
+
64
+ def self.export(options = {format: :txt})
65
+ header = %w(
66
+ name
67
+ event_category
68
+ library
69
+ start_at
70
+ end_at
71
+ all_day
72
+ ).join("\t")
73
+ events = Event.all.map{|e|
74
+ lines = []
75
+ lines << e.name
76
+ lines << e.event_category.name
77
+ lines << e.library.name
78
+ lines << e.start_at
79
+ lines << e.end_at
80
+ lines << e.all_day
81
+ }
82
+ if options[:format] == :txt
83
+ events.map{|e| e.join("\t")}.unshift(header).join("\r\n")
84
+ else
85
+ event
86
+ end
87
+ end
66
88
  end
67
89
 
68
90
  # == Schema Information
@@ -70,8 +92,8 @@ end
70
92
  # Table name: events
71
93
  #
72
94
  # id :integer not null, primary key
73
- # library_id :integer default(1), not null
74
- # event_category_id :integer default(1), not null
95
+ # library_id :integer not null
96
+ # event_category_id :integer not null
75
97
  # name :string(255)
76
98
  # note :text
77
99
  # start_at :datetime
@@ -82,4 +104,3 @@ end
82
104
  # created_at :datetime not null
83
105
  # updated_at :datetime not null
84
106
  #
85
-
@@ -1,7 +1,7 @@
1
1
  class EventCategory < ActiveRecord::Base
2
2
  attr_accessible :name, :display_name, :note
3
3
  include MasterModel
4
- default_scope :order => "position"
4
+ default_scope order: "position"
5
5
  has_many :events
6
6
 
7
7
  paginates_per 10
@@ -0,0 +1,51 @@
1
+ class EventExportFile < ActiveRecord::Base
2
+ include Statesman::Adapters::ActiveRecordModel
3
+ include ExportFile
4
+ enju_export_file_model
5
+ has_attached_file :event_export
6
+ validates_attachment_content_type :event_export, :content_type => /\Atext\/plain\Z/
7
+ has_many :event_export_file_transitions
8
+
9
+ def state_machine
10
+ EventExportFileStateMachine.new(self, transition_class: EventExportFileTransition)
11
+ end
12
+
13
+ delegate :can_transition_to?, :transition_to!, :transition_to, :current_state,
14
+ to: :state_machine
15
+
16
+ def export!
17
+ transition_to!(:started)
18
+ tempfile = Tempfile.new(['event_export_file_', '.txt'])
19
+ file = Event.export(format: :txt)
20
+ tempfile.puts(file)
21
+ tempfile.close
22
+ self.event_export = File.new(tempfile.path, "r")
23
+ if save
24
+ send_message
25
+ end
26
+ transition_to!(:completed)
27
+ rescue => e
28
+ transition_to!(:failed)
29
+ raise e
30
+ end
31
+
32
+ private
33
+ def self.transition_class
34
+ EventExportFileTransition
35
+ end
36
+ end
37
+
38
+ # == Schema Information
39
+ #
40
+ # Table name: event_export_files
41
+ #
42
+ # id :integer not null, primary key
43
+ # user_id :integer
44
+ # event_export_file_name :string(255)
45
+ # event_export_content_type :string(255)
46
+ # event_export_file_size :integer
47
+ # event_export_updated_at :datetime
48
+ # executed_at :datetime
49
+ # created_at :datetime not null
50
+ # updated_at :datetime not null
51
+ #
@@ -0,0 +1,15 @@
1
+ class EventExportFileStateMachine
2
+ include Statesman::Machine
3
+
4
+ state :pending, initial: true
5
+ state :started
6
+ state :completed
7
+ state :failed
8
+
9
+ transition from: :pending, to: :started
10
+ transition from: :started, to: [:completed, :failed]
11
+
12
+ after_transition(from: :pending, to: :started) do |event_export_file|
13
+ event_export_file.update_column(:executed_at, Time.zone.now)
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ class EventExportFileTransition < ActiveRecord::Base
2
+ include Statesman::Adapters::ActiveRecordTransition
3
+
4
+
5
+ belongs_to :event_export_file, inverse_of: :event_export_file_transitions
6
+ attr_accessible :to_state, :sort_key, :metadata
7
+ end
8
+
9
+ # == Schema Information
10
+ #
11
+ # Table name: event_export_file_transitions
12
+ #
13
+ # id :integer not null, primary key
14
+ # to_state :string(255)
15
+ # metadata :text default("{}")
16
+ # sort_key :integer
17
+ # event_export_file_id :integer
18
+ # created_at :datetime not null
19
+ # updated_at :datetime not null
20
+ #