enju_seed 0.3.0.beta.4 → 0.3.0.beta.6

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 (313) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +1 -9
  3. data/Rakefile +8 -17
  4. data/app/controllers/profiles_controller.rb +29 -30
  5. data/app/controllers/roles_controller.rb +1 -2
  6. data/app/models/concerns/enju_seed/enju_user.rb +27 -23
  7. data/app/models/concerns/master_model.rb +13 -2
  8. data/app/models/identity.rb +2 -2
  9. data/app/models/profile.rb +12 -10
  10. data/app/models/role.rb +27 -11
  11. data/app/models/user_has_role.rb +4 -4
  12. data/app/views/profiles/show.html.erb +1 -1
  13. data/app/views/roles/show.html.erb +1 -1
  14. data/db/migrate/041_create_roles.rb +7 -6
  15. data/db/migrate/20100606065209_create_user_has_roles.rb +3 -3
  16. data/db/migrate/20130221154434_add_additional_attributes_to_user.rb +2 -2
  17. data/db/migrate/20140122054321_create_profiles.rb +8 -5
  18. data/db/migrate/20140610123439_drop_email_unique_constraint_enju_leaf_rc10.rb +11 -0
  19. data/db/migrate/20140811031145_add_expired_at_to_profile.rb +1 -1
  20. data/db/migrate/20141003181336_add_full_name_transcription_to_profile.rb +1 -1
  21. data/db/migrate/20141003182825_add_date_of_birth_to_profile.rb +1 -1
  22. data/db/migrate/20150421023923_create_identities.rb +6 -4
  23. data/db/migrate/20151126005552_add_provider_to_identity.rb +2 -2
  24. data/lib/enju_seed/engine.rb +2 -3
  25. data/lib/enju_seed/localized_name.rb +3 -1
  26. data/lib/enju_seed/version.rb +1 -1
  27. data/lib/enju_seed.rb +3 -2
  28. data/lib/generators/enju_seed/update/update_generator.rb +9 -0
  29. data/spec/controllers/my_accounts_controller_spec.rb +62 -51
  30. data/spec/controllers/profiles_controller_spec.rb +153 -156
  31. data/spec/controllers/roles_controller_spec.rb +35 -35
  32. data/spec/dummy/Rakefile +1 -1
  33. data/spec/dummy/app/controllers/application_controller.rb +1 -0
  34. data/spec/dummy/app/models/user.rb +2 -2
  35. data/spec/dummy/bin/rails +1 -1
  36. data/spec/dummy/bin/setup +19 -10
  37. data/spec/dummy/bin/update +29 -0
  38. data/spec/dummy/bin/yarn +11 -0
  39. data/spec/dummy/config/application.rb +5 -1
  40. data/spec/dummy/config/cable.yml +10 -0
  41. data/spec/dummy/config/database.yml +10 -70
  42. data/spec/dummy/config/environments/development.rb +1 -1
  43. data/spec/dummy/config/environments/production.rb +8 -3
  44. data/spec/dummy/config/environments/test.rb +1 -1
  45. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  46. data/spec/dummy/config/initializers/assets.rb +7 -4
  47. data/spec/dummy/config/initializers/cookies_serializer.rb +2 -0
  48. data/spec/dummy/config/initializers/friendly_id.rb +75 -75
  49. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -2
  50. data/spec/dummy/config/puma.rb +56 -0
  51. data/spec/dummy/config/routes.rb +4 -0
  52. data/spec/dummy/config/secrets.yml +15 -5
  53. data/spec/dummy/config/spring.rb +6 -0
  54. data/spec/dummy/config.ru +2 -1
  55. data/spec/dummy/db/migrate/001_create_agents.rb +7 -7
  56. data/spec/dummy/db/migrate/002_devise_create_users.rb +4 -3
  57. data/spec/dummy/db/migrate/005_create_manifestations.rb +5 -4
  58. data/spec/dummy/db/migrate/006_create_items.rb +4 -3
  59. data/spec/dummy/db/migrate/012_create_owns.rb +5 -3
  60. data/spec/dummy/db/migrate/015_create_creates.rb +5 -3
  61. data/spec/dummy/db/migrate/032_create_checkins.rb +1 -1
  62. data/spec/dummy/db/migrate/033_create_checkouts.rb +1 -1
  63. data/spec/dummy/db/migrate/035_create_reserves.rb +1 -1
  64. data/spec/dummy/db/migrate/047_create_produces.rb +5 -3
  65. data/spec/dummy/db/migrate/059_create_libraries.rb +7 -8
  66. data/spec/dummy/db/migrate/069_create_shelves.rb +3 -3
  67. data/spec/dummy/db/migrate/073_create_carrier_types.rb +2 -2
  68. data/spec/dummy/db/migrate/077_create_user_groups.rb +4 -4
  69. data/spec/dummy/db/migrate/080_create_library_groups.rb +6 -6
  70. data/spec/dummy/db/migrate/112_create_frequencies.rb +2 -2
  71. data/spec/dummy/db/migrate/117_create_form_of_works.rb +2 -2
  72. data/spec/dummy/db/migrate/120_create_baskets.rb +2 -2
  73. data/spec/dummy/db/migrate/121_create_checked_items.rb +1 -1
  74. data/spec/dummy/db/migrate/124_create_bookstores.rb +3 -3
  75. data/spec/dummy/db/migrate/125_create_donates.rb +3 -3
  76. data/spec/dummy/db/migrate/127_create_use_restrictions.rb +1 -1
  77. data/spec/dummy/db/migrate/129_create_item_has_use_restrictions.rb +1 -1
  78. data/spec/dummy/db/migrate/130_create_request_status_types.rb +3 -3
  79. data/spec/dummy/db/migrate/131_create_request_types.rb +3 -3
  80. data/spec/dummy/db/migrate/132_create_circulation_statuses.rb +1 -1
  81. data/spec/dummy/db/migrate/133_create_agent_merges.rb +2 -2
  82. data/spec/dummy/db/migrate/134_create_agent_merge_lists.rb +1 -1
  83. data/spec/dummy/db/migrate/149_create_message_templates.rb +18 -0
  84. data/spec/dummy/db/migrate/154_create_messages.rb +23 -0
  85. data/spec/dummy/db/migrate/20080819181903_create_message_requests.rb +18 -0
  86. data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +5 -3
  87. data/spec/dummy/db/migrate/20080905191442_create_agent_types.rb +2 -2
  88. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +3 -5
  89. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +4 -3
  90. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +6 -6
  91. data/spec/dummy/db/migrate/20081025083323_create_countries.rb +5 -5
  92. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +6 -6
  93. data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +2 -2
  94. data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +1 -1
  95. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +1 -1
  96. data/spec/dummy/db/migrate/20081030023412_create_checkout_types.rb +1 -1
  97. data/spec/dummy/db/migrate/20081030023518_create_user_group_has_checkout_types.rb +1 -1
  98. data/spec/dummy/db/migrate/20081030023615_create_carrier_type_has_checkout_types.rb +1 -1
  99. data/spec/dummy/db/migrate/20081212075554_create_checkout_stat_has_manifestations.rb +1 -1
  100. data/spec/dummy/db/migrate/20081212080038_create_manifestation_checkout_stats.rb +1 -1
  101. data/spec/dummy/db/migrate/20081215094302_create_user_checkout_stats.rb +1 -1
  102. data/spec/dummy/db/migrate/20081215094955_create_checkout_stat_has_users.rb +1 -1
  103. data/spec/dummy/db/migrate/20081216190517_create_reserve_stat_has_manifestations.rb +1 -1
  104. data/spec/dummy/db/migrate/20081216190724_create_manifestation_reserve_stats.rb +1 -1
  105. data/spec/dummy/db/migrate/20081220023628_create_user_reserve_stats.rb +1 -1
  106. data/spec/dummy/db/migrate/20081220034117_create_reserve_stat_has_users.rb +1 -1
  107. data/spec/dummy/db/migrate/20090321130448_add_completed_at_to_user_checkout_stat.rb +1 -1
  108. data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +1 -1
  109. data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +1 -1
  110. data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +2 -2
  111. data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +2 -2
  112. data/spec/dummy/db/migrate/20090812151902_create_agent_relationship_types.rb +2 -2
  113. data/spec/dummy/db/migrate/20090831220301_create_lending_policies.rb +1 -1
  114. data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +1 -1
  115. data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +2 -2
  116. data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +1 -1
  117. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +7 -4
  118. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +2 -2
  119. data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +1 -1
  120. data/spec/dummy/db/migrate/20100314190054_add_opening_hour_to_library.rb +1 -1
  121. data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +1 -1
  122. data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +6 -4
  123. data/spec/dummy/db/migrate/20100606073747_create_agent_relationships.rb +1 -1
  124. data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +2 -2
  125. data/spec/dummy/db/migrate/20100814091104_add_position_to_agent_relationship.rb +1 -1
  126. data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +1 -1
  127. data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +1 -1
  128. data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +1 -1
  129. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +2 -2
  130. data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +1 -1
  131. data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_agent.rb +1 -1
  132. data/spec/dummy/db/migrate/20110301134521_add_expire_date_to_reserve.rb +1 -1
  133. data/spec/dummy/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +2 -2
  134. data/spec/dummy/db/migrate/20110328130826_add_current_checkout_count_to_user_group_has_checkout_type.rb +1 -1
  135. data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +1 -1
  136. data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +1 -1
  137. data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +1 -1
  138. data/spec/dummy/db/migrate/20110621093332_remove_expire_date_from_reserve.rb +1 -1
  139. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +1 -1
  140. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +3 -3
  141. data/spec/dummy/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +1 -1
  142. data/spec/dummy/db/migrate/20110913115320_add_lft_and_rgt_to_message.rb +11 -0
  143. data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +1 -1
  144. data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +1 -1
  145. data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +1 -1
  146. data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +1 -1
  147. data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +1 -1
  148. data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +1 -1
  149. data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +1 -1
  150. data/spec/dummy/db/migrate/20111129044509_add_pickup_location_to_reserve.rb +1 -1
  151. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +1 -1
  152. data/spec/dummy/db/migrate/20120125050502_add_depth_to_message.rb +6 -0
  153. data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +1 -1
  154. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +1 -1
  155. data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +1 -1
  156. data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +2 -2
  157. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +4 -4
  158. data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +1 -1
  159. data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +1 -1
  160. data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +1 -1
  161. data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +1 -1
  162. data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +1 -1
  163. data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
  164. data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +5 -0
  165. data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +1 -1
  166. data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +1 -1
  167. data/spec/dummy/db/migrate/20120424103932_add_librarian_id_to_checked_item.rb +1 -1
  168. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +2 -2
  169. data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +1 -1
  170. data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +1 -1
  171. data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +1 -1
  172. data/spec/dummy/db/migrate/20130303124821_add_retained_at_to_reserve.rb +1 -1
  173. data/spec/dummy/db/migrate/20130304015019_add_postponed_at_to_reserve.rb +1 -1
  174. data/spec/dummy/db/migrate/20130412083556_add_latitude_and_longitude_to_library.rb +1 -1
  175. data/spec/dummy/db/migrate/20130416054135_add_circulation_status_id_to_item.rb +1 -1
  176. data/spec/dummy/db/migrate/20130421093852_add_periodical_to_manifestation.rb +1 -1
  177. data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +1 -1
  178. data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +1 -1
  179. data/spec/dummy/db/migrate/20130429020822_add_root_manifestation_id_to_series_statement.rb +1 -1
  180. data/spec/dummy/db/migrate/20130506175303_create_identifier_types.rb +1 -1
  181. data/spec/dummy/db/migrate/20130506175834_create_identifiers.rb +3 -2
  182. data/spec/dummy/db/migrate/20130509185724_add_statement_of_responsibility_to_manifestation.rb +1 -1
  183. data/spec/dummy/db/migrate/20130519065638_add_lock_version_to_reserve.rb +1 -1
  184. data/spec/dummy/db/migrate/20130519065837_add_lock_version_to_checkin.rb +1 -1
  185. data/spec/dummy/db/migrate/20140110122216_create_user_import_files.rb +3 -3
  186. data/spec/dummy/db/migrate/20140110131010_create_user_import_results.rb +3 -3
  187. data/spec/dummy/db/migrate/20140518050147_create_reserve_transitions.rb +3 -3
  188. data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +18 -0
  189. data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +18 -0
  190. data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +3 -3
  191. data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +3 -3
  192. data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +3 -3
  193. data/spec/dummy/db/migrate/20140524074813_create_user_import_file_transitions.rb +2 -3
  194. data/spec/dummy/db/migrate/20140528045518_create_user_checkout_stat_transitions.rb +4 -4
  195. data/spec/dummy/db/migrate/20140528045539_create_user_reserve_stat_transitions.rb +4 -4
  196. data/spec/dummy/db/migrate/20140528045600_create_manifestation_checkout_stat_transitions.rb +5 -5
  197. data/spec/dummy/db/migrate/20140528045617_create_manifestation_reserve_stat_transitions.rb +5 -5
  198. data/spec/dummy/db/migrate/20140614065404_create_resource_export_files.rb +2 -1
  199. data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +3 -3
  200. data/spec/dummy/db/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +1 -1
  201. data/spec/dummy/db/migrate/20140628073524_add_user_encoding_to_agent_import_file.rb +1 -1
  202. data/spec/dummy/db/migrate/20140628073535_add_user_encoding_to_resource_import_file.rb +1 -1
  203. data/spec/dummy/db/migrate/20140709113413_create_user_export_files.rb +3 -2
  204. data/spec/dummy/db/migrate/20140709113905_create_user_export_file_transitions.rb +2 -2
  205. data/spec/dummy/db/migrate/20140720140916_add_binding_item_identifier_to_item.rb +1 -1
  206. data/spec/dummy/db/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +2 -2
  207. data/spec/dummy/db/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +2 -2
  208. data/spec/dummy/db/migrate/20140721151416_add_default_shelf_id_to_resource_import_file.rb +1 -1
  209. data/spec/dummy/db/migrate/20140802082007_add_manifestation_id_to_item.rb +3 -2
  210. data/spec/dummy/db/migrate/20140810061942_add_user_id_to_user_checkout_stat.rb +1 -1
  211. data/spec/dummy/db/migrate/20140810091231_add_checkout_icalendar_token_to_profile.rb +1 -1
  212. data/spec/dummy/db/migrate/20140810091417_add_save_checkout_history_to_profile.rb +1 -1
  213. data/spec/dummy/db/migrate/20140813182425_add_publication_place_to_manifestation.rb +1 -1
  214. data/spec/dummy/db/migrate/20140821151023_create_colors.rb +2 -4
  215. data/spec/dummy/db/migrate/20140822114527_add_error_message_to_resource_import_result.rb +5 -0
  216. data/spec/dummy/db/migrate/20140823083524_add_extent_to_manifestation.rb +1 -1
  217. data/spec/dummy/db/migrate/20140823094847_add_dimensions_to_manifestation.rb +1 -1
  218. data/spec/dummy/db/migrate/20140823095740_rename_manifestation_periodical_to_serial.rb +1 -1
  219. data/spec/dummy/db/migrate/20141014065831_add_shelf_id_to_checkout.rb +1 -1
  220. data/spec/dummy/db/migrate/20141020120523_add_library_id_to_checkout.rb +1 -1
  221. data/spec/dummy/db/migrate/20150106001709_create_demands.rb +1 -1
  222. data/spec/dummy/db/migrate/20150117111136_add_foreign_key_to_items_referencing_manifestations.rb +5 -0
  223. data/spec/dummy/db/migrate/20150221063719_add_settings_to_library_group.rb +2 -2
  224. data/spec/dummy/db/migrate/20150506105356_add_error_message_to_user_import_result.rb +5 -0
  225. data/spec/dummy/db/migrate/20150924115059_create_withdraws.rb +4 -4
  226. data/spec/dummy/db/migrate/20151125004028_add_profile_id_to_agent.rb +1 -1
  227. data/spec/dummy/db/migrate/20151213070943_add_translation_table_to_library_group.rb +5 -3
  228. data/spec/dummy/db/migrate/20151213072705_add_footer_banner_to_library_group.rb +20 -3
  229. data/spec/dummy/db/migrate/20160610093229_add_html_snippet_to_library_group.rb +1 -1
  230. data/spec/dummy/db/migrate/20160627232219_add_most_recent_to_user_import_file_transitions.rb +1 -1
  231. data/spec/dummy/db/migrate/20160627232316_add_most_recent_to_user_export_file_transitions.rb +1 -1
  232. data/spec/dummy/db/migrate/20160703184619_add_most_recent_to_reserve_transitions.rb +1 -1
  233. data/spec/dummy/db/migrate/20160703184650_add_most_recent_to_manifestation_checkout_stat_transitions.rb +1 -1
  234. data/spec/dummy/db/migrate/20160703184723_add_most_recent_to_manifestation_reserve_stat_transitions.rb +1 -1
  235. data/spec/dummy/db/migrate/20160703184747_add_most_recent_to_user_checkout_stat_transitions.rb +1 -1
  236. data/spec/dummy/db/migrate/20160703184805_add_most_recent_to_user_reserve_stat_transitions.rb +1 -1
  237. data/spec/dummy/db/migrate/20160703185015_add_most_recent_to_message_transitions.rb +9 -0
  238. data/spec/dummy/db/migrate/20160703190209_add_foreign_key_on_manifestation_id_to_reserve.rb +5 -0
  239. data/spec/dummy/db/migrate/20160813191647_add_max_number_of_results_to_library_group.rb +1 -1
  240. data/spec/dummy/db/migrate/20160813191733_add_family_name_first_to_library_group.rb +1 -1
  241. data/spec/dummy/db/migrate/20160813192542_add_pub_year_facet_range_interval_to_library_group.rb +1 -1
  242. data/spec/dummy/db/migrate/20160813203039_add_user_id_to_library_group.rb +1 -1
  243. data/spec/dummy/db/migrate/20170305064014_add_csv_charset_conversion_to_library_group.rb +5 -0
  244. data/spec/dummy/db/migrate/20171014084528_add_header_logo_to_library_group.rb +5 -0
  245. data/spec/dummy/db/migrate/20171126133835_rename_login_banner_to_old_login_banner.rb +5 -0
  246. data/spec/dummy/db/migrate/20171126135238_add_foreign_key_to_library_group_id_on_library.rb +5 -0
  247. data/spec/dummy/db/migrate/20180102162311_add_header_logo_meta_to_library_group.rb +5 -0
  248. data/spec/dummy/db/schema.rb +420 -476
  249. data/spec/dummy/package.json +5 -0
  250. data/spec/factories/profile.rb +8 -8
  251. data/spec/factories/user.rb +10 -13
  252. data/spec/factories/user_group.rb +2 -2
  253. data/spec/fixtures/libraries.yml +37 -37
  254. data/spec/fixtures/library_groups.yml +19 -27
  255. data/spec/fixtures/message_requests.yml +26 -0
  256. data/spec/fixtures/message_templates.yml +98 -0
  257. data/spec/fixtures/messages.yml +56 -0
  258. data/spec/fixtures/profiles.yml +35 -27
  259. data/spec/fixtures/roles.yml +12 -12
  260. data/spec/fixtures/user_groups.yml +10 -20
  261. data/spec/fixtures/user_has_roles.yml +2 -2
  262. data/spec/fixtures/users.yml +0 -7
  263. data/spec/models/profile_spec.rb +23 -22
  264. data/spec/models/role_spec.rb +18 -17
  265. data/spec/models/user_has_role_spec.rb +6 -4
  266. data/spec/models/user_spec.rb +27 -25
  267. data/spec/rails_helper.rb +6 -7
  268. data/spec/requests/profiles_spec.rb +3 -3
  269. data/spec/routing/profiles_routing_spec.rb +18 -16
  270. data/spec/routing/roles_routing_spec.rb +18 -16
  271. data/spec/routing/users_spec.rb +7 -6
  272. data/spec/spec_helper.rb +49 -47
  273. data/spec/support/controller_macros.rb +9 -9
  274. data/spec/views/my_accounts/show.html.erb_spec.rb +6 -6
  275. data/spec/views/profiles/edit.html.erb_spec.rb +7 -7
  276. data/spec/views/profiles/index.html.erb_spec.rb +3 -3
  277. data/spec/views/profiles/new.html.erb_spec.rb +6 -5
  278. data/spec/views/profiles/show.html.erb_spec.rb +3 -3
  279. metadata +91 -109
  280. data/app/policies/user_export_file_policy.rb +0 -21
  281. data/app/policies/user_import_file_policy.rb +0 -21
  282. data/app/policies/user_import_result_policy.rb +0 -21
  283. data/db/migrate/20170114174536_add_profile_id_to_user.rb +0 -5
  284. data/spec/dummy/db/migrate/20080830172106_create_exemplifies.rb +0 -11
  285. data/spec/dummy/db/migrate/20140529014410_create_item_transitions.rb +0 -15
  286. data/spec/dummy/db/migrate/20141029131633_create_periodicals.rb +0 -11
  287. data/spec/dummy/db/migrate/20150302110310_add_attachment_id_to_manifestation.rb +0 -7
  288. data/spec/dummy/db/migrate/20150304183215_add_picture_id_to_picture_file.rb +0 -7
  289. data/spec/dummy/db/migrate/20150305025906_add_resource_import_id_to_resource_import_file.rb +0 -7
  290. data/spec/dummy/db/migrate/20150305030046_add_resource_export_id_to_resource_export_file.rb +0 -8
  291. data/spec/dummy/db/migrate/20150305031709_add_agent_import_id_to_agent_import_file.rb +0 -7
  292. data/spec/dummy/db/migrate/20150305105231_add_attachment_fingerprint_to_manifestation.rb +0 -5
  293. data/spec/dummy/db/migrate/20150420145354_add_attachment_to_carrier_type.rb +0 -8
  294. data/spec/dummy/db/migrate/20150420145420_add_attachment_to_content_type.rb +0 -8
  295. data/spec/dummy/db/migrate/20151216123621_create_doi_records.rb +0 -12
  296. data/spec/dummy/db/migrate/20160319144230_create_issn_records.rb +0 -12
  297. data/spec/dummy/db/migrate/20160506144040_create_isbn_records.rb +0 -12
  298. data/spec/dummy/db/migrate/20160513000929_create_agent_names.rb +0 -18
  299. data/spec/dummy/db/migrate/20160801080612_add_most_recent_to_import_request_transitions.rb +0 -9
  300. data/spec/dummy/db/migrate/20160801080619_add_most_recent_to_resource_import_file_transitions.rb +0 -9
  301. data/spec/dummy/db/migrate/20160801080637_add_most_recent_to_resource_export_file_transitions.rb +0 -9
  302. data/spec/dummy/db/migrate/20160801080643_add_most_recent_to_agent_import_file_transitions.rb +0 -9
  303. data/spec/dummy/db/migrate/20160813191533_add_book_jacket_source_to_library_group.rb +0 -5
  304. data/spec/dummy/db/migrate/20160813191820_add_screenshot_generator_to_library_group.rb +0 -5
  305. data/spec/dummy/db/migrate/20161111175127_add_attachment_data_to_manifestation.rb +0 -5
  306. data/spec/dummy/db/migrate/20161111193255_add_attachment_data_to_carrier_type.rb +0 -5
  307. data/spec/dummy/db/migrate/20161111193346_add_attachment_data_to_content_type.rb +0 -5
  308. data/spec/dummy/db/migrate/20161112122706_add_attachment_data_to_resource_import_file.rb +0 -5
  309. data/spec/dummy/db/migrate/20161112122750_add_attachment_data_to_resource_export_file.rb +0 -5
  310. data/spec/dummy/db/migrate/20161112122814_add_attachment_data_to_agent_import_file.rb +0 -5
  311. data/spec/dummy/db/migrate/20161114083857_add_image_data_to_picture_file.rb +0 -5
  312. data/spec/dummy/db/migrate/20161115184747_add_attachment_data_to_user_import_file.rb +0 -5
  313. data/spec/dummy/db/migrate/20161115184756_add_attachment_data_to_user_export_file.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 835e4e50f50c22127c0c9694c74ee201f394efaf
