enju_biblio 0.3.11 → 0.3.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/agent_import_results_controller.rb +1 -1
  3. data/app/controllers/agents_controller.rb +0 -6
  4. data/app/controllers/items_controller.rb +15 -10
  5. data/app/controllers/manifestations_controller.rb +68 -76
  6. data/app/controllers/resource_import_results_controller.rb +2 -2
  7. data/app/controllers/series_statements_controller.rb +0 -6
  8. data/app/helpers/manifestations_helper.rb +8 -8
  9. data/app/models/agent.rb +10 -1
  10. data/app/models/form_of_work.rb +1 -1
  11. data/app/models/frequency.rb +1 -1
  12. data/app/models/identifier.rb +1 -1
  13. data/app/models/import_request.rb +2 -3
  14. data/app/models/item.rb +6 -6
  15. data/app/models/item_custom_value.rb +1 -1
  16. data/app/models/manifestation.rb +10 -18
  17. data/app/models/manifestation_custom_value.rb +1 -1
  18. data/app/models/resource_import_file.rb +8 -4
  19. data/app/views/agent_import_results/{index.txt.ruby → index.text.ruby} +0 -0
  20. data/app/views/agent_relationship_types/index.html.erb +3 -3
  21. data/app/views/agents/index.rss.builder +2 -2
  22. data/app/views/items/_item.json.jbuilder +17 -0
  23. data/app/views/items/index.json.jbuilder +5 -0
  24. data/app/views/items/index.text.ruby +13 -0
  25. data/app/views/items/show.html.erb +125 -125
  26. data/app/views/items/show.json.jbuilder +1 -0
  27. data/app/views/layouts/agents.html.erb +2 -2
  28. data/app/views/layouts/manifestations.html.erb +2 -2
  29. data/app/views/manifestations/_carrier_type_facet.html.erb +1 -1
  30. data/app/views/manifestations/_classification_facet.html.erb +2 -2
  31. data/app/views/manifestations/_export_list.html.erb +4 -4
  32. data/app/views/manifestations/_form.html.erb +3 -3
  33. data/app/views/manifestations/_language_facet.html.erb +1 -1
  34. data/app/views/manifestations/_library_facet.html.erb +1 -1
  35. data/app/views/manifestations/_pub_year_facet.html.erb +1 -1
  36. data/app/views/manifestations/_reservable_facet.html.erb +2 -2
  37. data/app/views/manifestations/_show_detail_librarian.html.erb +12 -8
  38. data/app/views/manifestations/_show_detail_user.html.erb +12 -8
  39. data/app/views/manifestations/_title.html.erb +1 -1
  40. data/app/views/manifestations/index.html.erb +7 -7
  41. data/app/views/manifestations/index.rdf.builder +2 -2
  42. data/app/views/manifestations/index.rss.builder +2 -2
  43. data/app/views/manifestations/index.text.ruby +13 -0
  44. data/app/views/manifestations/{show.txt.ruby → show.text.ruby} +0 -0
  45. data/app/views/resource_import_results/{index.txt.ruby → index.text.ruby} +0 -0
  46. data/lib/enju_biblio/version.rb +1 -1
  47. data/lib/enju_biblio.rb +0 -2
  48. data/spec/controllers/items_controller_spec.rb +41 -0
  49. data/spec/controllers/manifestations_controller_spec.rb +2 -21
  50. data/spec/fixtures/items.yml +1 -0
  51. data/spec/fixtures/manifestations.yml +1 -0
  52. data/spec/models/manifestation_spec.rb +11 -66
  53. data/spec/models/resource_import_file_spec.rb +18 -0
  54. data/spec/system/items_spec.rb +6 -0
  55. data/spec/views/agent_import_results/{index.txt.ruby_spec.rb → index.text.ruby_spec.rb} +1 -1
  56. data/spec/views/items/index.json.jbuilder_spec.rb +15 -0
  57. data/spec/views/items/show.json.jbuilder_spec.rb +15 -0
  58. data/spec/views/manifestations/index.html.erb_spec.rb +1 -1
  59. data/spec/views/manifestations/index.rdf.builder_spec.rb +0 -1
  60. data/spec/views/manifestations/{index.txt.ruby_spec.rb → index.text.ruby_spec.rb} +1 -1
  61. data/spec/views/manifestations/{show.txt.ruby_spec.rb → show.text.ruby_spec.rb} +1 -1
  62. data/spec/views/resource_import_results/{index.txt.ruby_spec.rb → index.text.ruby_spec.rb} +1 -1
  63. metadata +37 -34
  64. data/app/views/items/index.txt.erb +0 -4
  65. data/app/views/manifestations/explain.sru +0 -9
  66. data/app/views/manifestations/index.sru.builder +0 -101
  67. data/app/views/manifestations/index.txt.ruby +0 -7
  68. data/lib/enju_biblio/porta_cql.rb +0 -282
  69. data/lib/enju_biblio/sru.rb +0 -85
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ddb2060da09b931f698c95fe7183cea10953bb55d708d79cf118311af367c2b
4
- data.tar.gz: de17c215f560054db264c931878c2a1ff2fd3ed0811911fb2feab4384afd03a0
3
+ metadata.gz: '088d27a989a71a9301fd1946a90d8c790720b2ecffa02bc2eef9d3a9c05a31bb'
4
+ data.tar.gz: b946f1cd533e99b47cb6a799a3d0f167b597d6291ee864372354037dfc3ad050
5
5
  SHA512:
