enju_circulation 0.2.5 → 0.3.0.beta.1

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 (378) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +4 -4
  3. data/Rakefile +2 -2
  4. data/app/assets/config/enju_circulation_manifest.js +0 -0
  5. data/app/controllers/carrier_type_has_checkout_types_controller.rb +2 -1
  6. data/app/controllers/checked_items_controller.rb +2 -1
  7. data/app/controllers/checkins_controller.rb +4 -3
  8. data/app/controllers/checkout_types_controller.rb +2 -1
  9. data/app/controllers/checkouts_controller.rb +1 -0
  10. data/app/controllers/circulation_statuses_controller.rb +2 -1
  11. data/app/controllers/demands_controller.rb +2 -1
  12. data/app/controllers/item_has_use_restrictions_controller.rb +1 -0
  13. data/app/controllers/lending_policies_controller.rb +2 -1
  14. data/app/controllers/manifestation_checkout_stats_controller.rb +2 -1
  15. data/app/controllers/manifestation_reserve_stats_controller.rb +2 -1
  16. data/app/controllers/reserves_controller.rb +5 -4
  17. data/app/controllers/use_restrictions_controller.rb +2 -1
  18. data/app/controllers/user_checkout_stats_controller.rb +2 -1
  19. data/app/controllers/user_group_has_checkout_types_controller.rb +4 -3
  20. data/app/controllers/user_reserve_stats_controller.rb +2 -1
  21. data/app/helpers/items_helper.rb +3 -3
  22. data/app/models/carrier_type_has_checkout_type.rb +2 -2
  23. data/app/models/checked_item.rb +10 -9
  24. data/app/models/checkin.rb +4 -4
  25. data/app/models/checkout.rb +14 -14
  26. data/app/models/checkout_stat_has_manifestation.rb +3 -3
  27. data/app/models/checkout_stat_has_user.rb +3 -3
  28. data/app/models/checkout_type.rb +2 -2
  29. data/app/models/circulation_status.rb +1 -0
  30. data/app/models/concerns/enju_circulation/enju_basket.rb +1 -1
  31. data/app/models/concerns/enju_circulation/enju_item.rb +17 -17
  32. data/app/models/concerns/enju_circulation/enju_manifestation.rb +6 -6
  33. data/app/models/concerns/enju_circulation/enju_user.rb +9 -9
  34. data/app/models/concerns/enju_circulation/enju_user_group.rb +5 -5
  35. data/app/models/item_has_use_restriction.rb +2 -2
  36. data/app/models/lending_policy.rb +2 -2
  37. data/app/models/manifestation_checkout_stat.rb +4 -3
  38. data/app/models/manifestation_checkout_stat_transition.rb +2 -2
  39. data/app/models/manifestation_reserve_stat.rb +4 -3
  40. data/app/models/manifestation_reserve_stat_transition.rb +1 -1
  41. data/app/models/reserve.rb +46 -45
  42. data/app/models/reserve_stat_has_manifestation.rb +2 -2
  43. data/app/models/reserve_stat_has_user.rb +4 -4
  44. data/app/models/reserve_state_machine.rb +6 -6
  45. data/app/models/reserve_transition.rb +1 -1
  46. data/app/models/use_restriction.rb +1 -0
  47. data/app/models/user_checkout_stat.rb +3 -2
  48. data/app/models/user_checkout_stat_transition.rb +1 -1
  49. data/app/models/user_group_has_checkout_type.rb +6 -6
  50. data/app/models/user_reserve_stat.rb +3 -2
  51. data/app/models/user_reserve_stat_transition.rb +1 -1
  52. data/app/policies/checkout_policy.rb +3 -3
  53. data/app/policies/reserve_policy.rb +3 -3
  54. data/app/views/checkouts/index.rss.builder +4 -4
  55. data/app/views/checkouts/index.txt.ruby +13 -0
  56. data/app/views/reserves/index.rss.builder +5 -5
  57. data/db/migrate/032_create_checkins.rb +1 -1
  58. data/db/migrate/033_create_checkouts.rb +1 -1
  59. data/db/migrate/035_create_reserves.rb +1 -1
  60. data/db/migrate/121_create_checked_items.rb +1 -1
  61. data/db/migrate/127_create_use_restrictions.rb +1 -1
  62. data/db/migrate/129_create_item_has_use_restrictions.rb +1 -1
  63. data/db/migrate/132_create_circulation_statuses.rb +1 -1
  64. data/db/migrate/20081030023412_create_checkout_types.rb +2 -2
  65. data/db/migrate/20081030023518_create_user_group_has_checkout_types.rb +1 -1
  66. data/db/migrate/20081030023615_create_carrier_type_has_checkout_types.rb +1 -1
  67. data/db/migrate/20081212075554_create_checkout_stat_has_manifestations.rb +1 -1
  68. data/db/migrate/20081212080038_create_manifestation_checkout_stats.rb +1 -1
  69. data/db/migrate/20081215094302_create_user_checkout_stats.rb +1 -1
  70. data/db/migrate/20081215094955_create_checkout_stat_has_users.rb +1 -1
  71. data/db/migrate/20081216190517_create_reserve_stat_has_manifestations.rb +1 -1
  72. data/db/migrate/20081216190724_create_manifestation_reserve_stats.rb +1 -1
  73. data/db/migrate/20081220023628_create_user_reserve_stats.rb +1 -1
  74. data/db/migrate/20081220034117_create_reserve_stat_has_users.rb +1 -1
  75. data/db/migrate/20090321130448_add_completed_at_to_user_checkout_stat.rb +1 -1
  76. data/db/migrate/20090831220301_create_lending_policies.rb +2 -2
  77. data/db/migrate/20110301134521_add_expire_date_to_reserve.rb +1 -1
  78. data/db/migrate/20110328130826_add_current_checkout_count_to_user_group_has_checkout_type.rb +1 -1
  79. data/db/migrate/20110621093332_remove_expire_date_from_reserve.rb +1 -1
  80. data/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +4 -4
  81. data/db/migrate/20111129044509_add_pickup_location_to_reserve.rb +1 -1
  82. data/db/migrate/20120424103932_add_librarian_id_to_checked_item.rb +1 -1
  83. data/db/migrate/20130303124821_add_retained_at_to_reserve.rb +1 -1
  84. data/db/migrate/20130304015019_add_postponed_at_to_reserve.rb +1 -1
  85. data/db/migrate/20130416054135_add_circulation_status_id_to_item.rb +1 -1
  86. data/db/migrate/20130519065638_add_lock_version_to_reserve.rb +2 -2
  87. data/db/migrate/20130519065837_add_lock_version_to_checkin.rb +2 -2
  88. data/db/migrate/20140518050147_create_reserve_transitions.rb +1 -1
  89. data/db/migrate/20140528045518_create_user_checkout_stat_transitions.rb +1 -1
  90. data/db/migrate/20140528045539_create_user_reserve_stat_transitions.rb +1 -1
  91. data/db/migrate/20140528045600_create_manifestation_checkout_stat_transitions.rb +1 -1
  92. data/db/migrate/20140528045617_create_manifestation_reserve_stat_transitions.rb +1 -1
  93. data/db/migrate/20140810061942_add_user_id_to_user_checkout_stat.rb +1 -1
  94. data/db/migrate/20140810091231_add_checkout_icalendar_token_to_profile.rb +2 -2
  95. data/db/migrate/20140810091417_add_save_checkout_history_to_profile.rb +2 -2
  96. data/db/migrate/20141014065831_add_shelf_id_to_checkout.rb +1 -1
  97. data/db/migrate/20141020120523_add_library_id_to_checkout.rb +1 -1
  98. data/db/migrate/20150106001709_create_demands.rb +1 -1
  99. data/db/migrate/20160703184619_add_most_recent_to_reserve_transitions.rb +1 -1
  100. data/db/migrate/20160703184650_add_most_recent_to_manifestation_checkout_stat_transitions.rb +1 -1
  101. data/db/migrate/20160703184723_add_most_recent_to_manifestation_reserve_stat_transitions.rb +1 -1
  102. data/db/migrate/20160703184747_add_most_recent_to_user_checkout_stat_transitions.rb +1 -1
  103. data/db/migrate/20160703184805_add_most_recent_to_user_reserve_stat_transitions.rb +1 -1
  104. data/db/migrate/20160703190209_add_foreign_key_on_manifestation_id_to_reserve.rb +1 -1
  105. data/db/migrate/20180107161035_add_constraints_to_most_recent_for_reserve_transitions.rb +2 -2
  106. data/db/migrate/20180107161951_add_constraints_to_most_recent_for_user_checkout_stat_transitions.rb +2 -2
  107. data/db/migrate/20180107162009_add_constraints_to_most_recent_for_user_reserve_stat_transitions.rb +2 -2
  108. data/db/migrate/20180107162029_add_constraints_to_most_recent_for_manifestation_checkout_stat_transitions.rb +2 -2
  109. data/db/migrate/20180107162048_add_constraints_to_most_recent_for_manifestation_reserve_stat_transitions.rb +2 -2
  110. data/lib/enju_circulation/helper.rb +8 -8
  111. data/lib/enju_circulation/version.rb +1 -1
  112. data/lib/generators/enju_circulation/setup/setup_generator.rb +1 -1
  113. data/lib/generators/enju_circulation/setup/templates/config/schedule.rb +2 -2
  114. data/lib/tasks/enju_circulation_tasks.rake +30 -6
  115. data/spec/controllers/carrier_type_has_checkout_types_controller_spec.rb +45 -45
  116. data/spec/controllers/checked_items_controller_spec.rb +42 -42
  117. data/spec/controllers/checkins_controller_spec.rb +49 -49
  118. data/spec/controllers/checkout_types_controller_spec.rb +45 -45
  119. data/spec/controllers/checkouts_controller_spec.rb +63 -63
  120. data/spec/controllers/circulation_statuses_controller_spec.rb +45 -45
  121. data/spec/controllers/item_has_use_restrictions_controller_spec.rb +45 -45
  122. data/spec/controllers/lending_policies_controller_spec.rb +44 -44
  123. data/spec/controllers/manifestation_checkout_stats_controller_spec.rb +45 -45
  124. data/spec/controllers/manifestation_reserve_stats_controller_spec.rb +45 -45
  125. data/spec/controllers/profiles_controller_spec.rb +1 -1
  126. data/spec/controllers/reserves_controller_spec.rb +95 -95
  127. data/spec/controllers/use_restrictions_controller_spec.rb +45 -45
  128. data/spec/controllers/user_checkout_stats_controller_spec.rb +45 -45
  129. data/spec/controllers/user_group_has_checkout_types_controller_spec.rb +44 -44
  130. data/spec/controllers/user_reserve_stats_controller_spec.rb +45 -45
  131. data/spec/dummy/app/assets/config/manifest.js +4 -0
  132. data/spec/dummy/app/helpers/application_helper.rb +2 -2
  133. data/spec/dummy/bin/rails +1 -1
  134. data/spec/dummy/bin/setup +21 -12
  135. data/spec/dummy/bin/update +29 -0
  136. data/spec/dummy/bin/yarn +11 -0
  137. data/spec/dummy/config/application.rb +6 -17
  138. data/spec/dummy/config/cable.yml +9 -0
  139. data/spec/dummy/config/environment.rb +4 -4
  140. data/spec/dummy/config/environments/development.rb +24 -11
  141. data/spec/dummy/config/environments/production.rb +28 -16
  142. data/spec/dummy/config/environments/test.rb +8 -8
  143. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  144. data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
  145. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  146. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  147. data/spec/dummy/config/puma.rb +47 -0
  148. data/spec/dummy/config/routes.rb +4 -2
  149. data/spec/dummy/config/spring.rb +6 -0
  150. data/spec/dummy/db/migrate/001_create_agents.rb +7 -7
  151. data/spec/dummy/db/migrate/002_devise_create_users.rb +6 -7
  152. data/spec/dummy/db/migrate/005_create_manifestations.rb +13 -13
  153. data/spec/dummy/db/migrate/006_create_items.rb +6 -6
  154. data/spec/dummy/db/migrate/012_create_owns.rb +3 -3
  155. data/spec/dummy/db/migrate/015_create_creates.rb +3 -3
  156. data/spec/dummy/db/migrate/041_create_roles.rb +3 -3
  157. data/spec/dummy/db/migrate/047_create_produces.rb +3 -3
  158. data/spec/dummy/db/migrate/059_create_libraries.rb +1 -1
  159. data/spec/dummy/db/migrate/069_create_shelves.rb +1 -1
  160. data/spec/dummy/db/migrate/073_create_carrier_types.rb +2 -2
  161. data/spec/dummy/db/migrate/077_create_user_groups.rb +2 -2
  162. data/spec/dummy/db/migrate/080_create_library_groups.rb +1 -1
  163. data/spec/dummy/db/migrate/112_create_frequencies.rb +2 -2
  164. data/spec/dummy/db/migrate/113_create_events.rb +4 -4
  165. data/spec/dummy/db/migrate/114_create_event_categories.rb +2 -2
  166. data/spec/dummy/db/migrate/117_create_form_of_works.rb +2 -2
  167. data/spec/dummy/db/migrate/120_create_baskets.rb +1 -1
  168. data/spec/dummy/db/migrate/124_create_bookstores.rb +2 -2
  169. data/spec/dummy/db/migrate/125_create_donates.rb +3 -3
  170. data/spec/dummy/db/migrate/130_create_request_status_types.rb +2 -2
  171. data/spec/dummy/db/migrate/131_create_request_types.rb +2 -2
  172. data/spec/dummy/db/migrate/133_create_agent_merges.rb +2 -2
  173. data/spec/dummy/db/migrate/134_create_agent_merge_lists.rb +1 -1
  174. data/spec/dummy/db/migrate/149_create_message_templates.rb +6 -6
  175. data/spec/dummy/db/migrate/154_create_messages.rb +3 -3
  176. data/spec/dummy/db/migrate/20080819181903_create_message_requests.rb +1 -1
  177. data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +3 -3
  178. data/spec/dummy/db/migrate/20080830172106_create_exemplifies.rb +4 -4
  179. data/spec/dummy/db/migrate/20080905191442_create_agent_types.rb +2 -2
  180. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +1 -1
  181. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +1 -1
  182. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +6 -6
  183. data/spec/dummy/db/migrate/20081025083323_create_countries.rb +9 -10
  184. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +6 -7
  185. data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +2 -2
  186. data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +1 -1
  187. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +1 -1
  188. data/spec/dummy/db/migrate/20081028093607_create_event_import_files.rb +1 -1
  189. data/spec/dummy/db/migrate/20090519203307_create_participates.rb +3 -3
  190. data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +1 -1
  191. data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +1 -1
  192. data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +2 -2
  193. data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +2 -2
  194. data/spec/dummy/db/migrate/20090812151902_create_agent_relationship_types.rb +2 -2
  195. data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +1 -1
  196. data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +2 -2
  197. data/spec/dummy/db/migrate/20091202124834_create_versions.rb +4 -4
  198. data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +1 -1
  199. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +1 -1
  200. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +1 -1
  201. data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +1 -1
  202. data/spec/dummy/db/migrate/20100314190054_add_opening_hour_to_library.rb +1 -1
  203. data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +1 -1
  204. data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +1 -1
  205. data/spec/dummy/db/migrate/20100606065209_create_user_has_roles.rb +1 -1
  206. data/spec/dummy/db/migrate/20100606073747_create_agent_relationships.rb +1 -1
  207. data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +2 -2
  208. data/spec/dummy/db/migrate/20100814091104_add_position_to_agent_relationship.rb +1 -1
  209. data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +1 -1
  210. data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +1 -1
  211. data/spec/dummy/db/migrate/20100925074639_create_event_import_results.rb +1 -1
  212. data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +1 -1
  213. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +2 -2
  214. data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +1 -1
  215. data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_agent.rb +1 -1
  216. data/spec/dummy/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +2 -2
  217. data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +1 -1
  218. data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +1 -1
  219. data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +1 -1
  220. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +1 -1
  221. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +3 -3
  222. data/spec/dummy/db/migrate/20110913115320_add_lft_and_rgt_to_message.rb +1 -1
  223. data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +1 -1
  224. data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +1 -1
  225. data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +1 -1
  226. data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +1 -1
  227. data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +1 -1
  228. data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +1 -1
  229. data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +1 -1
  230. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +1 -1
  231. data/spec/dummy/db/migrate/20120125050502_add_depth_to_message.rb +1 -2
  232. data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +1 -2
  233. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +1 -1
  234. data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +1 -2
  235. data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +2 -3
  236. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +1 -1
  237. data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +1 -1
  238. data/spec/dummy/db/migrate/20120413051535_add_event_import_fingerprint_to_event_import_file.rb +1 -1
  239. data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +1 -1
  240. data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +1 -1
  241. data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +1 -1
  242. data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +1 -1
  243. data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +1 -1
  244. data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +1 -1
  245. data/spec/dummy/db/migrate/20120413170734_add_error_message_to_event_import_file.rb +1 -1
  246. data/spec/dummy/db/migrate/20120415060342_rename_event_import_file_imported_at_to_executed_at.rb +1 -1
  247. data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +1 -1
  248. data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +1 -1
  249. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +2 -2
  250. data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +1 -1
  251. data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +1 -1
  252. data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +1 -1
  253. data/spec/dummy/db/migrate/20130221154434_add_additional_attributes_to_user.rb +4 -4
  254. data/spec/dummy/db/migrate/20130412083556_add_latitude_and_longitude_to_library.rb +1 -1
  255. data/spec/dummy/db/migrate/20130421093852_add_periodical_to_manifestation.rb +1 -1
  256. data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +1 -1
  257. data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +1 -1
  258. data/spec/dummy/db/migrate/20130429020822_add_root_manifestation_id_to_series_statement.rb +1 -1
  259. data/spec/dummy/db/migrate/20130506175303_create_identifier_types.rb +1 -1
  260. data/spec/dummy/db/migrate/20130506175834_create_identifiers.rb +3 -3
  261. data/spec/dummy/db/migrate/20130509185724_add_statement_of_responsibility_to_manifestation.rb +1 -1
  262. data/spec/dummy/db/migrate/20140110122216_create_user_import_files.rb +1 -1
  263. data/spec/dummy/db/migrate/20140110131010_create_user_import_results.rb +1 -1
  264. data/spec/dummy/db/migrate/20140122054321_create_profiles.rb +2 -2
  265. data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +1 -1
  266. data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +1 -1
  267. data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +1 -1
  268. data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +1 -1
  269. data/spec/dummy/db/migrate/20140523171309_create_event_import_file_transitions.rb +1 -1
  270. data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +1 -1
  271. data/spec/dummy/db/migrate/20140524074813_create_user_import_file_transitions.rb +1 -1
  272. data/spec/dummy/db/migrate/20140610123439_drop_email_unique_constraint_enju_leaf_rc10.rb +1 -1
  273. data/spec/dummy/db/migrate/20140614065404_create_resource_export_files.rb +1 -1
  274. data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +1 -1
  275. data/spec/dummy/db/migrate/20140628071719_add_user_encoding_to_event_import_file.rb +1 -1
  276. data/spec/dummy/db/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +1 -1
  277. data/spec/dummy/db/migrate/20140628073524_add_user_encoding_to_agent_import_file.rb +1 -1
  278. data/spec/dummy/db/migrate/20140628073535_add_user_encoding_to_resource_import_file.rb +1 -1
  279. data/spec/dummy/db/migrate/20140709113413_create_user_export_files.rb +1 -1
  280. data/spec/dummy/db/migrate/20140709113905_create_user_export_file_transitions.rb +1 -1
  281. data/spec/dummy/db/migrate/20140720140916_add_binding_item_identifier_to_item.rb +1 -1
  282. data/spec/dummy/db/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +1 -1
  283. data/spec/dummy/db/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +1 -1
  284. data/spec/dummy/db/migrate/20140720192418_add_default_library_id_to_event_import_file.rb +1 -1
  285. data/spec/dummy/db/migrate/20140721151416_add_default_shelf_id_to_resource_import_file.rb +1 -1
  286. data/spec/dummy/db/migrate/20140802082007_add_manifestation_id_to_item.rb +1 -1
  287. data/spec/dummy/db/migrate/20140811031145_add_expired_at_to_profile.rb +1 -1
  288. data/spec/dummy/db/migrate/20140812152348_create_event_export_files.rb +1 -1
  289. data/spec/dummy/db/migrate/20140812153137_create_event_export_file_transitions.rb +1 -1
  290. data/spec/dummy/db/migrate/20140813182425_add_publication_place_to_manifestation.rb +1 -1
  291. data/spec/dummy/db/migrate/20140814070854_add_default_event_category_id_to_event_import_file.rb +1 -1
  292. data/spec/dummy/db/migrate/20140821151023_create_colors.rb +1 -1
  293. data/spec/dummy/db/migrate/20140822114527_add_error_message_to_resource_import_result.rb +1 -1
  294. data/spec/dummy/db/migrate/20140823083524_add_extent_to_manifestation.rb +1 -1
  295. data/spec/dummy/db/migrate/20140823094847_add_dimensions_to_manifestation.rb +1 -1
  296. data/spec/dummy/db/migrate/20140823095740_rename_manifestation_periodical_to_serial.rb +1 -1
  297. data/spec/dummy/db/migrate/20141003181336_add_full_name_transcription_to_profile.rb +1 -1
  298. data/spec/dummy/db/migrate/20141003182825_add_date_of_birth_to_profile.rb +1 -1
  299. data/spec/dummy/db/migrate/20150117111136_add_foreign_key_to_items_referencing_manifestations.rb +1 -1
  300. data/spec/dummy/db/migrate/20150221063719_add_settings_to_library_group.rb +1 -1
  301. data/spec/dummy/db/migrate/20150506105356_add_error_message_to_user_import_result.rb +1 -1
  302. data/spec/dummy/db/migrate/20150924115059_create_withdraws.rb +1 -1
  303. data/spec/dummy/db/migrate/20151125004028_add_profile_id_to_agent.rb +1 -1
  304. data/spec/dummy/db/migrate/20151213070943_add_translation_table_to_library_group.rb +5 -13
  305. data/spec/dummy/db/migrate/20151213072705_add_footer_banner_to_library_group.rb +1 -1
  306. data/spec/dummy/db/migrate/20160610093229_add_html_snippet_to_library_group.rb +1 -1
  307. data/spec/dummy/db/migrate/20160627232219_add_most_recent_to_user_import_file_transitions.rb +1 -1
  308. data/spec/dummy/db/migrate/20160627232316_add_most_recent_to_user_export_file_transitions.rb +1 -1
  309. data/spec/dummy/db/migrate/20160703185015_add_most_recent_to_message_transitions.rb +1 -1
  310. data/spec/dummy/db/migrate/20160801080612_add_most_recent_to_import_request_transitions.rb +1 -1
  311. data/spec/dummy/db/migrate/20160801080619_add_most_recent_to_resource_import_file_transitions.rb +1 -1
  312. data/spec/dummy/db/migrate/20160801080637_add_most_recent_to_resource_export_file_transitions.rb +1 -1
  313. data/spec/dummy/db/migrate/20160801080643_add_most_recent_to_agent_import_file_transitions.rb +1 -1
  314. data/spec/dummy/db/migrate/20160811102604_add_picture_width_to_picture_file.rb +1 -1
  315. data/spec/dummy/db/migrate/20160813191647_add_max_number_of_results_to_library_group.rb +1 -1
  316. data/spec/dummy/db/migrate/20160813191733_add_family_name_first_to_library_group.rb +1 -1
  317. data/spec/dummy/db/migrate/20160813192542_add_pub_year_facet_range_interval_to_library_group.rb +1 -1
  318. data/spec/dummy/db/migrate/20160813203039_add_user_id_to_library_group.rb +1 -1
  319. data/spec/dummy/db/migrate/20160814165332_add_most_recent_to_message_request_transitions.rb +1 -1
  320. data/spec/dummy/db/migrate/20160820004638_add_attachment_attachment_to_carrier_types.rb +1 -1
  321. data/spec/dummy/db/migrate/20170305064014_add_csv_charset_conversion_to_library_group.rb +1 -1
  322. data/spec/dummy/db/migrate/20171014084528_add_header_logo_to_library_group.rb +1 -1
  323. data/spec/dummy/db/migrate/20171119051258_set_not_null_to_manifestation_id_on_items.rb +1 -1
  324. data/spec/dummy/db/migrate/20171126133835_rename_login_banner_to_old_login_banner.rb +1 -1
  325. data/spec/dummy/db/migrate/20171126135238_add_foreign_key_to_library_group_id_on_library.rb +1 -1
  326. data/spec/dummy/db/migrate/20180102162311_add_header_logo_meta_to_library_group.rb +1 -1
  327. data/spec/dummy/db/migrate/20180107160726_add_constraints_to_most_recent_for_user_import_file_transitions.rb +2 -2
  328. data/spec/dummy/db/migrate/20180107160740_add_constraints_to_most_recent_for_user_export_file_transitions.rb +2 -2
  329. data/spec/dummy/db/migrate/20180107161311_add_constraints_to_most_recent_for_agent_import_file_transitions.rb +2 -2
  330. data/spec/dummy/db/migrate/20180107161331_add_constraints_to_most_recent_for_resource_import_file_transitions.rb +2 -2
  331. data/spec/dummy/db/migrate/20180107161347_add_constraints_to_most_recent_for_resource_export_file_transitions.rb +2 -2
  332. data/spec/dummy/db/migrate/20180107161410_add_constraints_to_most_recent_for_import_request_transitions.rb +2 -2
  333. data/spec/dummy/db/schema.rb +858 -936
  334. data/spec/factories/bookstore.rb +5 -0
  335. data/spec/factories/budget_types.rb +18 -0
  336. data/spec/factories/checkout.rb +1 -1
  337. data/spec/factories/item.rb +6 -4
  338. data/spec/factories/manifestation_checkout_stat.rb +4 -3
  339. data/spec/factories/manifestation_reserve_stat.rb +4 -3
  340. data/spec/factories/profile.rb +1 -1
  341. data/spec/factories/reserve.rb +2 -3
  342. data/spec/factories/user.rb +4 -4
  343. data/spec/factories/user_checkout_stat.rb +4 -3
  344. data/spec/factories/user_reserve_stat.rb +4 -3
  345. data/spec/fixtures/content_types.yml +98 -0
  346. data/spec/fixtures/frequencies.yml +68 -0
  347. data/spec/helpers/items_helper_spec.rb +1 -1
  348. data/spec/models/basket_spec.rb +1 -1
  349. data/spec/models/carrier_type_has_checkout_type_spec.rb +1 -1
  350. data/spec/models/checkin_spec.rb +3 -1
  351. data/spec/models/checkout_spec.rb +2 -2
  352. data/spec/models/checkout_stat_has_manifestation_spec.rb +1 -1
  353. data/spec/models/checkout_stat_has_user_spec.rb +1 -1
  354. data/spec/models/checkout_type_spec.rb +1 -1
  355. data/spec/models/circulation_status_spec.rb +1 -1
  356. data/spec/models/item_has_use_resetriction_spec.rb +1 -1
  357. data/spec/models/lending_policy_spec.rb +1 -1
  358. data/spec/models/reserve_spec.rb +1 -1
  359. data/spec/models/reserve_stat_has_manifestation_spec.rb +1 -1
  360. data/spec/models/reserve_stat_has_user_spec.rb +1 -1
  361. data/spec/models/use_resetriction_spec.rb +1 -1
  362. data/spec/models/user_spec.rb +2 -2
  363. data/spec/rails_helper.rb +1 -14
  364. data/spec/routing/checked_items_routing_spec.rb +7 -7
  365. data/spec/support/tasks.rb +30 -0
  366. data/spec/tasks/export_checkout_spec.rb +37 -0
  367. data/spec/views/checkout_types/edit.html.erb_spec.rb +8 -8
  368. data/spec/views/checkout_types/index.html.erb_spec.rb +9 -9
  369. data/spec/views/checkout_types/new.html.erb_spec.rb +8 -8
  370. data/spec/views/checkout_types/show.html.erb_spec.rb +4 -4
  371. data/spec/views/checkouts/show.html.erb_spec.rb +2 -2
  372. data/spec/views/reserves/index.html.erb_spec.rb +5 -5
  373. data/spec/views/use_restrictions/edit.html.erb_spec.rb +8 -8
  374. data/spec/views/use_restrictions/index.html.erb_spec.rb +9 -9
  375. data/spec/views/use_restrictions/new.html.erb_spec.rb +8 -8
  376. data/spec/views/use_restrictions/show.html.erb_spec.rb +4 -4
  377. metadata +80 -61
  378. data/app/views/checkouts/index.txt.erb +0 -4