4
- data.tar.gz: bed2b445b0888f024efa12157fbc2846f54c24e5
3
+ metadata.gz: 56f0557a270606d2b3d74b2b2cb12b325d47e2ca
4
+ data.tar.gz: 1b8ffd8e6e74f6b9d6410d20901fe76c740245bb
5
5
  SHA512:
6
- metadata.gz: 5b63fd1654b6eacdc3d3c3671fdd3034ad1a0008e746d3bff7c88b59f7c5b9d604627cbc856644abf4168ca15a3b96049d49f27f9c609260eced2af7290bc7fe
7
- data.tar.gz: 96b40dcef213184a2d796af14f9d1d2497394c3ecbb6824230a0a31c76025c7df7fc323feb73fd3df7468c38f0f8acdce64144b6349b995e0913d540bcc8d389
6
+ metadata.gz: 7a476478614e6e895f8be678cb4892fb0e6efdbdbd7b47e64bf32e17eb249a6873c7a68b7b023038a31f865649b7c978380e16d904d1bec7350faa1dbcfe11ac
7
+ data.tar.gz: f00ef5981dcdfa3580b074a36f13e20f45e402280a98d705ce30db28c451d5b8594bb35cf678b2aaad198beb4fb4b2a61725c8bb9d26ffa120b646ff96bd5443
data/README.rdoc CHANGED
@@ -1,11 +1,3 @@
1
1
  = EnjuSeed