6
- metadata.gz: c577988123593c8b17f9cbe904492a4f148fb51d98f8294e863e639375303c9901a4fe8a67e3c471d1e406ab98399d86d6bd1b4bd6723ed547e2118f43c165a2
7
- data.tar.gz: 6e65d6634be373354842dee7cf6fb8c6dd2e3b9683185b8ffbc5246e45061fe20e7f4c6566d24118a823598c439939ec7036bda2c9fc48e6eb82da6f3e187498
6
+ metadata.gz: 5815c72d545147d3048239c9c52749a1239ff73e06aa2fbc8e37014d8272b8d87b9dcd7c260b321512fd7bbc47d1383548abddff5bbfb5431c7f78aa7335cad4
7
+ data.tar.gz: b4da9e3a16f2a498cd8b70478422fb37dd511a69cb3bb94252d53c3c7df9e2876006c45a843915d594424350eac2f0f41ae567107d04aa60f812f59656d658d2
@@ -15,7 +15,7 @@ class AgentImportResultsController < ApplicationController
15
15
  respond_to do |format|
16
16
  format.html # index.html.erb
17
17
  format.json { render json: @agent_import_results }
18
- format.txt
18
+ format.text
19
19
  end
20
20
  end
21
21
 
@@ -227,10 +227,4 @@ class AgentsController < ApplicationController
227
227
  @languages = Language.all
228
228
  @agent_type = AgentType.where(name: 'person').first
229
229
  end
230
-
231
- def filtered_params
232
- params.permit([:view, :format, :page, :language, :sort_by, :per_page])
233
- end
234
-
235
- helper_method :filtered_params
236
230
  end
@@ -18,7 +18,7 @@ class ItemsController < ApplicationController
18
18
  @count = {}
19
19
  if user_signed_in?
20
20
  if current_user.has_role?('Librarian')
21
- if params[:format] == 'txt'
21
+ if params[:format] == 'text'
22
22
  per_page = 65534
23
23
  elsif params[:mode] == 'barcode'
24
24
  per_page = 40
@@ -51,6 +51,17 @@ class ItemsController < ApplicationController
51
51
 
52
52
  unless @inventory_file
53
53
  search = Sunspot.new_search(Item)
54
+ selected_attributes = [
55
+ :id, :item_identifier, :call_number, :manifestation_id, :acquired_at,
56
+ :binding_item_identifier, :binding_call_number, :binded_at,
57
+ :include_supplements, :url, :note,
58
+ :circulation_status_id, :shelf_id,
59
+ :created_at, :updated_at
60
+ ]
61
+ selected_attributes += [
62
+ :memo, :required_role_id, :budget_type_id, :bookstore_id, :price
63
+ ] if current_user.try(:has_role?, 'Librarian')
64
+ search.data_accessor_for(Item).select = selected_attributes
54
65
  set_role_query(current_user, search)
55
66
 
56
67
  @query = query.dup
@@ -122,8 +133,8 @@ class ItemsController < ApplicationController
122
133
 
123
134
  respond_to do |format|
124
135
  format.html # index.html.erb
125
- format.json { render json: @items }
126
- format.txt { render layout: false }
136
+ format.json
137
+ format.text
127
138
  format.atom
128
139
  end
129
140
  end
@@ -137,7 +148,7 @@ class ItemsController < ApplicationController
137
148
 
138
149
  respond_to do |format|
139
150
  format.html # show.html.erb
140
- format.json { render json: @item }
151
+ format.json
141
152
  end