@@ -6,20 +6,20 @@ class Checkout < ActiveRecord::Base
6
6
  scope :completed, lambda {|start_date, end_date| where('checkouts.created_at >= ? AND checkouts.created_at < ?', start_date, end_date)}
7
7
  scope :on, lambda {|date| where('created_at >= ? AND created_at < ?', date.beginning_of_day, date.tomorrow.beginning_of_day)}
8
8
 
9
- belongs_to :user
9
+ belongs_to :user, optional: true
10
10
  delegate :username, :user_number, to: :user, prefix: true
11
11
  belongs_to :item, touch: true
12
- belongs_to :checkin
12
+ belongs_to :checkin, optional: true
13
13
  belongs_to :librarian, class_name: 'User'
14
14
  belongs_to :basket
15
- belongs_to :shelf
16
- belongs_to :library
15
+ belongs_to :shelf, optional: true
16
+ belongs_to :library, optional: true
17
17
 
18
- validates_associated :user, :item, :librarian, :checkin #, :basket
18
+ validates_associated :user, :item, :librarian, :checkin # , :basket
19
19
  # TODO: 貸出履歴を保存しない場合は、ユーザ名を削除する
20
- #validates_presence_of :user, :item, :basket
21
- validates_presence_of :item_id, :basket_id, :due_date
22
- validates_uniqueness_of :item_id, scope: [:basket_id, :user_id]
20
+ # validates_presence_of :user, :item, :basket
21
+ validates :item_id, :basket_id, :due_date, presence: true
22
+ validates :item_id, uniqueness: { scope: [:basket_id, :user_id] }
23
23
  validate :is_not_checked?, on: :create
