evergreen_holdings 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/evergreen_holdings.rb +48 -4
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b7bd896c3e40856d8808c22b539d06f6f3661c6
4
- data.tar.gz: cfed2d99afdb1bf3f8ef7b241361691bf9fc1d8a
3
+ metadata.gz: 8dd3388514b1c9b46a0478dae03c6bbc8b96e496
4
+ data.tar.gz: 6e1296f90b066155369b8578e91f6505e7d43a1f
5
5
  SHA512:
6
- metadata.gz: fd03b1a8e03e2b3d0cbc95fe9ccbf139859cdb366989f34d68bc375bb71d74868e8e367974ca3cf56e6bc4486054ed7a3e433be0c93857f5051552bd7a4a5b61
7
- data.tar.gz: bf9397c714c0400c0050e9253d2d82204447e44c22466665243339d8e88d290efe14daeb75b20816206bcba9651ee5931618c7ca86b37124d488d17e6a02d678
6
+ metadata.gz: 7c5a4590219f7be4216794114f89405cb6badd6ec63710a469d33bd349b8d88d6eb22049c16c7883fb68a863ddb1125cbcfb0551ce1aca0a9dd80e20ca5bccf3
7
+ data.tar.gz: 1ea5680f515e5ad9e862d0813ec86c7dd81cf87fd2705d2fe01cd13e2343cc798d439d3da82b28336bccc7f20965c6244dc99da5e30fd4026b78804134ba513e
@@ -15,6 +15,7 @@ module EvergreenHoldings
15
15
  unless fetch_statuses
16
16
  raise CouldNotConnectToEvergreenError
17
17
  end
18
+ fetch_ou_tree
18
19
  end
19
20
 
20
21
  # Fetch holdings data from the Evergreen server
@@ -34,6 +35,7 @@ module EvergreenHoldings
34
35
  return Status.new res.body, self if res
35
36
  end
36
37
 
38
+ # Given an ID, returns a human-readable name
37
39
  def location_name id
38
40
  params = "format=json&input_format=json&service=open-ils.circ&method=open-ils.circ.copy_location.retrieve&param=#{id}"
39
41
  @gateway.query = params
@@ -51,8 +53,32 @@ module EvergreenHoldings
51
53
  return @possible_item_statuses[id]
52
54
  end
53
55
 
56
+ def ou_name id
57
+ return @org_units[id][:name]
58
+ end
59
+
54
60
  private
55
61
 
62
+ def add_ou_descendants id, parent
63
+ (@org_units[parent][:descendants] ||= []) << id
64
+ if @org_units[parent][:parent]
65
+ add_ou_descendants id, @org_units[parent][:parent]
66
+ end
67
+ end
68
+
69
+ def take_info_from_ou_tree o
70
+ @org_units[o[3]] = {}
71
+ @org_units[o[3]][:name] = o[6]
72
+ if o[8]
73
+ @org_units[o[3]][:parent] = o[8]
74
+ add_ou_descendants o[3], o[8]
75
+ end
76
+ o[0].each do |p|
77
+ take_info_from_ou_tree p['__p']
78
+ end
79
+ end
80
+
81
+
56
82
  def send_query
57
83
  begin
58
84
  res = Net::HTTP.get_response(@gateway)
@@ -78,6 +104,19 @@ module EvergreenHoldings
78
104
  return false
79
105
  end
80
106
 
107
+ def fetch_ou_tree
108
+ @org_units = {}
109
+ params = 'format=json&input_format=json&service=open-ils.actor&method=open-ils.actor.org_tree.retrieve'
110
+ @gateway.query = params
111
+ res = send_query
112
+ if res
113
+ raw_orgs = JSON.parse(res.body)['payload'][0]['__p']
114
+ take_info_from_ou_tree raw_orgs
115
+ return true if @org_units.size > 0
116
+ end
117
+ return false
118
+ end
119
+
81
120
  end
82
121
 
83
122
  # Status objects represent all the holdings attached to a specific tcn
@@ -109,12 +148,14 @@ module EvergreenHoldings
109
148
  if vol['__p'][0].size > 0
110
149
  vol['__p'][0].each do |item|
111
150
  unless item['__p'][35].nil?
112
- copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28]
151
+ copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
113
152
  else
114
153
  begin
115
- copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], due_date: item['__p'][35][0]['__p'][6], location: item['__p'][24], status: item['__p'][28]
154
+ copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], due_date: item['__p'][35][0]['__p'][6], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
116
155
  rescue
117
- copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28]
156
+ puts item['__p'][5]
157
+ puts @org_units
158
+ copies.push Item.new barcode: item['__p'][2], call_number: vol['__p'][7], location: item['__p'][24], status: item['__p'][28], owning_lib: item['__p'][5]
118
159
  end
119
160
  end
120
161
  end
@@ -131,6 +172,9 @@ module EvergreenHoldings
131
172
  if copy.status.is_a? Numeric
132
173
  copy.status = @connection.status_name copy.status
133
174
  end
175
+ if copy.owning_lib.is_a? Numeric
176
+ copy.owning_lib = @connection.ou_name copy.owning_lib
177
+ end
134
178
  end
135
179
  end
136
180
 
@@ -138,7 +182,7 @@ module EvergreenHoldings
138
182
 
139
183
  # A physical copy of an item
140
184
  class Item
141
- attr_accessor :location, :status
185
+ attr_accessor :location, :status, :owning_lib
142
186
  attr_reader :barcode, :call_number
143
187
  def initialize data = {}
144
188
  data.each do |k,v|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evergreen_holdings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jane Sandberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-02 00:00:00.000000000 Z
11
+ date: 2017-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  version: '0'
68
68
  requirements: []
69
69
  rubyforge_project:
70
- rubygems_version: 2.5.1
70
+ rubygems_version: 2.5.2
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: A ruby gem for getting information about copy availability from Evergreen