142
153
  end
143
154
 
@@ -301,10 +312,4 @@ class ItemsController < ApplicationController
301
312
  end
302
313
  end
303
314
  end
304
-
305
- def filtered_params
306
- params.permit([:view, :format, :page, :library, :carrier_type, :reservable, :pub_date_from, :pub_date_until, :language, :sort_by, :per_page])
307
- end
308
-
309
- helper_method :filtered_params
310
315
  end
@@ -29,29 +29,18 @@ class ManifestationsController < ApplicationController
29
29
  sort, @count = {}, {}
30
30
  query = ""
31
31
 
32
- if params[:format] == 'txt'
32
+ if request.format.text?
33
33
  per_page = 65534
34
34
  end
35
35
 
36
- if params[:format] == 'sru'
37
- if params[:operation] == 'searchRetrieve'
38
- sru = Sru.new(params)
39
- query = sru.cql.to_sunspot
40
- sort = sru.sort_by
41
- else
42
- render template: 'manifestations/explain', layout: false
43
- return
44
- end
36
+ if params[:api] == 'openurl'
37
+ openurl = Openurl.new(params)
38
+ @manifestations = openurl.search
39
+ query = openurl.query_text
40
+ sort = set_search_result_order(params[:sort_by], params[:order])
45
41
  else
46
- if params[:api] == 'openurl'
47
- openurl = Openurl.new(params)
48
- @manifestations = openurl.search
49
- query = openurl.query_text
50
- sort = set_search_result_order(params[:sort_by], params[:order])
51
- else
52
- query = make_query(params[:query], params)
53
- sort = set_search_result_order(params[:sort_by], params[:order])
54
- end
42
+ query = make_query(params[:query], params)
43
+ sort = set_search_result_order(params[:sort_by], params[:order])
55
44
  end
56
45
 
57
46
  # 絞り込みを行わない状態のクエリ
@@ -191,37 +180,37 @@ class ManifestationsController < ApplicationController
191
180
  else
192
181
  per_page = Manifestation.default_per_page
193
182
  end
194
- if params[:format] == 'sru'
195
- #search.query.start_record(params[:startRecord] || 1, params[:maximumRecords] || 200)
183
+
184
+ pub_dates = parse_pub_date(params)
185
+ pub_date_range = {}
186
+
187
+ if pub_dates[:from] == '*'
188
+ pub_date_range[:from] = 0
196
189
  else
197
- pub_dates = parse_pub_date(params)
198
- pub_date_range = {}
199
- if pub_dates[:from] == '*'
200
- pub_date_range[:from] = 0
201
- else
202
- pub_date_range[:from] = Time.zone.parse(pub_dates[:from]).year
203
- end
204
- if pub_dates[:until] == '*'
205
- pub_date_range[:until] = 10000
206
- else
207
- pub_date_range[:until] = Time.zone.parse(pub_dates[:until]).year
208
- end
209
- if params[:pub_year_range_interval]
210
- pub_year_range_interval = params[:pub_year_range_interval].to_i
211
- else
212
- pub_year_range_interval = @library_group.pub_year_facet_range_interval || 10
213
- end
190
+ pub_date_range[:from] = Time.zone.parse(pub_dates[:from]).year
191
+ end
192
+ if pub_dates[:until] == '*'
193
+ pub_date_range[:until] = 10000
194
+ else
195
+ pub_date_range[:until] = Time.zone.parse(pub_dates[:until]).year
196
+ end
214
197
 
215
- search.build do
216
- facet :reservable if defined?(EnjuCirculation)
217
- facet :carrier_type
218
- facet :library
219
- facet :language
220
- facet :pub_year, range: pub_date_range[:from]..pub_date_range[:until], range_interval: pub_year_range_interval
221
- facet :subject_ids if defined?(EnjuSubject)
222
- paginate page: page.to_i, per_page: per_page
223
- end
198
+ if params[:pub_year_range_interval]
199
+ pub_year_range_interval = params[:pub_year_range_interval].to_i
200
+ else
201
+ pub_year_range_interval = @library_group.pub_year_facet_range_interval || 10
202
+ end
203
+
204
+ search.build do
205
+ facet :reservable if defined?(EnjuCirculation)
206
+ facet :carrier_type
207
+ facet :library
208
+ facet :language
209
+ facet :pub_year, range: pub_date_range[:from]..pub_date_range[:until], range_interval: pub_year_range_interval
210
+ facet :subject_ids if defined?(EnjuSubject)
211
+ paginate page: page.to_i, per_page: per_page
224
212
  end