24
24
  validate :renewable?, on: :update
25
25
  validates_date :due_date
@@ -59,13 +59,13 @@ class Checkout < ActiveRecord::Base
59
59
  def renewable?
60
60
  return nil if checkin
61
61
  messages = []
62
- if !operator and overdue?
62
+ if !operator && overdue?
63
63
  messages << I18n.t('checkout.you_have_overdue_item')
64
64
  end
65
- if !operator and reserved?
65
+ if !operator && reserved?
66
66
  messages << I18n.t('checkout.this_item_is_reserved')
67
67
  end
68
- if !operator and over_checkout_renewal_limit?
68
+ if !operator && over_checkout_renewal_limit?
69
69
  messages << I18n.t('checkout.excessed_renewal_limit')
70
70
  end
71
71
  if messages.empty?
@@ -121,10 +121,10 @@ class Checkout < ActiveRecord::Base
121
121
  end
122
122
 
123
123
  def self.manifestations_count(start_date, end_date, manifestation)
124
- self.where(
125
- self.arel_table[:created_at].gteq start_date
124
+ where(
125
+ arel_table[:created_at].gteq start_date
126
126
  ).where(
127
- self.arel_table[:created_at].lt end_date
127
+ arel_table[:created_at].lt end_date
128
128
  )
129
129
  .where(
130
130
  item_id: manifestation.items.pluck('items.id')
@@ -1,11 +1,11 @@
1
1
  class CheckoutStatHasManifestation < ActiveRecord::Base
2
- #attr_accessible :manifestation_checkout_stat_id, :manifestation_id,
2
+ # attr_accessible :manifestation_checkout_stat_id, :manifestation_id,
3
3
  # as: :admin
4
4
  belongs_to :manifestation_checkout_stat
5
5
  belongs_to :manifestation
6
6
 
7
- validates_uniqueness_of :manifestation_id, scope: :manifestation_checkout_stat_id
8
- validates_presence_of :manifestation_checkout_stat_id, :manifestation_id
7
+ validates :manifestation_id, uniqueness: { scope: :manifestation_checkout_stat_id }
8
+ validates :manifestation_checkout_stat_id, :manifestation_id, presence: true
9
9
 
10
10
  paginates_per 10
11
11
  end
@@ -1,11 +1,11 @@
1
1
  class CheckoutStatHasUser < ActiveRecord::Base
2
- #attr_accessible :user_checkout_stat_id, :user_id,
2
+ # attr_accessible :user_checkout_stat_id, :user_id,
3
3
  # as: :admin
4
4
  belongs_to :user_checkout_stat
5
5
  belongs_to :user
6
6
 
7
- validates_uniqueness_of :user_id, scope: :user_checkout_stat_id
8
- validates_presence_of :user_checkout_stat_id, :user_id
7
+ validates :user_id, uniqueness: { scope: :user_checkout_stat_id }
8
+ validates :user_checkout_stat_id, :user_id, presence: true
9
9
 
10
10
  paginates_per 10
11
11
  end
@@ -7,8 +7,8 @@ class CheckoutType < ActiveRecord::Base
7
7
  has_many :user_groups, through: :user_group_has_checkout_types
8
8
  has_many :carrier_type_has_checkout_types, dependent: :destroy
9
9
  has_many :carrier_types, through: :carrier_type_has_checkout_types
10
- #has_many :item_has_checkout_types, dependent: :destroy
11
- #has_many :items, through: :item_has_checkout_types
10
+ # has_many :item_has_checkout_types, dependent: :destroy
11
+ # has_many :items, through: :item_has_checkout_types
12
12
  has_many :items
13
13
 
14
14
  paginates_per 10
@@ -7,6 +7,7 @@ class CirculationStatus < ActiveRecord::Base
7
7
  has_many :items
8
8
 
9
9
  private
10
+
10
11
  def valid_name?
11
12
  true
12
13
  end
@@ -23,7 +23,7 @@ module EnjuCirculation
23
23
  checked_item.item.checkout!(user)
24
24
  checkout.save!
25
25
  end
26
- CheckedItem.destroy_all(basket_id: id)
26
+ CheckedItem.where(basket_id: id).destroy_all
27
27
  end
28
28
  end
29
29
  end
@@ -31,14 +31,14 @@ module EnjuCirculation
31
31
  has_many :checkouts
32
32
  has_many :reserves
33
33
  has_many :checked_items
34
- has_many :baskets, :through => :checked_items
35
- belongs_to :circulation_status, :validate => true
34
+ has_many :baskets, through: :checked_items
35
+ belongs_to :circulation_status, validate: true
36
36
  belongs_to :checkout_type
37
- has_many :lending_policies, :dependent => :destroy
38
- has_one :item_has_use_restriction, :dependent => :destroy
39
- has_one :use_restriction, :through => :item_has_use_restriction
37
+ has_many :lending_policies, dependent: :destroy
38
+ has_one :item_has_use_restriction, dependent: :destroy
39
+ has_one :use_restriction, through: :item_has_use_restriction
40
40
  validates_associated :circulation_status, :checkout_type
41
- validates_presence_of :circulation_status, :checkout_type
41
+ validates :circulation_status, :checkout_type, presence: true
42
42
  searchable do
43
43
  string :circulation_status do
44
44
  circulation_status.name
@@ -50,12 +50,12 @@ module EnjuCirculation
50
50
  end
51
51
 
52
52
  def set_circulation_status
53
- self.circulation_status = CirculationStatus.where(:name => 'In Process').first if self.circulation_status.nil?
53
+ self.circulation_status = CirculationStatus.find_by(name: 'In Process') if circulation_status.nil?
54
54
  end
55
55
 
56
56
  def checkout_status(user)
57
57
  return nil unless user
58
- user.profile.user_group.user_group_has_checkout_types.where(:checkout_type_id => self.checkout_type.id).first
58
+ user.profile.user_group.user_group_has_checkout_types.find_by(checkout_type_id: checkout_type.id)
59
59
  end
60
60
 
61
61
  def reserved?
@@ -64,7 +64,7 @@ module EnjuCirculation
64
64
  end
65
65
 
66
66
  def rent?
67
- return true if self.checkouts.not_returned.select(:item_id).detect{|checkout| checkout.item_id == self.id}
67
+ return true if checkouts.not_returned.select(:item_id).detect{|checkout| checkout.item_id == id}
68
68
  false
69
69
  end
70
70
 
@@ -84,17 +84,17 @@ module EnjuCirculation
84
84
  end
85
85
 
86
86
  def checkout!(user)
87
- self.circulation_status = CirculationStatus.where(name: 'On Loan').first
88
87
  if reserved_by_user?(user)
89
- manifestation.next_reservation.update_attributes(checked_out_at: Time.zone.now)
88
+ manifestation.next_reservation.update(checked_out_at: Time.zone.now)
90
89
  manifestation.next_reservation.transition_to!(:completed)
90
+ manifestation.reload
91
91
  end
92
- save!
92
+ update!(circulation_status: CirculationStatus.find_by(name: 'On Loan'))
93
93
  end
94
94
 
95
95
  def checkin!
96
- self.circulation_status = CirculationStatus.where(name: 'Available On Shelf').first
97
- save(validate: false)
96
+ self.circulation_status = CirculationStatus.find_by(name: 'Available On Shelf')
97
+ save!
98
98
  end
99
99
 
100
100
  def retain(librarian)
@@ -118,7 +118,7 @@ module EnjuCirculation
118
118
  end
119
119
 
120
120
  def lending_rule(user)
121
- policy = lending_policies.where(user_group_id: user.profile.user_group.id).first
121
+ policy = lending_policies.find_by(user_group_id: user.profile.user_group.id)
122
122
  if policy
123
123
  policy
124
124
  else
@@ -131,7 +131,7 @@ module EnjuCirculation
131
131
  end
132
132
 
133
133
  def create_lending_policy(user)
134
- rule = user.profile.user_group.user_group_has_checkout_types.where(checkout_type_id: checkout_type_id).first
134
+ rule = user.profile.user_group.user_group_has_checkout_types.find_by(checkout_type_id: checkout_type_id)
135
135
  return nil unless rule
136
136
  LendingPolicy.create!(
137
137
  item_id: id,
@@ -148,7 +148,7 @@ module EnjuCirculation
148
148
  end
149
149
 
150
150
  def next_reservation
151
- Reserve.waiting.where(:item_id => id).first
151
+ Reserve.waiting.find_by(item_id: id)
152
152
  end
153
153
 
154
154
  def latest_checkout
@@ -3,7 +3,7 @@ module EnjuCirculation
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- has_many :reserves, :foreign_key => :manifestation_id
6
+ has_many :reserves, foreign_key: :manifestation_id
7
7
 
8
8
  searchable do
9
9
  boolean :reservable do
@@ -13,12 +13,12 @@ module EnjuCirculation
13
13
  end
14
14
 
15
15
  def next_reservation
16
- self.reserves.waiting.order('reserves.created_at ASC').readonly(false).first
16
+ reserves.waiting.order('reserves.created_at ASC').readonly(false).first
17
17
  end
18
18
 
19
19
  def available_checkout_types(user)
20
20
  if user
21
- user.profile.user_group.user_group_has_checkout_types.available_for_carrier_type(self.carrier_type)
21
+ user.profile.user_group.user_group_has_checkout_types.available_for_carrier_type(carrier_type)
22
22
  end
23
23
  end
24
24
 
@@ -34,7 +34,7 @@ module EnjuCirculation
34
34
 
35
35
  def is_reserved_by?(user)
36
36
  return nil unless user
37
- reserve = Reserve.waiting.where(:user_id => user.id, :manifestation_id => id).first
37
+ reserve = Reserve.waiting.where(user_id: user.id, manifestation_id: id).first
38
38
  if reserve
39
39
  reserve
40
40
  else
@@ -43,7 +43,7 @@ module EnjuCirculation
43
43
  end
44
44
 
45
45
  def is_reserved?
46
- if self.reserves.present?
46
+ if reserves.present?
47
47
  true
48
48
  else
49
49
  false
@@ -51,7 +51,7 @@ module EnjuCirculation
51
51
  end
52
52
 
53
53
  def checkouts(start_date, end_date)
54
- Checkout.completed(start_date, end_date).where(:item_id => self.items.collect(&:id))
54
+ Checkout.completed(start_date, end_date).where(item_id: items.collect(&:id))
55
55
  end
56
56
 
57
57
  def checkout_period(user)
@@ -3,14 +3,14 @@ module EnjuCirculation
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- has_many :checkouts, :dependent => :nullify
7
- has_many :reserves, :dependent => :destroy
8
- has_many :reserved_manifestations, :through => :reserves, :source => :manifestation
6
+ has_many :checkouts, dependent: :nullify
7
+ has_many :reserves, dependent: :destroy
8
+ has_many :reserved_manifestations, through: :reserves, source: :manifestation
9
9
  has_many :checkout_stat_has_users
10
- has_many :user_checkout_stats, :through => :checkout_stat_has_users
10
+ has_many :user_checkout_stats, through: :checkout_stat_has_users
11
11
  has_many :reserve_stat_has_users
12
- has_many :user_reserve_stats, :through => :reserve_stat_has_users
13
- has_many :baskets, :dependent => :destroy
12
+ has_many :user_reserve_stats, through: :reserve_stat_has_users
13
+ has_many :baskets, dependent: :destroy
14
14
 
15
15
  before_destroy :check_item_before_destroy
16
16
  end
@@ -26,20 +26,20 @@ module EnjuCirculation
26
26
  checkout_count = {}
27
27
  CheckoutType.all.each do |checkout_type|
28
28
  # 資料種別ごとの貸出中の冊数を計算
29
- checkout_count[:"#{checkout_type.name}"] = self.checkouts.count_by_sql(["
29
+ checkout_count[:"#{checkout_type.name}"] = checkouts.count_by_sql(["
30
30
  SELECT count(item_id) FROM checkouts
31
31
  WHERE item_id IN (
32
32
  SELECT id FROM items
33
33
  WHERE checkout_type_id = ?
34
34
  )
35
- AND user_id = ? AND checkin_id IS NULL", checkout_type.id, self.id]
35
+ AND user_id = ? AND checkin_id IS NULL", checkout_type.id, id]
36
36
  )
37
37
  end
38
38
  checkout_count
39
39
  end
40
40
 
41
41
  def reached_reservation_limit?(manifestation)
42
- return true if profile.user_group.user_group_has_checkout_types.available_for_carrier_type(manifestation.carrier_type).where(:user_group_id => profile.user_group.id).collect(&:reservation_limit).max.to_i <= reserves.waiting.size
42
+ return true if profile.user_group.user_group_has_checkout_types.available_for_carrier_type(manifestation.carrier_type).where(user_group_id: profile.user_group.id).collect(&:reservation_limit).max.to_i <= reserves.waiting.size
43
43
  false
44
44
  end
45
45
 
@@ -6,12 +6,12 @@ module EnjuCirculation
6
6
  has_many :user_group_has_checkout_types, dependent: :destroy
7
7
  has_many :checkout_types, through: :user_group_has_checkout_types
8
8
  has_many :lending_policies
9
- accepts_nested_attributes_for :user_group_has_checkout_types, :allow_destroy => true, :reject_if => :all_blank
9
+ accepts_nested_attributes_for :user_group_has_checkout_types, allow_destroy: true, reject_if: :all_blank
10
10
 
11
- validates_numericality_of :number_of_day_to_notify_due_date,
12
- :number_of_day_to_notify_overdue,
13
- :number_of_time_to_notify_overdue,
14
- :greater_than_or_equal_to => 0
11
+ validates :number_of_day_to_notify_due_date,
12
+ :number_of_day_to_notify_overdue,
13
+ :number_of_time_to_notify_overdue,
14
+ numericality: { greater_than_or_equal_to: 0 }
15
15
  end
16
16
  end
17
17
  end
@@ -4,8 +4,8 @@ class ItemHasUseRestriction < ActiveRecord::Base
4
4
  accepts_nested_attributes_for :use_restriction
5
5
 
6
6
  validates_associated :item, :use_restriction
7
- validates_presence_of :use_restriction
8
- validates_presence_of :item, on: :update
7
+ validates :use_restriction, presence: true
8
+ validates :item, presence: { on: :update }
9
9
 
10
10
  paginates_per 10
11
11
  end
@@ -3,8 +3,8 @@ class LendingPolicy < ActiveRecord::Base
3
3
  belongs_to :item
4
4
  belongs_to :user_group
5
5
 
6
- validates_presence_of :item, :user_group
7
- validates_uniqueness_of :user_group_id, scope: :item_id
6
+ validates :item, :user_group, presence: true
7
+ validates :user_group_id, uniqueness: { scope: :item_id }
8
8
  validates_date :fixed_due_date, allow_blank: true
9
9
 
10
10
  paginates_per 10
@@ -17,15 +17,15 @@ class ManifestationCheckoutStat < ActiveRecord::Base
17
17
  end
18
18
 
19
19
  delegate :can_transition_to?, :transition_to!, :transition_to, :current_state,
20
- to: :state_machine
20
+ to: :state_machine
21
21
 
22
22
  def calculate_count!
23
23
  self.started_at = Time.zone.now
24
24
  Manifestation.find_each do |manifestation|
25
25
  daily_count = Checkout.manifestations_count(start_date.beginning_of_day, end_date.tomorrow.beginning_of_day, manifestation)
26
- #manifestation.update_attributes({daily_checkouts_count: daily_count, total_count: manifestation.total_count + daily_count})
26
+ # manifestation.update_attributes({daily_checkouts_count: daily_count, total_count: manifestation.total_count + daily_count})
27
27
  if daily_count > 0
28
- self.manifestations << manifestation
28
+ manifestations << manifestation
29
29
  sql = ['UPDATE checkout_stat_has_manifestations SET checkouts_count = ? WHERE manifestation_checkout_stat_id = ? AND manifestation_id = ?', daily_count, id, manifestation.id]
30
30
  ManifestationCheckoutStat.connection.execute(
31
31
  self.class.send(:sanitize_sql_array, sql)
@@ -38,6 +38,7 @@ class ManifestationCheckoutStat < ActiveRecord::Base
38
38
  end
39
39
 
40
40
  private
41
+
41
42
  def self.transition_class
42
43
  ManifestationCheckoutStatTransition
43
44
  end
@@ -2,8 +2,8 @@ class ManifestationCheckoutStatTransition < ActiveRecord::Base
2
2
  include Statesman::Adapters::ActiveRecordTransition
3
3
 
4
4
 
5
- belongs_to :manifestation_cehckout_stat, inverse_of: :manifestation_checkout_stat_transitions
6
- #attr_accessible :to_state, :sort_key, :metadata
5
+ belongs_to :manifestation_checkout_stat, inverse_of: :manifestation_checkout_stat_transitions
6
+ # attr_accessible :to_state, :sort_key, :metadata
7
7
  end
8
8
 
9
9
  # == Schema Information
@@ -17,15 +17,15 @@ class ManifestationReserveStat < ActiveRecord::Base
17
17
  end
18
18
 
19
19
  delegate :can_transition_to?, :transition_to!, :transition_to, :current_state,
20
- to: :state_machine
20
+ to: :state_machine
21
21
 
22
22
  def calculate_count!
23
23
  self.started_at = Time.zone.now
24
24
  Manifestation.find_each do |manifestation|
25
25
  daily_count = manifestation.reserves.created(start_date.beginning_of_day, end_date.tomorrow.beginning_of_day).size
26
- #manifestation.update_attributes({daily_reserves_count: daily_count, total_count: manifestation.total_count + daily_count})
26
+ # manifestation.update_attributes({daily_reserves_count: daily_count, total_count: manifestation.total_count + daily_count})
27
27
  if daily_count > 0
28
- self.manifestations << manifestation
28
+ manifestations << manifestation
29
29
  sql = ['UPDATE reserve_stat_has_manifestations SET reserves_count = ? WHERE manifestation_reserve_stat_id = ? AND manifestation_id = ?', daily_count, id, manifestation.id]
30
30
  ManifestationReserveStat.connection.execute(
31
31
  self.class.send(:sanitize_sql_array, sql)
@@ -38,6 +38,7 @@ class ManifestationReserveStat < ActiveRecord::Base
38
38
  end
39
39
 
40
40
  private
41
+
41
42
  def self.transition_class
42
43
  ManifestationReserveStatTransition
43
44
  end
@@ -3,7 +3,7 @@ class ManifestationReserveStatTransition < ActiveRecord::Base
3
3
 
4
4
 
5
5
  belongs_to :manifestation_reserve_stat, inverse_of: :manifestation_reserve_stat_transitions
6
- #attr_accessible :to_state, :sort_key, :metadata
6
+ # attr_accessible :to_state, :sort_key, :metadata
7
7
  end
8
8
 
9
9
  # == Schema Information
@@ -18,32 +18,32 @@ class Reserve < ActiveRecord::Base
18
18
  scope :not_sent_cancel_notice_to_library, -> {in_state(:canceled).where(expiration_notice_to_library: false)}
19
19
  belongs_to :user
20
20
  belongs_to :manifestation, touch: true
21
- belongs_to :librarian, class_name: 'User'
22
- belongs_to :item, touch: true
21
+ belongs_to :librarian, class_name: 'User', optional: true
22
+ belongs_to :item, touch: true, optional: true
23
23
  belongs_to :request_status_type
24
- belongs_to :pickup_location, :class_name => 'Library'
24
+ belongs_to :pickup_location, class_name: 'Library', optional: true
25
25
 
26
26
  validates_associated :user, :librarian, :request_status_type
27
- validates :manifestation, associated: true #, on: :create
28
- validates_presence_of :user, :request_status_type
27
+ validates :manifestation, associated: true # , on: :create
28
+ validates :user, :request_status_type, presence: true
29
29
  validates :manifestation, presence: true, unless: Proc.new{|reserve|
30
30
  reserve.completed?
31
31
  }
32
- #validates_uniqueness_of :manifestation_id, scope: :user_id
32
+ # validates_uniqueness_of :manifestation_id, scope: :user_id
33
33
  validates_date :expired_at, allow_blank: true
34
34
  validate :manifestation_must_include_item
35
35
  validate :available_for_reservation?, on: :create
36
36
  validates :item_id, presence: true, if: Proc.new{|reserve|
37
37
  if item_id_changed?
38
- if reserve.completed? or reserve.retained?
39
- unless item_id_change[0]
40
- false
41
- else
42
- unless item_id_change[1]
43
- false
44
- else
38
+ if reserve.completed? || reserve.retained?
39
+ if item_id_change[0]
40
+ if item_id_change[1]
45
41
  true
42
+ else
43
+ false
46
44
  end
45
+ else
46
+ false
47
47
  end
48
48
  end
49
49
  else
@@ -77,7 +77,7 @@ class Reserve < ActiveRecord::Base
77
77
  has_many :reserve_transitions, autosave: false
78
78
 
79
79
  delegate :can_transition_to?, :transition_to!, :transition_to, :current_state,
80
- to: :state_machine
80
+ to: :state_machine
81
81
 
82
82
  searchable do
83
83
  text :username do
@@ -97,7 +97,7 @@ class Reserve < ActiveRecord::Base
97
97
  manifestation.try(:titles)
98
98
  end
99
99
  boolean :hold do |reserve|
100
- self.hold.include?(reserve)
100
+ hold.include?(reserve)
101
101
  end
102
102
  string :state do
103
103
  current_state
@@ -136,7 +136,7 @@ class Reserve < ActiveRecord::Base
136
136
 
137
137
  def retained_by_other_user?
138
138
  return nil if force_retaining == '1'
139
- if item and !retained?
139
+ if item && !retained?
140
140
  if Reserve.retained.where(item_id: item.item_identifier).count > 0
141
141
  errors[:base] << I18n.t('reserve.attempt_to_update_retained_reservation')
142
142
  end
@@ -148,7 +148,7 @@ class Reserve < ActiveRecord::Base
148
148
  end
149
149
 
150
150
  def check_expired_at
151
- if canceled_at.blank? and expired_at?
151
+ if canceled_at.blank? && expired_at?
152
152
  if !completed?
153
153
  if expired_at.beginning_of_day < Time.zone.now
154
154
  errors[:base] << I18n.t('reserve.invalid_date')
@@ -164,64 +164,64 @@ class Reserve < ActiveRecord::Base
164
164
  end
165
165
 
166
166
  def send_message(sender = nil)
167
- sender = User.find(1) unless sender # TODO: システムからのメッセージの発信者
167
+ sender ||= User.find(1) # TODO: システムからのメッセージの発信者
168
168
  Reserve.transaction do
169
169
  case current_state
170
170
  when 'requested'
171
171
  message_template_to_patron = MessageTemplate.localized_template('reservation_accepted_for_patron', user.profile.locale)
172
172
  request = MessageRequest.new
173
- request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
173
+ request.assign_attributes(sender: sender, receiver: user, message_template: message_template_to_patron)
174
174
  request.save_message_body(manifestations: Array[manifestation], user: user)
175
175
  request.transition_to!(:sent) # 受付時は即時送信
176
176
  message_template_to_library = MessageTemplate.localized_template('reservation_accepted_for_library', user.profile.locale)
177
177
  request = MessageRequest.new
178
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
178
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_to_library)
179
179
  request.save_message_body(manifestations: Array[manifestation], user: user)
180
180
  request.transition_to!(:sent) # 受付時は即時送信
181
181
  when 'canceled'
182
182
  message_template_to_patron = MessageTemplate.localized_template('reservation_canceled_for_patron', user.profile.locale)
183
183
  request = MessageRequest.new
184
- request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
184
+ request.assign_attributes(sender: sender, receiver: user, message_template: message_template_to_patron)
185
185
  request.save_message_body(manifestations: Array[manifestation], user: user)
186
186
  request.transition_to!(:sent) # キャンセル時は即時送信
187
187
  message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', user.profile.locale)
188
188
  request = MessageRequest.new
189
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
189
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_to_library)
190
190
  request.save_message_body(manifestations: Array[manifestation], user: user)
191
191
  request.transition_to!(:sent) # キャンセル時は即時送信
192
192
  when 'expired'
193
193
  message_template_to_patron = MessageTemplate.localized_template('reservation_expired_for_patron', user.profile.locale)
194
194
  request = MessageRequest.new
195
- request.assign_attributes({sender: sender, receiver: user, message_template: message_template_to_patron})
195
+ request.assign_attributes(sender: sender, receiver: user, message_template: message_template_to_patron)
196
196
  request.save_message_body(manifestations: Array[manifestation], user: user)
197
197
  request.transition_to!(:sent)
198
198
  reload
199
- self.update_attribute(:expiration_notice_to_patron, true)
199
+ update_attribute(:expiration_notice_to_patron, true)
200
200
  message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
201
201
  request = MessageRequest.new
202
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
202
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_to_library)
203
203
  request.save_message_body(manifestations: Array[manifestation], user: sender)
204
204
  request.transition_to!(:sent)
205
205
  when 'retained'
206
206
  message_template_for_patron = MessageTemplate.localized_template('item_received_for_patron', user.profile.locale)
207
207
  request = MessageRequest.new
208
- request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron})
208
+ request.assign_attributes(sender: sender, receiver: user, message_template: message_template_for_patron)
209
209
  request.save_message_body(manifestations: Array[item.manifestation], user: user)
210
210
  request.transition_to!(:sent)
211
211
  message_template_for_library = MessageTemplate.localized_template('item_received_for_library', user.profile.locale)
212
212
  request = MessageRequest.new
213
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library})
213
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_for_library)
214
214
  request.save_message_body(manifestations: Array[item.manifestation], user: user)
215
215
  request.transition_to!(:sent)
216
216
  when 'postponed'
217
217
  message_template_for_patron = MessageTemplate.localized_template('reservation_postponed_for_patron', user.profile.locale)
218
218
  request = MessageRequest.new
219
- request.assign_attributes({sender: sender, receiver: user, message_template: message_template_for_patron})
219
+ request.assign_attributes(sender: sender, receiver: user, message_template: message_template_for_patron)
220
220
  request.save_message_body(manifestations: Array[manifestation], user: user)
221
221
  request.transition_to!(:sent)
222
222
  message_template_for_library = MessageTemplate.localized_template('reservation_postponed_for_library', user.profile.locale)
223
223
  request = MessageRequest.new
224
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_for_library})
224
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_for_library)
225
225
  request.save_message_body(manifestations: Array[manifestation], user: user)