2
- {<img src="https://travis-ci.org/next-l/enju_seed.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/next-l/enju_seed]
3
- {<img src="https://codeclimate.com/github/next-l/enju_seed/badges/gpa.svg" />}[https://codeclimate.com/github/next-l/enju_seed]
4
- {<img src="https://codeclimate.com/github/next-l/enju_seed/badges/coverage.svg" />}[https://codeclimate.com/github/next-l/enju_seed/coverage]
5
- {<img src="https://hakiri.io/github/next-l/enju_seed/master.svg" alt="security" />}[https://hakiri.io/github/next-l/enju_seed/master]
6
2
 
7
- This project rocks and uses MIT-LICENSE.
8
-
9
- == 製作者・貢献者 (Authors and contributors)
10
- * {TANABE, Kosuke}[https://github.com/nabeta] ({@nabeta}[https://twitter.com/nabeta])
11
- * {Project Next-L}[http://www.next-l.jp] ({@ProjectNextL}[https://twitter.com/ProjectNextL])
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile CHANGED
@@ -10,32 +10,23 @@ RDoc::Task.new(:rdoc) do |rdoc|
10
10
  rdoc.rdoc_dir = 'rdoc'
11
11
  rdoc.title = 'EnjuSeed'
12
12
  rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.md')
13
+ rdoc.rdoc_files.include('README.rdoc')
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
18
  load 'rails/tasks/engine.rake'
19
19
 
20
- load 'rails/tasks/statistics.rake'
21
20
 
22
- require 'bundler/gem_tasks'
23
21
 
24
- require 'rake/testtask'
22
+ Bundler::GemHelper.install_tasks
25
23
 
26
- Rake::TestTask.new(:test) do |t|
27
- t.libs << 'lib'
28
- t.libs << 'test'
29
- t.pattern = 'test/**/*_test.rb'
30
- t.verbose = false
31
- end
32
-
33
- begin
34
- require 'rspec/core/rake_task'
24
+ require 'rspec/core'
25
+ require 'rspec/core/rake_task'
35
26
 
36
- RSpec::Core::RakeTask.new(:spec)
37
- rescue LoadError
38
- # no rspec available
27
+ RSpec::Core::RakeTask.new(:spec) do |spec|
28
+ spec.pattern = FileList['spec/**/*_spec.rb']
39
29
  end
40
30
 
31
+
41
32
  task default: :spec
@@ -17,7 +17,7 @@ class ProfilesController < ApplicationController
17
17
  @query = query.dup
18
18
  @count = {}
19
19
 
20
- sort = { sort_by: 'created_at', order: 'desc' }
20
+ sort = {sort_by: 'created_at', order: 'desc'}
21
21
  case params[:sort_by]
22
22
  when 'username'
23
23
  sort[:sort_by] = 'username'
@@ -87,7 +87,7 @@ class ProfilesController < ApplicationController
87
87
  else
88
88
  @profile.reset_checkout_icalendar_token
89
89
  end
90
- render partial: 'feed_token', locals: { profile: @profile }
90
+ render partial: 'feed_token', locals: {profile: @profile}
91
91
  return
92
92
  end
93
93
  end
@@ -95,7 +95,9 @@ class ProfilesController < ApplicationController
95
95
  redirect_to edit_my_account_url
96
96
  return
97
97
  end
98
- @profile.user.locked = true if @profile.user.try(:locked_at?)
98
+ if @profile.user.try(:locked_at?)
99
+ @profile.user.locked = true
100
+ end
99
101
  end
100
102
 
101
103
  # POST /profiles
@@ -103,7 +105,9 @@ class ProfilesController < ApplicationController
103
105
  def create
104
106
  if current_user.has_role?('Librarian')
105
107
  @profile = Profile.new(profile_params)
106
- password = @profile.user.set_auto_generated_password if @profile.user
108
+ if @profile.user
109
+ password = @profile.user.set_auto_generated_password
110
+ end
107
111
  else
108
112
  @profile = Profile.new(profile_params)
109
113
  end
@@ -118,7 +122,7 @@ class ProfilesController < ApplicationController
118
122
  format.json { render json: @profile, status: :created, location: @profile }
119
123
  else
120
124
  prepare_options
121
- format.html { render action: 'new' }
125
+ format.html { render action: "new" }
122
126
  format.json { render json: @profile.errors, status: :unprocessable_entity }
123
127
  end
124
128
  end
@@ -129,7 +133,7 @@ class ProfilesController < ApplicationController
129
133
  def update
130
134
  @profile.update_attributes(profile_update_params)
131
135
  if @profile.user
132
- if @profile.user.auto_generated_password == '1'
136
+ if @profile.user.auto_generated_password == "1"
133
137
  password = @profile.user.set_auto_generated_password
134
138
  end
135
139
  end
@@ -141,7 +145,7 @@ class ProfilesController < ApplicationController
141
145
  format.json { head :no_content }
142
146
  else
143
147
  prepare_options
144
- format.html { render action: 'edit' }
148
+ format.html { render action: "edit" }
145
149
  format.json { render json: @profile.errors, status: :unprocessable_entity }
146
150
  end
147
151
  end
@@ -159,7 +163,6 @@ class ProfilesController < ApplicationController
159
163
  end
160
164
 
161
165
  private
162
-
163
166
  def set_profile
164
167
  @profile = Profile.find(params[:id])
165
168
  authorize @profile
@@ -176,17 +179,15 @@ class ProfilesController < ApplicationController
176
179
  :save_checkout_history, :checkout_icalendar_token, # EnjuCirculation
177
180
  :save_search_history, # EnjuSearchLog
178
181
  ]
179
- if current_user.has_role?('Librarian')
180
- attrs += [
181
- :library_id, :expired_at, :birth_date,
182
- :user_group_id, :required_role_id, :note, :user_number, {
183
- user_attributes: [
184
- :id, :username, :email, :current_password, :locked,
185
- { user_has_role_attributes: [:id, :role_id] }
186
- ]
187
- }
188
- ]
189
- end
182
+ attrs += [
183
+ :library_id, :expired_at, :birth_date,
184
+ :user_group_id, :required_role_id, :note, :user_number, {
185
+ user_attributes: [
186
+ :id, :username, :email, :current_password, :locked,
187
+ {user_has_role_attributes: [:id, :role_id]}
188
+ ]
189
+ }
190
+ ] if current_user.has_role?('Librarian')
190
191
  params.require(:profile).permit(*attrs)
191
192
  end
192
193
 
@@ -197,17 +198,15 @@ class ProfilesController < ApplicationController
197
198
  :save_checkout_history, :checkout_icalendar_token, # EnjuCirculation
198
199
  :save_search_history, # EnjuSearchLog
199
200
  ]
200
- if current_user.has_role?('Librarian')
201
- attrs += [
202
- :library_id, :expired_at, :birth_date,
203
- :user_group_id, :required_role_id, :note, :user_number, {
204
- user_attributes: [
205
- :id, :email, :current_password, :auto_generated_password, :locked,
206
- { user_has_role_attributes: [:id, :role_id] }
207
- ]
208
- }
209
- ]
210
- end
201
+ attrs += [
202
+ :library_id, :expired_at, :birth_date,
203
+ :user_group_id, :required_role_id, :note, :user_number, {
204
+ user_attributes: [
205
+ :id, :email, :current_password, :auto_generated_password, :locked,
206
+ {user_has_role_attributes: [:id, :role_id]}
207
+ ]
208
+ }
209
+ ] if current_user.has_role?('Librarian')
211
210
  params.require(:profile).permit(*attrs)
212
211
  end
213
212
 
@@ -39,14 +39,13 @@ class RolesController < ApplicationController
39
39
  format.html { redirect_to @role, notice: t('controller.successfully_updated', model: t('activerecord.models.role')) }
40
40
  format.json { head :no_content }
41
41
  else
42
- format.html { render action: 'edit' }
42
+ format.html { render action: "edit" }
43
43
  format.json { render json: @role.errors, status: :unprocessable_entity }
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
48
  private
49
-
50
49
  def set_role
51
50
  @role = Role.find(params[:id])
52
51
  authorize @role
@@ -6,26 +6,26 @@ module EnjuSeed
6
6
  scope :administrators, -> { joins(:role).where('roles.name = ?', 'Administrator') }
7
7
  scope :librarians, -> { joins(:role).where('roles.name = ? OR roles.name = ?', 'Administrator', 'Librarian') }
8
8
  scope :suspended, -> { where('locked_at IS NOT NULL') }
9
+ has_one :profile
9
10
  if defined?(EnjuBiblio)
10
11
  has_many :import_requests
11
12
  has_many :picture_files, as: :picture_attachable, dependent: :destroy
12
13
  end
13
14
  has_one :user_has_role, dependent: :destroy
14
15
  has_one :role, through: :user_has_role
15
- belongs_to :profile
16
16
  accepts_nested_attributes_for :user_has_role
17
17
 
18
18
  validates :username, presence: true, uniqueness: true, format: {
19
19
  with: /\A[0-9A-Za-z][0-9A-Za-z_\-]*[0-9A-Za-z]\z/
20
20
  }
21
- validates :email, format: Devise.email_regexp, allow_blank: true, uniqueness: true
21
+ validates :email, format: Devise::email_regexp, allow_blank: true, uniqueness: true
22
22
  validates_date :expired_at, allow_blank: true
23
23
 
24
24
  with_options if: :password_required? do |v|
25
25
  v.validates_presence_of :password
26
26
  v.validates_confirmation_of :password
27
27
  v.validates_length_of :password, allow_blank: true,
28
- within: Devise.password_length
28
+ within: Devise::password_length
29
29
  end
30
30
 
31
31
  before_validation :set_lock_information
@@ -39,8 +39,8 @@ module EnjuSeed
39
39
  strip_attributes only: :email, allow_empty: true
40
40
 
41
41
  attr_accessor :password_not_verified,
42
- :update_own_account, :auto_generated_password,
43
- :locked, :current_password # , :agent_id
42
+ :update_own_account, :auto_generated_password,
43
+ :locked, :current_password #, :agent_id
44
44
 
45
45
  paginates_per 10
46
46
 
@@ -51,13 +51,13 @@ module EnjuSeed
51
51
  # 有効期限切れのユーザを一括で使用不可にします。
52
52
  def self.lock_expired_users
53
53
  User.find_each do |user|
54
- user.lock_access! if user.expired? && user.active_for_authentication?
54
+ user.lock_access! if user.expired? and user.active_for_authentication?
55
55
  end
56
56
  end
57
57
 
58
58
  # ユーザの情報をエクスポートします。
59
59
  # @param [Hash] options
60
- def self.export(options = { format: :txt })
60
+ def self.export(options = {format: :txt})
61
61
  header = %w(
62
62
  username
63
63
  full_name
@@ -76,16 +76,14 @@ module EnjuSeed
76
76
  keyword_list
77
77
  note
78
78
  )
79
- if defined? EnjuCirculation
80
- header += %w(
81
- checkout_icalendar_token
82
- save_checkout_history
83
- )
84
- end
85
- header << 'save_search_history' if defined? EnjuSearchLog
86
- header << 'share_bookmarks' if defined? EnjuBookmark
79
+ header += %w(
80
+ checkout_icalendar_token
81
+ save_checkout_history
82
+ ) if defined? EnjuCirculation
83
+ header << "save_search_history" if defined? EnjuSearchLog
84
+ header << "share_bookmarks" if defined? EnjuBookmark
87
85
  lines = []
88
- User.find_each.map do |u|
86
+ User.find_each.map{|u|
89
87
  line = []
90
88
  line << u.username
91
89
  line << u.try(:profile).try(:full_name)
@@ -101,7 +99,7 @@ module EnjuSeed
101
99
  line << u.created_at
102
100
  line << u.updated_at
103
101
  line << u.try(:profile).try(:expired_at)
104
- line << u.try(:profile).try(:keyword_list).try(:split).try(:join, '//')
102
+ line << u.try(:profile).try(:keyword_list).try(:split).try(:join, "//")
105
103
  line << u.try(:profile).try(:note)
106
104
  if defined? EnjuCirculation
107
105
  line << u.try(:profile).try(:checkout_icalendar_token)
@@ -110,11 +108,13 @@ module EnjuSeed
110
108
  if defined? EnjuSearchLog
111
109
  line << u.try(:profile).try(:save_search_history)
112
110
  end
113
- line << u.try(:profile).try(:share_bookmarks) if defined? EnjuBookmark
111
+ if defined? EnjuBookmark
112
+ line << u.try(:profile).try(:share_bookmarks)
113
+ end
114
114
  lines << line
115
- end
115
+ }
116
116
  if options[:format] == :txt
117
- lines.map { |line| line.to_csv(col_sep: "\t") }.unshift(header.to_csv(col_sep: "\t")).join
117
+ lines.map{|line| line.to_csv(col_sep: "\t")}.unshift(header.to_csv(col_sep: "\t")).join
118
118
  else
119
119
  lines
120
120
  end
@@ -147,9 +147,9 @@ module EnjuSeed
147
147
 
148
148
  # ユーザに使用不可の設定を反映させます。
149
149
  def set_lock_information
150
- if (locked == '1') && active_for_authentication?
150
+ if locked == '1' and self.active_for_authentication?
151
151
  lock_access!
152
- elsif (locked == '0') && !active_for_authentication?
152
+ elsif locked == '0' and !self.active_for_authentication?
153
153
  unlock_access!
154
154
  end
155
155
  end
@@ -237,7 +237,9 @@ module EnjuSeed
237
237
  errors[:base] << I18n.t('user.only_administrator_can_destroy')
238
238
  end
239
239
  # 最後の図書館員を削除しようとした
240
- errors[:base] << I18n.t('user.last_librarian') if last_librarian?
240
+ if last_librarian?
241
+ errors[:base] << I18n.t('user.last_librarian')
242
+ end
241
243
  end
242
244
 
243
245
  # 最後の管理者を削除しようとした
@@ -256,6 +258,7 @@ module EnjuSeed
256
258
  end
257
259
  end
258
260
 
261
+
259
262
  # == Schema Information
260
263
  #
261
264
  # Table name: users
@@ -300,3 +303,4 @@ end
300
303
  # save_search_history :boolean
301
304
  # answer_feed_token :string(255)
302
305
  #
306
+
@@ -3,10 +3,14 @@ module MasterModel
3
3
 
4
4
  included do
5
5
  acts_as_list
6
- validates :name, presence: true, uniqueness: { case_sensitive: false }
6
+ validates_uniqueness_of :name, case_sensitive: false
7
+ validates :name, presence: true
7
8
  validate :name do
8
9
  valid_name?
9
10
  end
11
+ validate :display_name do
12
+ valid_yaml?
13
+ end
10
14
  validates :display_name, presence: true
11
15
  before_validation :set_display_name, on: :create
12
16
  strip_attributes only: :name
@@ -18,10 +22,17 @@ module MasterModel
18
22
  end
19
23
 
20
24
  private
21
-
22
25
  def valid_name?
23
26
  unless name =~ /\A[a-z][0-9a-z_]*[0-9a-z]\z/
24
27
  errors.add(:name, I18n.t('page.only_lowercase_letters_and_numbers_are_allowed'))
25
28
  end
26
29
  end
30
+
31
+ def valid_yaml?
32
+ begin
33
+ YAML.load(display_name)
34
+ rescue Psych::SyntaxError
35
+ errors.add(:display_name, I18n.t('page.cannot_parse_yaml_header'))
36
+ end
37
+ end
27
38
  end
@@ -1,6 +1,6 @@
1
1
  class Identity < ActiveRecord::Base
2
2
  belongs_to :profile
3
- validates :name, presence: true, uniqueness: { scope: :provider }
3
+ validates :name, presence: true, uniqueness: {scope: :provider}
4
4
  validates :provider, presence: true
5
5
 
6
6
  def self.find_for_oauth(auth)
@@ -19,5 +19,5 @@ end
19
19
  # profile_id :integer
20
20
  # created_at :datetime not null
21
21
  # updated_at :datetime not null
22
- # provider :string not null
22
+ # provider :string
23
23
  #
@@ -3,18 +3,19 @@ class Profile < ActiveRecord::Base
3
3
 
4
4
  scope :administrators, -> { joins(user: :role).where('roles.name = ?', 'Administrator') }
5
5
  scope :librarians, -> { joins(user: :role).where('roles.name = ? OR roles.name = ?', 'Administrator', 'Librarian') }
6
- has_one :user
7
- belongs_to :library, validate: true
6
+ belongs_to :user, dependent: :destroy, optional: true
7
+ belongs_to :library
8
8
  belongs_to :user_group
9
- belongs_to :required_role, class_name: 'Role', foreign_key: 'required_role_id' # , validate: true
9
+ belongs_to :required_role, class_name: 'Role', foreign_key: 'required_role_id' #, validate: true
10
10
  has_many :identities
11
11
  has_many :agents
12
12
  accepts_nested_attributes_for :identities, allow_destroy: true, reject_if: :all_blank
13
13
 
14
14
  validates_associated :user_group, :library
15
- validates_associated :user
16
- validates :user_group, :library, :locale, presence: true # , :user_number
15
+ validates :user, uniqueness: true, associated: true, allow_blank: true
16
+ validates_presence_of :user_group, :library, :locale #, :user_number
17
17
  validates :user_number, uniqueness: true, format: { with: /\A[0-9A-Za-z_]+\z/ }, allow_blank: true
18
+ validates :user_id, uniqueness: true, allow_blank: true
18
19
  validates :birth_date, format: { with: /\A\d{4}-\d{1,2}-\d{1,2}\z/ }, allow_blank: true
19
20
 
20
21
  strip_attributes only: :user_number
@@ -78,17 +79,18 @@ end
78
79
  #
79
80
  # Table name: profiles
80
81
  #
81
- # id :uuid not null, primary key
82
- # user_group_id :uuid
83
- # library_id :uuid
82
+ # id :integer not null, primary key
83
+ # user_id :integer
84
+ # user_group_id :integer
85
+ # library_id :integer
84
86
  # locale :string
85
87
  # user_number :string
86
88
  # full_name :text
87
89
  # note :text
88
90
  # keyword_list :text
89
91
  # required_role_id :integer
90
- # created_at :datetime not null
91
- # updated_at :datetime not null
92
+ # created_at :datetime
93
+ # updated_at :datetime
92
94
  # checkout_icalendar_token :string
93
95
  # save_checkout_history :boolean default(FALSE), not null
94
96
  # expired_at :datetime
data/app/models/role.rb CHANGED
@@ -3,17 +3,33 @@ class Role < ActiveRecord::Base
3
3
  validates :name, presence: true, format: { with: /\A[A-Za-z][a-z_,]*[a-z]\z/ }
4
4
  has_many :user_has_roles
5
5
  has_many :users, through: :user_has_roles
6
+ after_save :clear_all_cache
7
+ after_destroy :clear_all_cache
6
8
 
7
9
  extend FriendlyId
8
10
  friendly_id :name
9
- translates :display_name
11
+
12
+ def localized_name
13
+ display_name.localize
14
+ end
15
+
16
+ def self.all_cache
17
+ if Rails.env == 'production'
18
+ Rails.cache.fetch('role_all'){ Role.select(:name).all }
19
+ else
20
+ Role.select(:name)
21
+ end
22
+ end
23
+
24
+ def clear_all_cache
25
+ Rails.cache.delete('role_all')
26
+ end
10
27
 
11
28
  def self.default_role
12
- Role.find_by(name: 'Guest')
29
+ Role.where(name: 'Guest').first
13
30
  end
14
31
 
15
32
  private
16
-
17
33
  def valid_name?
18
34
  true
19
35
  end
@@ -23,12 +39,12 @@ end
23
39
  #
24
40
  # Table name: roles
25
41
  #
26
- # id :integer not null, primary key
27
- # name :string not null
28
- # display_name_translations :jsonb
29
- # note :text
30
- # created_at :datetime not null
31
- # updated_at :datetime not null
32
- # score :integer default(0), not null
33
- # position :integer
42
+ # id :integer not null, primary key
43
+ # name :string not null
44
+ # display_name :string
45
+ # note :text
46
+ # created_at :datetime
47
+ # updated_at :datetime
48
+ # score :integer default(0), not null
49
+ # position :integer
34
50
  #
@@ -3,8 +3,8 @@ class UserHasRole < ActiveRecord::Base
3
3
  belongs_to :role
4
4
  accepts_nested_attributes_for :role
5
5
 
6
- # validates_uniqueness_of :role_id, scope: :user_id
7
- # validates_presence_of :role_id, :user_id
6
+ # validates_uniqueness_of :role_id, scope: :user_id
7
+ # validates_presence_of :role_id, :user_id
8
8
  end
9
9
 
10
10
  # == Schema Information
@@ -14,6 +14,6 @@ end
14
14
  # id :integer not null, primary key
15
15
  # user_id :integer not null
16
16
  # role_id :integer not null
17
- # created_at :datetime not null
18
- # updated_at :datetime not null
17
+ # created_at :datetime
18
+ # updated_at :datetime
19
19
  #
@@ -28,7 +28,7 @@
28
28
  <%= render 'submenu_checkout', profile: @profile %>
29
29
  <% end %>
30
30
  <ul>
31
- <li><%= link_to t('page.back'), :back %></li>
31
+ <li><%= back_to_index(flash[:page_info]) -%></li>
32
32
  <% if user_signed_in? %>
33
33
  <% if policy(@profile).update? %>
34
34
  <li><%= link_to t('page.edit'), edit_profile_path(@profile) -%></li>
@@ -41,6 +41,6 @@
41
41
  <%- if policy(@role).update? -%>
42
42
  <li><%= link_to t('page.edit'), edit_role_path(@role) -%></li>
43
43
  <%- end -%>
44
- <li><%= link_to t('page.back'), roles_path -%></li>
44
+ <li><%= back_to_index(flash[:page_info]) -%></li>
45
45
  </ul>
46
46
  </div>
@@ -1,10 +1,11 @@
1
- class CreateRoles < ActiveRecord::Migration[5.0]
1
+ class CreateRoles < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table 'roles' do |t|
4
- t.string :name, null: false
5
- t.jsonb :display_name_translations
6
- t.text :note
7
- t.timestamps
3
+ create_table "roles" do |t|
4
+ t.column :name, :string, null: false
5
+ t.column :display_name, :string
6
+ t.column :note, :text
7
+ t.column :created_at, :datetime
8
+ t.column :updated_at, :datetime
8
9
  t.integer :score, default: 0, null: false
9
10
  t.integer :position
10
11
  end
@@ -1,8 +1,8 @@
1
- class CreateUserHasRoles < ActiveRecord::Migration[5.0]
1
+ class CreateUserHasRoles < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :user_has_roles do |t|
4
- t.references :user, foreign_key: {on_delete: :cascade}, null: false
5
- t.references :role, foreign_key: true, null: false
4
+ t.references :user, index: true, foreign_key: true, null: false
5
+ t.references :role, index: true, foreign_key: true, null: false
6
6
 
7
7
  t.timestamps
8
8
  end
@@ -1,4 +1,4 @@
1
- class AddAdditionalAttributesToUser < ActiveRecord::Migration[5.0]
1
+ class AddAdditionalAttributesToUser < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :users, :username, :string
4
4
  add_column :users, :deleted_at, :datetime
@@ -11,6 +11,6 @@ class AddAdditionalAttributesToUser < ActiveRecord::Migration[5.0]
11
11
  add_column :users, :confirmed_at, :datetime
12
12
 
13
13
  add_index :users, :username, unique: true
14
- add_index :users, :unlock_token, unique: true
14
+ add_index :users, :unlock_token, unique: true
15
15
  end
16
16
  end
@@ -1,10 +1,11 @@
1
- class CreateProfiles < ActiveRecord::Migration[5.0]
1
+ class CreateProfiles < ActiveRecord::Migration[4.2]
2
2
  def change
3
- create_table :profiles, id: :uuid, default: 'gen_random_uuid()' do |t|
4
- t.references :user_group, type: :uuid
5
- t.references :library, type: :uuid
3
+ create_table :profiles do |t|
4
+ t.references :user, index: true, foreign_key: true
5
+ t.references :user_group, index: true
6
+ t.references :library, index: true
6
7
  t.string :locale
7
- t.string :user_number, index: {unique: true}
8
+ t.string :user_number
8
9
  t.text :full_name
9
10
  t.text :note
10
11
  t.text :keyword_list
@@ -12,5 +13,7 @@ class CreateProfiles < ActiveRecord::Migration[5.0]
12
13
 
13
14
  t.timestamps
14
15
  end
16
+
17
+ add_index :profiles, :user_number, unique: true
15
18
  end
16
19
  end
@@ -0,0 +1,11 @@
1
+ class DropEmailUniqueConstraintEnjuLeafRc10 < ActiveRecord::Migration[4.2]
2
+ def up
3
+ remove_index :users, :email
4
+ add_index :users, :email
5
+ end
6
+
7
+ def down
8
+ remove_index :users, :email
9
+ add_index :users, :email, unique: true
10
+ end
11
+ end
@@ -1,4 +1,4 @@
1
- class AddExpiredAtToProfile < ActiveRecord::Migration[5.0]
1
+ class AddExpiredAtToProfile < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :profiles, :expired_at, :datetime
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddFullNameTranscriptionToProfile < ActiveRecord::Migration[5.0]
1
+ class AddFullNameTranscriptionToProfile < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :profiles, :full_name_transcription, :text
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddDateOfBirthToProfile < ActiveRecord::Migration[5.0]
1
+ class AddDateOfBirthToProfile < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :profiles, :date_of_birth, :datetime
4
4
  end