213
+
225
214
  search_result = search.execute
226
215
  if @count[:query_result] > @max_number_of_results
227
216
  max_count = @max_number_of_results
@@ -261,9 +250,8 @@ class ManifestationsController < ApplicationController
261
250
  format.html
262
251
  format.html.phone
263
252
  format.xml { render xml: @manifestations }
264
- format.sru { render layout: false }
265
253
  format.rss { render layout: false }
266
- format.txt { render layout: false }
254
+ format.text { render layout: false }
267
255
  format.rdf { render layout: false }
268
256
  format.atom
269
257
  format.mods
@@ -333,8 +321,8 @@ class ManifestationsController < ApplicationController
333
321
  format.rdf
334
322
  format.mods
335
323
  format.json
336
- format.txt
337
- format.js
324
+ format.text
325
+ format.js { render template: 'manifestations/show.js' }
338
326
  format.download {
339
327
  if @manifestation.attachment.path
340
328
  if ENV['ENJU_STORAGE'] == 's3'
@@ -394,11 +382,8 @@ class ManifestationsController < ApplicationController
394
382
  # POST /manifestations
395
383
  # POST /manifestations.json
396
384
  def create
397
- creators_params = manifestation_params[:creators_attributes]
398
- @manifestation = Manifestation.new(manifestation_params.delete_if{|k, v|
399
- k == 'creators_attributes'
400
- })
401
- parent = Manifestation.where(id: @manifestation.parent_id).first
385
+ @manifestation = Manifestation.new(manifestation_params)
386
+ parent = Manifestation.find_by(id: @manifestation.parent_id)
402
387
  unless @manifestation.original_title?
403
388
  @manifestation.original_title = @manifestation.attachment_file_name
404
389
  end
@@ -406,14 +391,16 @@ class ManifestationsController < ApplicationController
406
391
  respond_to do |format|
407
392
  if @manifestation.save
408
393
  Manifestation.transaction do
409
- @manifestation.creators = Agent.new_agents(creators_params)
410
- parent.derived_manifestations << @manifestation if parent
411
- end
412
- if parent
413
- parent.index
414
- @manifestation.index
394
+ set_creators
395
+
396
+ if parent
397
+ parent.derived_manifestations << @manifestation
398
+ parent.index
399
+ @manifestation.index
400
+ end
401
+
402
+ Sunspot.commit
415
403
  end
416
- Sunspot.commit
417
404
 
418
405
  format.html { redirect_to @manifestation, notice: t('controller.successfully_created', model: t('activerecord.models.manifestation')) }
419
406
  format.json { render json: @manifestation, status: :created, location: @manifestation }
@@ -428,17 +415,11 @@ class ManifestationsController < ApplicationController
428
415
  # PUT /manifestations/1
429
416
  # PUT /manifestations/1.json
430
417
  def update
431
- creators_params = manifestation_params[:creators_attributes]
432
- @manifestation.assign_attributes(manifestation_params.delete_if{|k, v|
433
- k == 'creators_attributes'
434
- })
418
+ @manifestation.assign_attributes(manifestation_params)
435
419
 
436
420
  respond_to do |format|
437
- if @manifestation.valid?
438
- Manifestation.transaction do
439
- @manifestation.creators = Agent.new_agents(creators_params)
440
- @manifestation.save!
441
- end
421
+ if @manifestation.save
422
+ set_creators
442
423
 
443
424
  format.html { redirect_to @manifestation, notice: t('controller.successfully_updated', model: t('activerecord.models.manifestation')) }
444
425
  format.json { head :no_content }
@@ -856,9 +837,20 @@ class ManifestationsController < ApplicationController
856
837
  query
857
838
  end
858
839
 
859
- def filtered_params
860
- params.permit([:view, :format, :library, :carrier_type, :reservable, :pub_date_from, :pub_date_until, :language, :sort_by, :per_page, :query])
861
- end
840
+ def set_creators
841
+ creators_params = manifestation_params[:creators_attributes]
842
+ contributors_params = manifestation_params[:contributors_attributes]
843
+ publishers_params = manifestation_params[:publishers_attributes]
844
+
845
+ Manifestation.transaction do
846
+ @manifestation.creates.destroy_all
847
+ @manifestation.realizes.destroy_all
848
+ @manifestation.produces.destroy_all
849
+ @manifestation.reload
862
850
 
863
- helper_method :filtered_params
851
+ @manifestation.creators = Agent.new_agents(creators_params)
852
+ @manifestation.contributors = Agent.new_agents(contributors_params)
853
+ @manifestation.publishers = Agent.new_agents(publishers_params)
854
+ end
855
+ end
864
856
  end
@@ -7,7 +7,7 @@ class ResourceImportResultsController < ApplicationController
7
7
  def index
8
8
  @resource_import_file = ResourceImportFile.find_by(id: params[:resource_import_file_id])
9
9
  if @resource_import_file
10
- if params[:format].to_s.downcase == 'txt'
10
+ if params[:format].to_s.downcase == 'text'
11
11
  @resource_import_results = @resource_import_file.resource_import_results
12
12
  else
13
13
  @resource_import_results = @resource_import_file.resource_import_results.page(params[:page])
@@ -19,7 +19,7 @@ class ResourceImportResultsController < ApplicationController
19
19
  respond_to do |format|
20
20
  format.html # index.html.erb
21
21
  format.json { render json: @resource_import_results }
22
- format.txt
22
+ format.text
23
23
  end
24
24
  end
25
25
 
@@ -133,10 +133,4 @@ class SeriesStatementsController < ApplicationController
133
133
  :series_master
134
134
  )