226
226
  request.transition_to!(:sent)
227
227
  else
@@ -236,13 +236,13 @@ class Reserve < ActiveRecord::Base
236
236
  when 'expired'
237
237
  message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.profile.locale)
238
238
  request = MessageRequest.new
239
- request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
239
+ request.assign_attributes(sender: sender, receiver: sender, message_template: message_template_to_library)
240
240
  request.save_message_body(manifestations: options[:manifestations])
241
- self.not_sent_expiration_notice_to_library.readonly(false).each do |reserve|
241
+ not_sent_expiration_notice_to_library.readonly(false).each do |reserve|
242
242
  reserve.expiration_notice_to_library = true
243
243
  reserve.save(validate: false)
244
244
  end
245
- #when 'canceled'
245
+ # when 'canceled'
246
246
  # message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', sender.locale)
247
247
  # request = MessageRequest.new
248
248
  # request.assign_attributes({sender: sender, receiver: sender, message_template: message_template_to_library})
@@ -257,8 +257,8 @@ class Reserve < ActiveRecord::Base
257
257
 
258
258
  def self.expire
259
259
  Reserve.transaction do
260
- self.will_expire_retained(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
261
- self.will_expire_pending(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
260
+ will_expire_retained(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
261
+ will_expire_pending(Time.zone.now.beginning_of_day).readonly(false).map{|r| r.transition_to!(:expired)}
262
262
 
263
263
  # キューに登録した時点では本文は作られないので
264
264
  # 予約の連絡をすませたかどうかを識別できるようにしなければならない
@@ -272,12 +272,12 @@ class Reserve < ActiveRecord::Base
272
272
  Reserve.send_message_to_library('expired', manifestations: Reserve.not_sent_expiration_notice_to_library.collect(&:manifestation))
273
273
  end
274
274
  end
275
- #rescue
275
+ # rescue
276
276
  # logger.info "#{Time.zone.now} expiring reservations failed!"
277
277
  end
278
278
 
279
279
  def checked_out_now?
280
- if user and manifestation
280
+ if user && manifestation
281
281
  true if !(user.checkouts.not_returned.pluck(:item_id) & manifestation.items.pluck('items.id')).empty?
282
282
  end
283
283
  end
@@ -312,14 +312,15 @@ class Reserve < ActiveRecord::Base
312
312
  end
313
313
 
314
314
  private
315
+
315
316
  def do_request
316
- self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil})
317
+ assign_attributes(request_status_type: RequestStatusType.where(name: 'In Process').first, item_id: nil, retained_at: nil)
317
318
  save!
318
319
  end
319
320
 
320
321
  def retain
321
322
  # TODO: 「取り置き中」の状態を正しく表す
322
- self.assign_attributes({request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now})
323
+ assign_attributes(request_status_type: RequestStatusType.where(name: 'In Process').first, retained_at: Time.zone.now)
323
324
  Reserve.transaction do
324
325
  item.next_reservation.try(:transition_to!, :postponed)
325
326
  save!
@@ -328,7 +329,7 @@ class Reserve < ActiveRecord::Base
328
329
 
329
330
  def expire
330
331
  Reserve.transaction do
331
- self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now})
332
+ assign_attributes(request_status_type: RequestStatusType.where(name: 'Expired').first, canceled_at: Time.zone.now)
332
333
  reserve = next_reservation