135
135
  end
136
-
137
- def filtered_params
138
- params.permit([:locale, :format, :page, :per_page])
139
- end
140
-
141
- helper_method :filtered_params
142
136
  end
@@ -71,10 +71,10 @@ module ManifestationsHelper
71
71
  current = true if languages.include?(language.name)
72
72
  if current
73
73
  content_tag :strong do
74
- link_to("#{language.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(page: nil, language: language.name, view: nil, only_path: true)))
74
+ link_to("#{language.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(page: nil, language: language.name, view: nil, only_path: true)))
75
75
  end
76
76
  else
77
- link_to("#{language.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(page: nil, language: language.name, view: nil, only_path: true)))
77
+ link_to("#{language.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(page: nil, language: language.name, view: nil, only_path: true)))
78
78
  end
79
79
  end
80
80
 
@@ -86,10 +86,10 @@ module ManifestationsHelper
86
86
  content_tag :li do
87
87
  if current
88
88
  content_tag :strong do
89
- link_to("#{library.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(page: nil, library: (current_libraries << library.name).uniq.join(' '), view: nil, only_path: true)))
89
+ link_to("#{library.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(page: nil, library: (current_libraries << library.name).uniq.join(' '), view: nil, only_path: true)))
90
90
  end
91
91
  else
92
- link_to("#{library.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(page: nil, library: (current_libraries << library.name).uniq.join(' '), view: nil, only_path: true)))
92
+ link_to("#{library.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(page: nil, library: (current_libraries << library.name).uniq.join(' '), view: nil, only_path: true)))
93
93
  end
94
94
  end
95
95
  end
@@ -102,10 +102,10 @@ module ManifestationsHelper
102
102
  current = true if params[:carrier_type] == carrier_type.name
103
103
  if current
104
104
  content_tag :strong do
105
- link_to("#{carrier_type.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(carrier_type: carrier_type.name, page: nil, view: nil, only_path: true)))
105
+ link_to("#{carrier_type.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(carrier_type: carrier_type.name, page: nil, view: nil, only_path: true)))
106
106
  end
107
107
  else
108
- link_to("#{carrier_type.display_name.localize} (" + facet.count.to_s + ")", url_for(filtered_params.merge(carrier_type: carrier_type.name, page: nil, view: nil, only_path: true)))
108
+ link_to("#{carrier_type.display_name.localize} (" + facet.count.to_s + ")", url_for(request.params.merge(carrier_type: carrier_type.name, page: nil, view: nil, only_path: true)))
109
109
  end
110
110
  end
111
111
  end
@@ -115,10 +115,10 @@ module ManifestationsHelper
115
115
  current = true if facet.value.first.to_i == pub_date_from.to_i and facet.value.last.to_i - 1 == pub_date_until.to_i
116
116
  if current
117
117
  content_tag :strong do
118
- link_to("#{facet.value.first.to_i} - #{facet.value.last.to_i - 1} (" + facet.count.to_s + ")", url_for(filtered_params.merge(pub_date_from: facet.value.first.to_i, pub_date_until: facet.value.last.to_i - 1, page: nil, view: nil, only_path: true)))
118
+ link_to("#{facet.value.first.to_i} - #{facet.value.last.to_i - 1} (" + facet.count.to_s + ")", url_for(request.params.merge(pub_date_from: facet.value.first.to_i, pub_date_until: facet.value.last.to_i - 1, page: nil, view: nil, only_path: true)))
119
119
  end
120
120
  else
121
- link_to("#{facet.value.first.to_i} - #{facet.value.last.to_i - 1} (" + facet.count.to_s + ")", url_for(filtered_params.merge(pub_date_from: facet.value.first.to_i, pub_date_until: facet.value.last.to_i - 1, page: nil, view: nil, only_path: true)))
121
+ link_to("#{facet.value.first.to_i} - #{facet.value.last.to_i - 1} (" + facet.count.to_s + ")", url_for(request.params.merge(pub_date_from: facet.value.first.to_i, pub_date_until: facet.value.last.to_i - 1, page: nil, view: nil, only_path: true)))
122
122
  end
123
123
  end
124
124
 
data/app/models/agent.rb CHANGED
@@ -256,17 +256,26 @@ class Agent < ApplicationRecord
256
256
  Agent.transaction do
257
257
  agents_params.each do |k, v|
258
258
  next if v['_destroy'] == '1'
259
+
260
+ agent = nil
261
+
259
262
  if v['agent_id'].present?
260
263
  agent = Agent.find(v['agent_id'])
261
264
  elsif v['id'].present?
262
265
  agent = Agent.find(v['id'])
263
- else
266
+ end
267
+
268
+ if !agent or agent.full_name != v['full_name']
269
+ v.delete('id')
270
+ v.delete('agent_id')
264
271
  v.delete('_destroy')
265
272
  agent = Agent.create(v)
266
273
  end
274
+
267
275
  agents << agent
268
276
  end
269
277
  end
278
+
270
279
  agents
271
280
  end
272
281
  end
@@ -1,6 +1,6 @@
1
1
  class FormOfWork < ApplicationRecord
2
2
  include MasterModel
3
- has_many :works, class_name: 'Manifestation'
3
+ has_many :works, class_name: 'Manifestation' #, dependent: :restrict_with_exception
4
4
  end
5
5
 
6
6
  # == Schema Information
@@ -1,6 +1,6 @@
1
1
  class Frequency < ApplicationRecord
2
2
  include MasterModel
3
- has_many :manifestations
3
+ has_many :manifestations, dependent: :restrict_with_exception
4
4
  end
5
5
 
6
6
  # == Schema Information
@@ -8,7 +8,7 @@ class Identifier < ApplicationRecord
8
8
  before_validation :normalize
9
9
  before_save :convert_isbn
10
10
  scope :id_type, -> type {
11
- where(identifier_type: IdentifierType.where(name: type).first)
11
+ where(identifier_type: IdentifierType.find_by(name: type))
12
12
  }
13
13
 
14
14
  acts_as_list scope: :manifestation_id
@@ -27,9 +27,8 @@ class ImportRequest < ApplicationRecord
27
27
 
28
28
  def check_imported
29
29
  if isbn.present?
30
- identifier_type = IdentifierType.where(name: 'isbn').first
31
- identifier_type = IdentifierType.where(name: 'isbn').create! unless identifier_type
32
- if Identifier.where(body: isbn, identifier_type_id: identifier_type.id).first.try(:manifestation)
30
+ identifier_type = IdentifierType.find_by_or_create!(name: 'isbn')
31
+ if Identifier.find_by(body: isbn, identifier_type_id: identifier_type.id)&.manifestation
33
32
  errors.add(:isbn, I18n.t('import_request.isbn_taken'))
34
33
  end
35
34
  end
data/app/models/item.rb CHANGED
@@ -66,23 +66,23 @@ class Item < ApplicationRecord
66
66
  paginates_per 10
67
67
 
68
68
  def title
69
- manifestation.try(:original_title)
69
+ manifestation&.original_title
70
70
  end
71
71
 
72
72
  def creator
73
- manifestation.try(:creator)
73
+ manifestation&.creator
74
74
  end
75
75
 
76
76
  def contributor
77
- manifestation.try(:contributor)
77
+ manifestation&.contributor
78
78
  end
79
79
 
80
80
  def publisher
81
- manifestation.try(:publisher)
81
+ manifestation&.publisher
82
82
  end
83
83
 
84
84
  def owned(agent)
85
- owns.where(agent_id: agent.id).first
85
+ owns.find_by(agent_id: agent.id)
86
86
  end
87
87
 
88
88
  def manifestation_url
@@ -123,7 +123,7 @@ class Item < ApplicationRecord
123
123
  budget_type: budget_type&.name,
124
124
  item_required_role: required_role.name,
125
125
  item_price: price,
126
- memo: memo
126
+ item_memo: memo
127
127
  })
128
128
 
129
129
  ItemCustomProperty.order(:position).each do |custom_property|
@@ -1,6 +1,6 @@
1
1
  class ItemCustomValue < ApplicationRecord
2
2
  belongs_to :item_custom_property
3
- belongs_to :item, required: false
3
+ belongs_to :item, optional: true
4
4
  validates :item_custom_property, uniqueness: {scope: :item_id}
5
5
  end
6
6
 
@@ -5,12 +5,12 @@ class Manifestation < ApplicationRecord
5
5
  enju_nii_cinii_books if defined?(EnjuNii)
6
6
  enju_bookmark_manifestation_model if defined?(EnjuBookmark)
7
7
 
8
- has_many :creates, dependent: :destroy, foreign_key: 'work_id'
9
- has_many :creators, through: :creates, source: :agent #, order: 'creates.position'
10
- has_many :realizes, dependent: :destroy, foreign_key: 'expression_id'
11
- has_many :contributors, through: :realizes, source: :agent #, order: 'realizes.position'
12
- has_many :produces, dependent: :destroy, foreign_key: 'manifestation_id'
13
- has_many :publishers, through: :produces, source: :agent #, order: 'produces.position'
8
+ has_many :creates, -> { order('creates.position') }, dependent: :destroy, foreign_key: 'work_id'
9
+ has_many :creators, through: :creates, source: :agent
10
+ has_many :realizes, -> { order('realizes.position') }, dependent: :destroy, foreign_key: 'expression_id'
11
+ has_many :contributors, through: :realizes, source: :agent
12
+ has_many :produces, -> { order('produces.position') }, dependent: :destroy, foreign_key: 'manifestation_id'
13
+ has_many :publishers, through: :produces, source: :agent
14
14
  has_many :items, dependent: :destroy
15
15
  has_many :children, foreign_key: 'parent_id', class_name: 'ManifestationRelationship', dependent: :destroy
16
16
  has_many :parents, foreign_key: 'child_id', class_name: 'ManifestationRelationship', dependent: :destroy
@@ -37,7 +37,7 @@ class Manifestation < ApplicationRecord
37
37
  text :title, default_boost: 2 do
38
38
  titles
39
39
  end
40
- [ :fulltext, :note, :creator, :contributor, :publisher, :description, :statement_of_responsibility ].each do |field|
40
+ [ :fulltext, :note, :creator, :contributor, :publisher, :abstract, :description, :statement_of_responsibility ].each do |field|
41
41
  text field do
42
42
  if series_master?
43
43
  derived_manifestations.map{|c| c.send(field) }.flatten.compact
@@ -518,16 +518,7 @@ class Manifestation < ApplicationRecord
518
518
  end
519
519
 
520
520
  def identifier_contents(name)
521
- if Rails::VERSION::MAJOR > 3
522
- identifiers.id_type(name).order(:position).pluck(:body)
523
- else
524
- identifier_type = IdentifierType.find_by(name: name)
525
- if identifier_type
526
- identifiers.where(identifier_type_id: identifier_type.id).order(:position).pluck(:body)
527
- else
528
- []
529
- end
530
- end
521
+ identifiers.id_type(name).order(:position).pluck(:body)
531
522
  end
532
523
 
533
524
  # CSVのヘッダ
@@ -596,6 +587,7 @@ class Manifestation < ApplicationRecord
596
587
  price: price,
597
588
  access_address: access_address,
598
589
  manifestation_required_role: required_role.name,
590
+ abstract: abstract,
599
591
  description: description,
600
592
  note: note
601
593
  }
@@ -624,7 +616,7 @@ class Manifestation < ApplicationRecord
624
616
 
625
617
  if ['Administrator', 'Librarian'].include?(role)
626
618
  record.merge!({
627
- memo: memo
619
+ manifestation_memo: memo
628
620
  })
629
621
  ManifestationCustomProperty.order(:position).each do |custom_property|
630
622
  custom_value = manifestation_custom_values.find_by(manifestation_custom_property: custom_property)
@@ -1,6 +1,6 @@
1
1
  class ManifestationCustomValue < ApplicationRecord
2
2
  belongs_to :manifestation_custom_property
3
- belongs_to :manifestation, required: false
3
+ belongs_to :manifestation, optional: true
4
4
  validates :manifestation_custom_property, uniqueness: {scope: :manifestation_id}
5
5
  end
6
6
 
@@ -458,12 +458,12 @@ class ResourceImportFile < ApplicationRecord
458
458
  edition edition_string serial_number isbn issn manifestation_price
459
459
  width height depth number_of_pages jpno lccn budget_type bookstore
460
460
  language fulltext_content required_role doi content_type frequency
461
- extent start_page end_page dimensions
461
+ extent start_page end_page dimensions abstract manifestation_memo
462
462
  ncid
463
463
  ndl_bib_id
464
464
  statement_of_responsibility acquired_at call_number circulation_status
465
465
  binding_item_identifier binding_call_number binded_at item_price
466
- use_restriction include_supplements item_note item_url
466
+ use_restriction include_supplements item_note item_url item_memo
467
467
  dummy
468
468
  )
469
469
  header_columns += ManifestationCustomProperty.order(:position).pluck(:name).map{|c| "manifestation:#{c}"}
@@ -541,7 +541,8 @@ class ResourceImportFile < ApplicationRecord
541
541
  binding_call_number: row['binding_call_number'],
542
542
  binded_at: binded_at,
543
543
  url: row['item_url'],
544
- note: row['item_note'].try(:gsub, /\\n/, "\n")
544
+ note: row['item_note'].try(:gsub, /\\n/, "\n"),
545
+ memo: row['item_memo'].try(:gsub, /\\n/, "\n")
545
546
  )
546
547
  manifestation.items << item
547
548
  if defined?(EnjuCirculation)
@@ -600,6 +601,7 @@ class ResourceImportFile < ApplicationRecord
600
601
 
601
602
  item.price = row['item_price'] if row['item_price'].present?
602
603
  item.note = row['item_note'].try(:gsub, /\\n/, "\n") if row['item_note'].present?
604
+ item.memo = row['item_memo'].try(:gsub, /\\n/, "\n") if row['item_memo'].present?
603
605
  item.url = row['item_url'] if row['item_url'].present?
604
606
 
605
607
  if row['include_supplements']
@@ -716,9 +718,11 @@ class ResourceImportFile < ApplicationRecord
716
718
  depth: row['depth'],
717
719
  height: row['height'],
718
720
  price: row['manifestation_price'],
721
+ abstract: row['abstract'].try(:gsub, /\\n/, "\n"),
719
722
  description: row['description'].try(:gsub, /\\n/, "\n"),
720
723
  #:description_transcription => row['description_transcription'],
721
724
  note: row['note'].try(:gsub, /\\n/, "\n"),
725
+ memo: row['manifestation_memo'].try(:gsub, /\\n/, "\n"),
722
726
  statement_of_responsibility: row['statement_of_responsibility'],
723
727
  access_address: row['access_address'],
724
728
  manifestation_identifier: row['manifestation_identifier'],
@@ -783,7 +787,7 @@ class ResourceImportFile < ApplicationRecord
783
787
  unless identifiers.empty?
784
788
  identifiers.each do |v|
785
789
  v.manifestation = manifestation
786
- v.save!
790
+ v.save
787
791
  end
788
792
  end
789
793
  else
@@ -18,7 +18,7 @@
18
18
  <%- @agent_relationship_types.each do |agent_relationship_type| -%>
19
19
  <tr class="line<%= cycle("0", "1") -%>">
20
20
  <td>
21
- <%- if policy(agent).update?_relationship_type -%>
21
+ <%- if policy(agent_relationship_type).update? -%>
22
22
  <%= move_position(agent_relationship_type) -%>
23
23
  <%- end -%>
24
24
  </td>
@@ -29,10 +29,10 @@
29
29
  <%= agent_relationship_type.note %>
30
30
  </td>
31
31
  <td>
32
- <%- if policy(agent).update?_relationship_type -%>
32
+ <%- if policy(agent_relationship_type).update? -%>
33
33
  <%= link_to t('page.edit'), edit_agent_relationship_type_path(agent_relationship_type) -%>
34
34
  <% end %>
35
- <%- if policy(agent).destroy?_relationship_type -%>
35
+ <%- if policy(agent_relationship_type).destroy? -%>
36
36
  <%= link_to t('page.destroy'), agent_relationship_type_path(agent_relationship_type), data: {confirm: t('page.are_you_sure')}, method: :delete -%>
37
37
  <%- end -%>
38
38
  </td>