333
334
  if reserve
334
335
  reserve.item = item
@@ -337,12 +338,12 @@ class Reserve < ActiveRecord::Base
337
338
  reserve.transition_to!(:retained)
338
339
  end
339
340
  end
340
- logger.info "#{Time.zone.now} reserve_id #{self.id} expired!"
341
+ logger.info "#{Time.zone.now} reserve_id #{id} expired!"
341
342
  end
342
343
 
343
344
  def cancel
344
345
  Reserve.transaction do
345
- self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now})
346
+ assign_attributes(request_status_type: RequestStatusType.where(name: 'Cannot Fulfill Request').first, canceled_at: Time.zone.now)
346
347
  save!
347
348
  reserve = next_reservation
348
349
  if reserve
@@ -355,22 +356,22 @@ class Reserve < ActiveRecord::Base
355
356
  end
356
357
 
357
358
  def checkout
358
- self.assign_attributes({request_status_type: RequestStatusType.where(name: 'Available For Pickup').first, checked_out_at: Time.zone.now})
359
+ assign_attributes(request_status_type: RequestStatusType.where(name: 'Available For Pickup').first, checked_out_at: Time.zone.now)
359
360
  save!
360
361
  end
361
362
 
362
363
  def postpone
363
- self.assign_attributes({
364
+ assign_attributes(
364
365
  request_status_type: RequestStatusType.where(name: 'In Process').first,
365
366
  item_id: nil,
366
367
  retained_at: nil,
367
368
  postponed_at: Time.zone.now
368
- })
369
+ )
369
370
  save!
370
371
  end
371
372
 
372
373
  def manifestation_must_include_item
373
- if item_id.present? and !completed?
374
+ if item_id.present? && !completed?
374
375
  errors[:base] << I18n.t('reserve.invalid_item') unless manifestation.items.include?(item)
375
376
  end
376
377
  end