enju_circulation 0.0.27 → 0.0.28
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.
- data/app/controllers/reserves_controller.rb +10 -5
- data/app/models/reserve.rb +73 -45
- data/app/views/reserves/_new.html.erb +8 -4
- data/lib/enju_circulation/version.rb +1 -1
- data/spec/controllers/checked_items_controller_spec.rb +2 -1
- data/spec/dummy/app/models/item.rb +222 -83
- data/spec/dummy/db/migrate/005_create_manifestations.rb +3 -3
- data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +9 -0
- data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +13 -0
- data/spec/dummy/db/schema.rb +7 -3
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/fixtures/checkouts.yml +0 -1
- data/spec/fixtures/exemplifies.yml +8 -0
- data/spec/fixtures/items.yml +10 -4
- data/spec/fixtures/manifestations.yml +13 -6
- data/spec/fixtures/message_templates.yml +24 -19
- data/spec/fixtures/reserves.yml +19 -0
- data/spec/models/reserve_spec.rb +15 -6
- metadata +46 -42
@@ -104,15 +104,20 @@ class ReservesController < ApplicationController
|
|
104
104
|
begin
|
105
105
|
if params[:reserve][:user_number]
|
106
106
|
user = User.where(:user_number => params[:reserve][:user_number]).first
|
107
|
+
else
|
108
|
+
access_denied
|
109
|
+
return
|
107
110
|
end
|
108
111
|
rescue NoMethodError
|
109
112
|
end
|
110
113
|
|
111
114
|
# 図書館員以外は自分の予約しか作成できない
|
112
115
|
unless current_user.has_role?('Librarian')
|
113
|
-
if user
|
114
|
-
|
115
|
-
|
116
|
+
if user
|
117
|
+
if user != current_user
|
118
|
+
access_denied
|
119
|
+
return
|
120
|
+
end
|
116
121
|
end
|
117
122
|
end
|
118
123
|
|
@@ -124,7 +129,7 @@ class ReservesController < ApplicationController
|
|
124
129
|
|
125
130
|
respond_to do |format|
|
126
131
|
if @reserve.save
|
127
|
-
@reserve.
|
132
|
+
@reserve.sm_request!
|
128
133
|
|
129
134
|
#format.html { redirect_to reserve_url(@reserve) }
|
130
135
|
format.html { redirect_to @reserve, :notice => t('controller.successfully_created', :model => t('activerecord.models.reserve')) }
|
@@ -163,7 +168,7 @@ class ReservesController < ApplicationController
|
|
163
168
|
if @reserve.update_attributes(params[:reserve])
|
164
169
|
if @reserve.state == 'canceled'
|
165
170
|
flash[:notice] = t('reserve.reservation_was_canceled')
|
166
|
-
@reserve.send_message
|
171
|
+
@reserve.send_message
|
167
172
|
else
|
168
173
|
flash[:notice] = t('controller.successfully_updated', :model => t('activerecord.models.reserve'))
|
169
174
|
end
|
data/app/models/reserve.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
class Reserve < ActiveRecord::Base
|
3
3
|
scope :hold, where('item_id IS NOT NULL')
|
4
4
|
scope :not_hold, where(:item_id => nil)
|
5
|
-
scope :waiting, where('canceled_at IS NULL AND expired_at > ? AND state != ?', Time.zone.now, 'completed').order('id DESC')
|
5
|
+
scope :waiting, where('canceled_at IS NULL AND expired_at > ? AND state != ?', Time.zone.now, 'completed').order('reserves.id DESC')
|
6
6
|
scope :completed, where('checked_out_at IS NOT NULL')
|
7
7
|
scope :canceled, where('canceled_at IS NOT NULL')
|
8
8
|
scope :will_expire_retained, lambda {|datetime| {:conditions => ['checked_out_at IS NULL AND canceled_at IS NULL AND expired_at <= ? AND state = ?', datetime, 'retained'], :order => 'expired_at'}}
|
@@ -106,55 +106,52 @@ class Reserve < ActiveRecord::Base
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def next_reservation
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
def retain
|
113
|
-
# TODO: 「取り置き中」の状態を正しく表す
|
114
|
-
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'In Process').first, :checked_out_at => Time.zone.now})
|
115
|
-
end
|
116
|
-
|
117
|
-
def expire
|
118
|
-
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Expired').first, :canceled_at => Time.zone.now})
|
119
|
-
logger.info "#{Time.zone.now} reserve_id #{self.id} expired!"
|
120
|
-
end
|
121
|
-
|
122
|
-
def cancel
|
123
|
-
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Cannot Fulfill Request').first, :canceled_at => Time.zone.now})
|
124
|
-
end
|
125
|
-
|
126
|
-
def checkout
|
127
|
-
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Available For Pickup').first, :checked_out_at => Time.zone.now})
|
109
|
+
if item
|
110
|
+
Reserve.waiting.where(:manifestation_id => item.manifestation.id).first
|
111
|
+
end
|
128
112
|
end
|
129
113
|
|
130
|
-
def send_message(
|
131
|
-
|
114
|
+
def send_message(sender = nil)
|
115
|
+
sender = User.find(1) unless sender # TODO: システムからのメッセージの発信者
|
132
116
|
Reserve.transaction do
|
133
|
-
case
|
134
|
-
when '
|
135
|
-
message_template_to_patron = MessageTemplate.localized_template('
|
136
|
-
request = MessageRequest.create!(:sender =>
|
137
|
-
request.save_message_body(:manifestations => Array[
|
117
|
+
case state
|
118
|
+
when 'requested'
|
119
|
+
message_template_to_patron = MessageTemplate.localized_template('reservation_accepted_for_patron', user.locale)
|
120
|
+
request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => message_template_to_patron)
|
121
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => user)
|
138
122
|
request.sm_send_message! # 受付時は即時送信
|
139
|
-
message_template_to_library = MessageTemplate.localized_template('
|
140
|
-
request = MessageRequest.create!(:sender =>
|
141
|
-
request.save_message_body(:manifestations => Array[
|
123
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_accepted_for_library', user.locale)
|
124
|
+
request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library)
|
125
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => user)
|
142
126
|
request.sm_send_message! # 受付時は即時送信
|
143
127
|
when 'canceled'
|
144
|
-
message_template_to_patron = MessageTemplate.localized_template('reservation_canceled_for_patron',
|
145
|
-
request = MessageRequest.create!(:sender =>
|
146
|
-
request.save_message_body(:manifestations => Array[
|
128
|
+
message_template_to_patron = MessageTemplate.localized_template('reservation_canceled_for_patron', user.locale)
|
129
|
+
request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => message_template_to_patron)
|
130
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => user)
|
147
131
|
request.sm_send_message! # キャンセル時は即時送信
|
148
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library',
|
149
|
-
request = MessageRequest.create!(:sender =>
|
150
|
-
request.save_message_body(:manifestations => Array[
|
132
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', user.locale)
|
133
|
+
request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library)
|
134
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => user)
|
151
135
|
request.sm_send_message! # キャンセル時は即時送信
|
152
136
|
when 'expired'
|
153
|
-
message_template_to_patron = MessageTemplate.localized_template('reservation_expired_for_patron',
|
154
|
-
request = MessageRequest.create!(:sender =>
|
155
|
-
request.save_message_body(:manifestations => Array[
|
156
|
-
request.sm_send_message!
|
137
|
+
message_template_to_patron = MessageTemplate.localized_template('reservation_expired_for_patron', user.locale)
|
138
|
+
request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => message_template_to_patron)
|
139
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => user)
|
140
|
+
request.sm_send_message!
|
157
141
|
self.update_attribute(:expiration_notice_to_patron, true)
|
142
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale)
|
143
|
+
request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library)
|
144
|
+
request.save_message_body(:manifestations => Array[manifestation], :user => sender)
|
145
|
+
request.sm_send_message!
|
146
|
+
when 'retained'
|
147
|
+
message_template_for_patron = MessageTemplate.localized_template('item_received_for_patron', user.locale)
|
148
|
+
request = MessageRequest.create!(:sender => sender, :receiver => user, :message_template => message_template_for_patron)
|
149
|
+
request.save_message_body(:manifestations => Array[item.manifestation], :user => user)
|
150
|
+
request.sm_send_message!
|
151
|
+
message_template_for_library = MessageTemplate.localized_template('item_received_for_library', user.locale)
|
152
|
+
request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_for_library)
|
153
|
+
request.save_message_body(:manifestations => Array[item.manifestation], :user => user)
|
154
|
+
request.sm_send_message!
|
158
155
|
else
|
159
156
|
raise 'status not defined'
|
160
157
|
end
|
@@ -162,18 +159,18 @@ class Reserve < ActiveRecord::Base
|
|
162
159
|
end
|
163
160
|
|
164
161
|
def self.send_message_to_library(status, options = {})
|
165
|
-
|
162
|
+
sender = User.find(1) # TODO: システムからのメッセージの発信者
|
166
163
|
case status
|
167
164
|
when 'expired'
|
168
|
-
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library',
|
169
|
-
request = MessageRequest.create!(:sender =>
|
165
|
+
message_template_to_library = MessageTemplate.localized_template('reservation_expired_for_library', sender.locale)
|
166
|
+
request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library)
|
170
167
|
request.save_message_body(:manifestations => options[:manifestations])
|
171
168
|
self.not_sent_expiration_notice_to_library.each do |reserve|
|
172
169
|
reserve.update_attribute(:expiration_notice_to_library, true)
|
173
170
|
end
|
174
171
|
#when 'canceled'
|
175
|
-
# message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library',
|
176
|
-
# request = MessageRequest.create!(:sender =>
|
172
|
+
# message_template_to_library = MessageTemplate.localized_template('reservation_canceled_for_library', sender.locale)
|
173
|
+
# request = MessageRequest.create!(:sender => sender, :receiver => sender, :message_template => message_template_to_library)
|
177
174
|
# request.save_message_body(:manifestations => self.not_sent_expiration_notice_to_library.collect(&:manifestation))
|
178
175
|
# self.not_sent_cancel_notice_to_library.each do |reserve|
|
179
176
|
# reserve.update_attribute(:expiration_notice_to_library, true)
|
@@ -219,6 +216,37 @@ class Reserve < ActiveRecord::Base
|
|
219
216
|
end
|
220
217
|
end
|
221
218
|
end
|
219
|
+
|
220
|
+
private
|
221
|
+
def retain
|
222
|
+
# TODO: 「取り置き中」の状態を正しく表す
|
223
|
+
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'In Process').first, :checked_out_at => Time.zone.now})
|
224
|
+
end
|
225
|
+
|
226
|
+
def expire
|
227
|
+
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Expired').first, :canceled_at => Time.zone.now})
|
228
|
+
logger.info "#{Time.zone.now} reserve_id #{self.id} expired!"
|
229
|
+
reserve = next_reservation
|
230
|
+
if reserve
|
231
|
+
reserve.item = item
|
232
|
+
reserve.sm_retain!
|
233
|
+
reserve.send_message
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
def cancel
|
238
|
+
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Cannot Fulfill Request').first, :canceled_at => Time.zone.now})
|
239
|
+
reserve = next_reservation
|
240
|
+
if reserve
|
241
|
+
reserve.item = item
|
242
|
+
reserve.sm_retain!
|
243
|
+
reserve.send_message
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
def checkout
|
248
|
+
self.update_attributes!({:request_status_type => RequestStatusType.where(:name => 'Available For Pickup').first, :checked_out_at => Time.zone.now})
|
249
|
+
end
|
222
250
|
end
|
223
251
|
|
224
252
|
# == Schema Information
|
@@ -20,10 +20,14 @@
|
|
20
20
|
<%= f.text_field :expired_at, :value => @reserve.expired_at.try(:strftime, "%Y-%m-%d"), :class => 'date_field', :placeholder => "#{t('page.example')}: 2011-04-12"-%>
|
21
21
|
</div>
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
<% if current_user.has_role?('Librarian') %>
|
24
|
+
<div class="field">
|
25
|
+
<%= f.label t('activerecord.attributes.user.user_number') -%><br />
|
26
|
+
<%= f.text_field :user_number, :class => 'resource_user_number' -%>
|
27
|
+
</div>
|
28
|
+
<% else %>
|
29
|
+
<%= f.hidden_field :user_number, :class => 'resource_user_number' -%>
|
30
|
+
<% end %>
|
27
31
|
|
28
32
|
<div class="actions">
|
29
33
|
<%= f.submit t('page.create') -%>
|
@@ -239,9 +239,10 @@ describe CheckedItemsController do
|
|
239
239
|
|
240
240
|
describe "When the item is reserved" do
|
241
241
|
it "assigns a newly created checked_item as @checked_item" do
|
242
|
+
old_count = items(:item_00021).manifestation.reserves.waiting.count
|
242
243
|
post :create, :checked_item => {:item_identifier => '00021'} , :basket_id => 11
|
243
244
|
assigns(:checked_item).should be_valid
|
244
|
-
assigns(:checked_item).item.manifestation.reserves.waiting.should
|
245
|
+
assigns(:checked_item).item.manifestation.reserves.waiting.count.should eq old_count - 1
|
245
246
|
end
|
246
247
|
end
|
247
248
|
|
@@ -2,124 +2,263 @@
|
|
2
2
|
class Item < ActiveRecord::Base
|
3
3
|
scope :on_shelf, where('shelf_id != 1')
|
4
4
|
scope :on_web, where(:shelf_id => 1)
|
5
|
-
|
6
|
-
scope :for_checkout, where('item_identifier IS NOT NULL')
|
7
|
-
scope :not_for_checkout, where(:item_identifier => nil)
|
8
5
|
has_one :exemplify
|
9
6
|
has_one :manifestation, :through => :exemplify
|
10
|
-
has_many :
|
11
|
-
has_many :
|
12
|
-
has_many :reserved_patrons, :through => :reserves, :class_name => 'Patron'
|
13
|
-
has_many :checked_items, :dependent => :destroy
|
14
|
-
has_many :baskets, :through => :checked_items
|
15
|
-
belongs_to :circulation_status, :validate => true
|
16
|
-
belongs_to :checkout_type
|
17
|
-
has_many :lending_policies, :dependent => :destroy
|
18
|
-
has_one :item_has_use_restriction, :dependent => :destroy
|
19
|
-
has_one :use_restriction, :through => :item_has_use_restriction
|
7
|
+
#has_many :owns
|
8
|
+
#has_many :patrons, :through => :owns
|
20
9
|
belongs_to :shelf, :counter_cache => true, :validate => true
|
10
|
+
delegate :display_name, :to => :shelf, :prefix => true
|
11
|
+
belongs_to :bookstore, :validate => true
|
12
|
+
#has_many :donates
|
13
|
+
#has_many :donors, :through => :donates, :source => :patron
|
14
|
+
belongs_to :required_role, :class_name => 'Role', :foreign_key => 'required_role_id', :validate => true
|
15
|
+
#has_one :resource_import_result
|
16
|
+
belongs_to :budget_type
|
17
|
+
|
18
|
+
validates_associated :shelf, :bookstore
|
19
|
+
validates :manifestation_id, :presence => true, :on => :create
|
20
|
+
validates :item_identifier, :allow_blank => true, :uniqueness => true,
|
21
|
+
:format => {:with => /\A[0-9A-Za-z_]+\Z/}
|
22
|
+
validates :url, :url => true, :allow_blank => true, :length => {:maximum => 255}
|
23
|
+
validates_date :acquired_at, :allow_blank => true
|
24
|
+
|
25
|
+
normalize_attributes :item_identifier
|
21
26
|
|
22
|
-
validates_associated :circulation_status, :checkout_type
|
23
|
-
validates_presence_of :circulation_status, :checkout_type
|
24
|
-
before_save :set_use_restriction
|
25
27
|
searchable do
|
26
|
-
|
28
|
+
text :item_identifier, :note, :title #, :creator, :contributor, :publisher
|
29
|
+
string :item_identifier
|
30
|
+
string :library do
|
31
|
+
shelf.library.name if shelf
|
32
|
+
end
|
33
|
+
integer :required_role_id
|
34
|
+
integer :manifestation_id do
|
35
|
+
manifestation.id if manifestation
|
36
|
+
end
|
37
|
+
integer :shelf_id
|
38
|
+
#integer :patron_ids, :multiple => true
|
39
|
+
time :created_at
|
40
|
+
time :updated_at
|
27
41
|
end
|
28
|
-
|
42
|
+
|
29
43
|
attr_accessor :library_id, :manifestation_id
|
30
44
|
|
31
|
-
|
32
|
-
|
33
|
-
|
45
|
+
if defined?(EnjuCirculation)
|
46
|
+
scope :for_checkout, where('item_identifier IS NOT NULL')
|
47
|
+
scope :not_for_checkout, where(:item_identifier => nil)
|
48
|
+
has_many :checkouts
|
49
|
+
has_many :reserves
|
50
|
+
has_many :reserved_patrons, :through => :reserves, :class_name => 'Patron'
|
51
|
+
has_many :checked_items, :dependent => :destroy
|
52
|
+
has_many :baskets, :through => :checked_items
|
53
|
+
belongs_to :circulation_status, :validate => true
|
54
|
+
belongs_to :checkout_type
|
55
|
+
has_many :lending_policies, :dependent => :destroy
|
56
|
+
has_one :item_has_use_restriction, :dependent => :destroy
|
57
|
+
has_one :use_restriction, :through => :item_has_use_restriction
|
58
|
+
validates_associated :circulation_status, :checkout_type
|
59
|
+
validates_presence_of :circulation_status, :checkout_type
|
60
|
+
before_save :set_use_restriction
|
61
|
+
searchable do
|
62
|
+
integer :circulation_status_id
|
63
|
+
end
|
64
|
+
attr_accessor :use_restriction_id
|
34
65
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
self.
|
66
|
+
def set_circulation_status
|
67
|
+
self.circulation_status = CirculationStatus.where(:name => 'In Process').first if self.circulation_status.nil?
|
68
|
+
end
|
69
|
+
|
70
|
+
def set_use_restriction
|
71
|
+
if self.use_restriction_id
|
72
|
+
self.use_restriction = UseRestriction.where(:id => self.use_restriction_id).first
|
73
|
+
else
|
74
|
+
return if use_restriction
|
75
|
+
self.use_restriction = UseRestriction.where(:name => 'Limited Circulation, Normal Loan Period').first
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def checkout_status(user)
|
80
|
+
user.user_group.user_group_has_checkout_types.where(:checkout_type_id => self.checkout_type.id).first
|
81
|
+
end
|
82
|
+
|
83
|
+
def next_reservation
|
84
|
+
Reserve.waiting.where(:manifestation_id => self.manifestation.id).first
|
85
|
+
end
|
86
|
+
|
87
|
+
def reserved?
|
88
|
+
return true if self.next_reservation
|
89
|
+
false
|
90
|
+
end
|
91
|
+
|
92
|
+
def rent?
|
93
|
+
return true if self.checkouts.not_returned.select(:item_id).detect{|checkout| checkout.item_id == self.id}
|
94
|
+
false
|
95
|
+
end
|
96
|
+
|
97
|
+
def reserved_by_user?(user)
|
98
|
+
if self.next_reservation
|
99
|
+
return true if self.next_reservation.user == user
|
100
|
+
end
|
101
|
+
false
|
102
|
+
end
|
103
|
+
|
104
|
+
def available_for_checkout?
|
105
|
+
circulation_statuses = CirculationStatus.available_for_checkout.select(:id)
|
106
|
+
return true if circulation_statuses.include?(self.circulation_status)
|
107
|
+
false
|
108
|
+
end
|
109
|
+
|
110
|
+
def checkout!(user)
|
111
|
+
self.circulation_status = CirculationStatus.where(:name => 'On Loan').first
|
112
|
+
if self.reserved_by_user?(user)
|
113
|
+
self.next_reservation.update_attributes(:checked_out_at => Time.zone.now)
|
114
|
+
self.next_reservation.sm_complete!
|
115
|
+
end
|
116
|
+
save!
|
41
117
|
end
|
42
|
-
end
|
43
118
|
|
44
|
-
|
45
|
-
|
119
|
+
def checkin!
|
120
|
+
self.circulation_status = CirculationStatus.where(:name => 'Available On Shelf').first
|
121
|
+
save(:validate => false)
|
122
|
+
end
|
123
|
+
|
124
|
+
def retain(librarian)
|
125
|
+
Item.transaction do
|
126
|
+
reservation = self.manifestation.next_reservation
|
127
|
+
unless reservation.nil?
|
128
|
+
reservation.item = self
|
129
|
+
reservation.sm_retain!
|
130
|
+
reservation.send_message(librarian)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def lending_rule(user)
|
136
|
+
lending_policies.where(:user_group_id => user.user_group.id).first
|
137
|
+
end
|
138
|
+
|
139
|
+
def not_for_loan?
|
140
|
+
if use_restriction.try(:name) == 'Not For Loan'
|
141
|
+
true
|
142
|
+
else
|
143
|
+
false
|
144
|
+
end
|
145
|
+
end
|
46
146
|
end
|
47
147
|
|
48
|
-
|
49
|
-
|
148
|
+
if defined?(EnjuInventory)
|
149
|
+
has_many :inventories, :dependent => :destroy
|
150
|
+
has_many :inventory_files, :through => :inventories
|
151
|
+
searchable do
|
152
|
+
integer :inventory_file_ids, :multiple => true
|
153
|
+
end
|
154
|
+
|
155
|
+
def self.inventory_items(inventory_file, mode = 'not_on_shelf')
|
156
|
+
item_ids = Item.select(:id).collect(&:id)
|
157
|
+
inventory_item_ids = inventory_file.items.select('items.id').collect(&:id)
|
158
|
+
case mode
|
159
|
+
when 'not_on_shelf'
|
160
|
+
Item.where(:id => (item_ids - inventory_item_ids))
|
161
|
+
when 'not_in_catalog'
|
162
|
+
Item.where(:id => (inventory_item_ids - item_ids))
|
163
|
+
end
|
164
|
+
rescue
|
165
|
+
nil
|
166
|
+
end
|
50
167
|
end
|
51
168
|
|
52
|
-
|
53
|
-
|
54
|
-
|
169
|
+
if defined?(EnjuQuestion)
|
170
|
+
has_many :answer_has_items, :dependent => :destroy
|
171
|
+
has_many :answers, :through => :answer_has_items
|
55
172
|
end
|
56
173
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
true
|
62
|
-
else
|
63
|
-
false
|
174
|
+
if defined?(EnjuInterLibraryLoan)
|
175
|
+
has_many :inter_library_loans, :dependent => :destroy
|
176
|
+
def inter_library_loaned?
|
177
|
+
true if self.inter_library_loans.size > 0
|
64
178
|
end
|
65
179
|
end
|
66
180
|
|
67
|
-
def
|
68
|
-
|
69
|
-
false
|
181
|
+
def self.per_page
|
182
|
+
10
|
70
183
|
end
|
71
184
|
|
72
|
-
def
|
73
|
-
|
74
|
-
return true if self.next_reservation.user == user
|
75
|
-
end
|
76
|
-
false
|
185
|
+
def title
|
186
|
+
manifestation.try(:original_title)
|
77
187
|
end
|
78
188
|
|
79
|
-
def
|
80
|
-
|
81
|
-
|
82
|
-
|
189
|
+
#def creator
|
190
|
+
# manifestation.try(:creator)
|
191
|
+
#end
|
192
|
+
|
193
|
+
#def contributor
|
194
|
+
# manifestation.try(:contributor)
|
195
|
+
#end
|
196
|
+
|
197
|
+
#def publisher
|
198
|
+
# manifestation.try(:publisher)
|
199
|
+
#end
|
200
|
+
|
201
|
+
def shelf_name
|
202
|
+
shelf.name
|
83
203
|
end
|
84
204
|
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
self.next_reservation.update_attributes(:checked_out_at => Time.zone.now)
|
89
|
-
self.next_reservation.sm_complete!
|
90
|
-
end
|
91
|
-
save!
|
205
|
+
def hold?(library)
|
206
|
+
return true if self.shelf.library == library
|
207
|
+
false
|
92
208
|
end
|
93
209
|
|
94
|
-
def
|
95
|
-
|
96
|
-
save(:validate => false)
|
210
|
+
def owned(patron)
|
211
|
+
owns.where(:patron_id => patron.id).first
|
97
212
|
end
|
98
213
|
|
99
|
-
def
|
100
|
-
|
101
|
-
reservation = self.manifestation.next_reservation
|
102
|
-
unless reservation.nil?
|
103
|
-
reservation.item = self
|
104
|
-
reservation.sm_retain!
|
105
|
-
reservation.update_attributes({:request_status_type => RequestStatusType.where(:name => 'In Process').first})
|
106
|
-
request = MessageRequest.new(:sender_id => librarian.id, :receiver_id => reservation.user_id)
|
107
|
-
message_template = MessageTemplate.localized_template('item_received', reservation.user.locale)
|
108
|
-
request.message_template = message_template
|
109
|
-
request.save!
|
110
|
-
end
|
111
|
-
end
|
214
|
+
def library_url
|
215
|
+
"#{LibraryGroup.site_config.url}libraries/#{self.shelf.library.name}"
|
112
216
|
end
|
113
217
|
|
114
|
-
def
|
115
|
-
|
218
|
+
def manifestation_url
|
219
|
+
Addressable::URI.parse("#{LibraryGroup.site_config.url}manifestations/#{self.manifestation.id}").normalize.to_s if self.manifestation
|
116
220
|
end
|
117
221
|
|
118
|
-
def
|
119
|
-
if
|
120
|
-
|
222
|
+
def deletable?
|
223
|
+
if circulation_status.name == 'Removed'
|
224
|
+
return false
|
121
225
|
else
|
122
|
-
|
226
|
+
if defined?(EnjuCirculation)
|
227
|
+
checkouts.not_returned.empty?
|
228
|
+
else
|
229
|
+
true
|
230
|
+
end
|
123
231
|
end
|
124
232
|
end
|
125
233
|
end
|
234
|
+
|
235
|
+
|
236
|
+
# == Schema Information
|
237
|
+
#
|
238
|
+
# Table name: items
|
239
|
+
#
|
240
|
+
# id :integer not null, primary key
|
241
|
+
# call_number :string(255)
|
242
|
+
# item_identifier :string(255)
|
243
|
+
# circulation_status_id :integer default(5), not null
|
244
|
+
# checkout_type_id :integer default(1), not null
|
245
|
+
# created_at :datetime not null
|
246
|
+
# updated_at :datetime not null
|
247
|
+
# deleted_at :datetime
|
248
|
+
# shelf_id :integer default(1), not null
|
249
|
+
# include_supplements :boolean default(FALSE), not null
|
250
|
+
# checkouts_count :integer default(0), not null
|
251
|
+
# owns_count :integer default(0), not null
|
252
|
+
# note :text
|
253
|
+
# url :string(255)
|
254
|
+
# price :integer
|
255
|
+
# lock_version :integer default(0), not null
|
256
|
+
# required_role_id :integer default(1), not null
|
257
|
+
# state :string(255)
|
258
|
+
# required_score :integer default(0), not null
|
259
|
+
# acquired_at :datetime
|
260
|
+
# bookstore_id :integer
|
261
|
+
# missing_since :datetime
|
262
|
+
# budget_type_id :integer
|
263
|
+
#
|
264
|
+
|
@@ -16,9 +16,9 @@ class CreateManifestations < ActiveRecord::Migration
|
|
16
16
|
t.integer :extent_id, :default => 1, :null => false
|
17
17
|
t.integer :start_page
|
18
18
|
t.integer :end_page
|
19
|
-
t.
|
20
|
-
t.
|
21
|
-
t.
|
19
|
+
t.integer :height
|
20
|
+
t.integer :width
|
21
|
+
t.integer :depth
|
22
22
|
t.string :isbn
|
23
23
|
t.string :isbn10
|
24
24
|
t.string :wrong_isbn
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddVolumeNumberToManifestation < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :manifestations, :volume_number, :integer
|
4
|
+
add_column :manifestations, :issue_number, :integer
|
5
|
+
add_column :manifestations, :serial_number, :integer
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.down
|
9
|
+
remove_column :manifestations, :serial_number
|
10
|
+
remove_column :manifestations, :issue_number
|
11
|
+
remove_column :manifestations, :volume_number
|
12
|
+
end
|
13
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -217,6 +217,7 @@ ActiveRecord::Schema.define(:version => 20120224094141) do
|
|
217
217
|
t.integer "required_role_id", :default => 1, :null => false
|
218
218
|
t.string "state"
|
219
219
|
t.integer "required_score", :default => 0, :null => false
|
220
|
+
t.datetime "acquired_at"
|
220
221
|
end
|
221
222
|
|
222
223
|
add_index "items", ["checkout_type_id"], :name => "index_items_on_checkout_type_id"
|
@@ -349,9 +350,9 @@ ActiveRecord::Schema.define(:version => 20120224094141) do
|
|
349
350
|
t.integer "extent_id", :default => 1, :null => false
|
350
351
|
t.integer "start_page"
|
351
352
|
t.integer "end_page"
|
352
|
-
t.
|
353
|
-
t.
|
354
|
-
t.
|
353
|
+
t.integer "height"
|
354
|
+
t.integer "width"
|
355
|
+
t.integer "depth"
|
355
356
|
t.string "isbn"
|
356
357
|
t.string "isbn10"
|
357
358
|
t.string "wrong_isbn"
|
@@ -377,6 +378,9 @@ ActiveRecord::Schema.define(:version => 20120224094141) do
|
|
377
378
|
t.integer "required_score", :default => 0, :null => false
|
378
379
|
t.integer "frequency_id", :default => 1, :null => false
|
379
380
|
t.boolean "subscription_master", :default => false, :null => false
|
381
|
+
t.integer "volume_number"
|
382
|
+
t.integer "issue_number"
|
383
|
+
t.integer "serial_number"
|
380
384
|
end
|
381
385
|
|
382
386
|
add_index "manifestations", ["access_address"], :name => "index_manifestations_on_access_address"
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
data/spec/fixtures/checkouts.yml
CHANGED
@@ -5,6 +5,7 @@ exemplify_00001:
|
|
5
5
|
manifestation_id: 1
|
6
6
|
id: 1
|
7
7
|
created_at: 2008-01-11 23:28:19.277110 +09:00
|
8
|
+
position: 1
|
8
9
|
exemplify_00002:
|
9
10
|
updated_at: 2008-01-11 23:28:57.068191 +09:00
|
10
11
|
item_id: 2
|
@@ -23,6 +24,7 @@ exemplify_00004:
|
|
23
24
|
manifestation_id: 1
|
24
25
|
id: 4
|
25
26
|
created_at: 2008-01-11 02:34:20.183962 +09:00
|
27
|
+
position: 2
|
26
28
|
exemplify_00005:
|
27
29
|
updated_at: 2008-01-11 02:34:32.352223 +09:00
|
28
30
|
item_id: 5
|
@@ -125,6 +127,12 @@ exemplify_00021:
|
|
125
127
|
manifestation_id: 11
|
126
128
|
id: 21
|
127
129
|
created_at: 2008-01-11 02:44:37.135721 +09:00
|
130
|
+
exemplify_00022:
|
131
|
+
updated_at: 2008-01-11 02:44:37.135721 +09:00
|
132
|
+
item_id: 22
|
133
|
+
manifestation_id: 11
|
134
|
+
id: 22
|
135
|
+
created_at: 2008-01-11 02:44:37.135721 +09:00
|
128
136
|
|
129
137
|
# == Schema Information
|
130
138
|
#
|
data/spec/fixtures/items.yml
CHANGED
@@ -209,10 +209,16 @@ item_00021:
|
|
209
209
|
id: 21
|
210
210
|
include_supplements: false
|
211
211
|
created_at: 2007-08-24 23:46:20.484813 +09:00
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
212
|
+
item_00022:
|
213
|
+
updated_at: 2007-08-24 23:46:20.484813 +09:00
|
214
|
+
item_identifier: '00022'
|
215
|
+
circulation_status_id: 2
|
216
|
+
checkout_type_id: 3
|
217
|
+
shelf_id: 1
|
218
|
+
call_number:
|
219
|
+
id: 22
|
220
|
+
include_supplements: false
|
221
|
+
created_at: 2007-08-24 23:46:20.484813 +09:00
|
216
222
|
|
217
223
|
|
218
224
|
# == Schema Information
|
@@ -1712,6 +1712,9 @@ manifestation_00202:
|
|
1712
1712
|
created_at: 2007-11-19 17:55:41 UTC
|
1713
1713
|
frequency_id: 3
|
1714
1714
|
issn: 12345678
|
1715
|
+
serial_number: 2
|
1716
|
+
volume_number: 1
|
1717
|
+
issue_number: 2
|
1715
1718
|
manifestation_00203:
|
1716
1719
|
carrier_type_id: 1
|
1717
1720
|
language_id: 1
|
@@ -1958,8 +1961,8 @@ manifestation_00216:
|
|
1958
1961
|
# manifestation_identifier :string(255)
|
1959
1962
|
# date_of_publication :datetime
|
1960
1963
|
# date_copyrighted :datetime
|
1961
|
-
# created_at :datetime
|
1962
|
-
# updated_at :datetime
|
1964
|
+
# created_at :datetime not null
|
1965
|
+
# updated_at :datetime not null
|
1963
1966
|
# deleted_at :datetime
|
1964
1967
|
# access_address :string(255)
|
1965
1968
|
# language_id :integer default(1), not null
|
@@ -1967,9 +1970,9 @@ manifestation_00216:
|
|
1967
1970
|
# extent_id :integer default(1), not null
|
1968
1971
|
# start_page :integer
|
1969
1972
|
# end_page :integer
|
1970
|
-
# height :
|
1971
|
-
# width :
|
1972
|
-
# depth :
|
1973
|
+
# height :integer
|
1974
|
+
# width :integer
|
1975
|
+
# depth :integer
|
1973
1976
|
# isbn :string(255)
|
1974
1977
|
# isbn10 :string(255)
|
1975
1978
|
# wrong_isbn :string(255)
|
@@ -2006,12 +2009,16 @@ manifestation_00216:
|
|
2006
2009
|
# date_accepted :datetime
|
2007
2010
|
# date_caputured :datetime
|
2008
2011
|
# ndl_bib_id :string(255)
|
2009
|
-
# file_hash :string(255)
|
2010
2012
|
# pub_date :string(255)
|
2011
2013
|
# edition_string :string(255)
|
2012
2014
|
# volume_number :integer
|
2013
2015
|
# issue_number :integer
|
2014
2016
|
# serial_number :integer
|
2015
2017
|
# ndc :string(255)
|
2018
|
+
# content_type_id :integer default(1)
|
2019
|
+
# year_of_publication :integer
|
2020
|
+
# attachment_fingerprint :string(255)
|
2021
|
+
# attachment_meta :text
|
2022
|
+
# month_of_publication :integer
|
2016
2023
|
#
|
2017
2024
|
|
@@ -1,65 +1,70 @@
|
|
1
1
|
message_template_00001:
|
2
2
|
id: 1
|
3
|
-
status:
|
3
|
+
status: reservation_accepted_for_patron
|
4
4
|
title: Reservation accepted
|
5
5
|
body: Reservation accepted
|
6
6
|
position: 1
|
7
|
+
locale: ja
|
7
8
|
message_template_00002:
|
8
9
|
id: 2
|
9
|
-
status:
|
10
|
+
status: item_received_for_patron
|
10
11
|
title: Item received
|
11
12
|
body: Item received
|
12
13
|
position: 2
|
14
|
+
locale: ja
|
13
15
|
message_template_00003:
|
14
16
|
id: 3
|
15
17
|
status: reservation_expired_for_patron
|
16
18
|
title: Reservation expired
|
17
19
|
body: Reservation expired
|
18
20
|
position: 3
|
21
|
+
locale: ja
|
19
22
|
message_template_00004:
|
20
23
|
id: 4
|
21
24
|
status: reservation_expired_for_library
|
22
25
|
title: Reservation expired
|
23
26
|
body: Reservation expired
|
24
27
|
position: 4
|
28
|
+
locale: ja
|
25
29
|
message_template_00005:
|
26
30
|
id: 5
|
27
31
|
status: reservation_canceled_for_patron
|
28
32
|
title: Reservation canceled
|
29
33
|
body: Reservation canceled
|
30
34
|
position: 5
|
35
|
+
locale: ja
|
31
36
|
message_template_00006:
|
32
37
|
id: 6
|
33
38
|
status: reservation_canceled_for_library
|
34
39
|
title: Reservation canceled
|
35
40
|
body: Reservation canceled
|
36
41
|
position: 6
|
42
|
+
locale: ja
|
37
43
|
message_template_00007:
|
38
44
|
id: 7
|
39
45
|
status: recall_item
|
40
46
|
title: Recall item
|
41
47
|
body: Recall item
|
42
48
|
position: 7
|
49
|
+
locale: ja
|
43
50
|
message_template_00008:
|
44
51
|
id: 8
|
45
52
|
status: recall_overdue_item
|
46
53
|
title: Recall overdue item
|
47
54
|
body: Recall overdue item
|
48
55
|
position: 8
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
#
|
65
|
-
|
56
|
+
locale: ja
|
57
|
+
message_template_00009:
|
58
|
+
id: 9
|
59
|
+
status: reservation_accepted_for_library
|
60
|
+
title: Reservation accepted
|
61
|
+
body: Reservation accepted
|
62
|
+
position: 9
|
63
|
+
locale: ja
|
64
|
+
message_template_00010:
|
65
|
+
id: 10
|
66
|
+
status: item_received_for_library
|
67
|
+
title: Item received
|
68
|
+
body: Item received
|
69
|
+
position: 10
|
70
|
+
locale: ja
|
data/spec/fixtures/reserves.yml
CHANGED
@@ -117,6 +117,25 @@ reserve_00013:
|
|
117
117
|
created_at: 2007-09-01 14:20:05.530854 +09:00
|
118
118
|
expired_at: <%= 1.day.ago %>
|
119
119
|
state: requested
|
120
|
+
reserve_00014:
|
121
|
+
updated_at: 2007-09-01 14:20:05.530854 +09:00
|
122
|
+
manifestation_id: 11
|
123
|
+
user_id: 4
|
124
|
+
request_status_type_id: 3
|
125
|
+
id: 14
|
126
|
+
created_at: 2007-09-01 14:20:05.530854 +09:00
|
127
|
+
expired_at: <%= 1.day.from_now %>
|
128
|
+
state: retained
|
129
|
+
item_id: 21
|
130
|
+
reserve_00015:
|
131
|
+
updated_at: 2007-09-01 14:20:05.530854 +09:00
|
132
|
+
manifestation_id: 11
|
133
|
+
user_id: 4
|
134
|
+
request_status_type_id: 3
|
135
|
+
id: 15
|
136
|
+
created_at: 2007-09-01 14:20:05.530854 +09:00
|
137
|
+
expired_at: <%= 1.day.from_now %>
|
138
|
+
state: requested
|
120
139
|
|
121
140
|
# == Schema Information
|
122
141
|
#
|
data/spec/models/reserve_spec.rb
CHANGED
@@ -5,16 +5,25 @@ describe Reserve do
|
|
5
5
|
fixtures :all
|
6
6
|
|
7
7
|
it "should have next reservation" do
|
8
|
-
reserves(:
|
8
|
+
reserves(:reserve_00014).next_reservation.should be_true
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should notify a next reservation" do
|
12
|
+
old_count = Message.count
|
13
|
+
reserve = reserves(:reserve_00014)
|
14
|
+
reserve.sm_expire!
|
15
|
+
reserve.state.should eq 'expired'
|
16
|
+
reserve.next_reservation.item.should eq reserve.item
|
17
|
+
Message.count.should eq old_count + 2
|
9
18
|
end
|
10
19
|
|
11
20
|
it "should expire reservation" do
|
12
|
-
reserves(:reserve_00001).
|
21
|
+
reserves(:reserve_00001).sm_expire!
|
13
22
|
reserves(:reserve_00001).request_status_type.name.should eq 'Expired'
|
14
23
|
end
|
15
24
|
|
16
25
|
it "should cancel reservation" do
|
17
|
-
reserves(:reserve_00001).
|
26
|
+
reserves(:reserve_00001).sm_cancel!
|
18
27
|
reserves(:reserve_00001).canceled_at.should be_true
|
19
28
|
reserves(:reserve_00001).request_status_type.name.should eq 'Cannot Fulfill Request'
|
20
29
|
end
|
@@ -26,7 +35,7 @@ describe Reserve do
|
|
26
35
|
it "should send accepted message" do
|
27
36
|
old_admin_count = User.find('admin').received_messages.count
|
28
37
|
old_user_count = reserves(:reserve_00002).user.received_messages.count
|
29
|
-
reserves(:reserve_00002).send_message
|
38
|
+
reserves(:reserve_00002).send_message.should be_true
|
30
39
|
# 予約者と図書館の両方に送られる
|
31
40
|
User.find('admin').received_messages.count.should eq old_admin_count + 1
|
32
41
|
reserves(:reserve_00002).user.received_messages.count.should eq old_user_count + 1
|
@@ -34,8 +43,8 @@ describe Reserve do
|
|
34
43
|
|
35
44
|
it "should send expired message" do
|
36
45
|
old_count = MessageRequest.count
|
37
|
-
reserves(:
|
38
|
-
MessageRequest.count.should eq old_count +
|
46
|
+
reserves(:reserve_00006).send_message.should be_true
|
47
|
+
MessageRequest.count.should eq old_count + 2
|
39
48
|
end
|
40
49
|
|
41
50
|
it "should send message to library" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enju_circulation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.28
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70274896189320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70274896189320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: simple_form
|
27
|
-
requirement: &
|
27
|
+
requirement: &70274896188900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70274896188900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: devise
|
38
|
-
requirement: &
|
38
|
+
requirement: &70274896188380 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70274896188380
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cancan
|
49
|
-
requirement: &
|
49
|
+
requirement: &70274896187860 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70274896187860
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: validates_timeliness
|
60
|
-
requirement: &
|
60
|
+
requirement: &70274896187300 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70274896187300
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: attribute_normalizer
|
71
|
-
requirement: &
|
71
|
+
requirement: &70274896186560 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '1.1'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70274896186560
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: inherited_resources
|
82
|
-
requirement: &
|
82
|
+
requirement: &70274896185940 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70274896185940
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: state_machine
|
93
|
-
requirement: &
|
93
|
+
requirement: &70274896185480 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70274896185480
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: friendly_id
|
104
|
-
requirement: &
|
104
|
+
requirement: &70274896184820 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '4.0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70274896184820
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: sunspot_rails
|
115
|
-
requirement: &
|
115
|
+
requirement: &70274896184220 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70274896184220
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sunspot_solr
|
126
|
-
requirement: &
|
126
|
+
requirement: &70274896183620 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70274896183620
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: will_paginate
|
137
|
-
requirement: &
|
137
|
+
requirement: &70274896199100 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,32 +142,32 @@ dependencies:
|
|
142
142
|
version: '3.0'
|
143
143
|
type: :runtime
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70274896199100
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: acts_as_list
|
148
|
-
requirement: &
|
148
|
+
requirement: &70274896198540 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: 0.1.
|
153
|
+
version: 0.1.6
|
154
154
|
type: :runtime
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70274896198540
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: enju_message
|
159
|
-
requirement: &
|
159
|
+
requirement: &70274896198040 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ~>
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: 0.0.
|
164
|
+
version: 0.0.17
|
165
165
|
type: :runtime
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70274896198040
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: enju_event
|
170
|
-
requirement: &
|
170
|
+
requirement: &70274896197380 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ! '>='
|
@@ -175,10 +175,10 @@ dependencies:
|
|
175
175
|
version: 0.0.12
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *70274896197380
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: sqlite3
|
181
|
-
requirement: &
|
181
|
+
requirement: &70274896196820 !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|
184
184
|
- - ! '>='
|
@@ -186,10 +186,10 @@ dependencies:
|
|
186
186
|
version: '0'
|
187
187
|
type: :development
|
188
188
|
prerelease: false
|
189
|
-
version_requirements: *
|
189
|
+
version_requirements: *70274896196820
|
190
190
|
- !ruby/object:Gem::Dependency
|
191
191
|
name: rspec-rails
|
192
|
-
requirement: &
|
192
|
+
requirement: &70274896196140 !ruby/object:Gem::Requirement
|
193
193
|
none: false
|
194
194
|
requirements:
|
195
195
|
- - ! '>='
|
@@ -197,10 +197,10 @@ dependencies:
|
|
197
197
|
version: '0'
|
198
198
|
type: :development
|
199
199
|
prerelease: false
|
200
|
-
version_requirements: *
|
200
|
+
version_requirements: *70274896196140
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: factory_girl_rails
|
203
|
-
requirement: &
|
203
|
+
requirement: &70274896195360 !ruby/object:Gem::Requirement
|
204
204
|
none: false
|
205
205
|
requirements:
|
206
206
|
- - ~>
|
@@ -208,10 +208,10 @@ dependencies:
|
|
208
208
|
version: '3.1'
|
209
209
|
type: :development
|
210
210
|
prerelease: false
|
211
|
-
version_requirements: *
|
211
|
+
version_requirements: *70274896195360
|
212
212
|
- !ruby/object:Gem::Dependency
|
213
213
|
name: sunspot-rails-tester
|
214
|
-
requirement: &
|
214
|
+
requirement: &70274896194720 !ruby/object:Gem::Requirement
|
215
215
|
none: false
|
216
216
|
requirements:
|
217
217
|
- - ! '>='
|
@@ -219,7 +219,7 @@ dependencies:
|
|
219
219
|
version: '0'
|
220
220
|
type: :development
|
221
221
|
prerelease: false
|
222
|
-
version_requirements: *
|
222
|
+
version_requirements: *70274896194720
|
223
223
|
description: Circulation management for Next-L Enju
|
224
224
|
email:
|
225
225
|
- tanabe@mwr.mediacom.keio.ac.jp
|
@@ -525,9 +525,11 @@ files:
|
|
525
525
|
- spec/dummy/db/migrate/20081025083905_create_languages.rb
|
526
526
|
- spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb
|
527
527
|
- spec/dummy/db/migrate/20100222124420_add_allow_bookmark_external_url_to_library_group.rb
|
528
|
+
- spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb
|
528
529
|
- spec/dummy/db/migrate/20110115022329_add_position_to_library_group.rb
|
529
530
|
- spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb
|
530
531
|
- spec/dummy/db/migrate/20110913115320_add_lft_and_rgt_to_message.rb
|
532
|
+
- spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb
|
531
533
|
- spec/dummy/db/migrate/20111020063828_remove_dsbl_from_library_group.rb
|
532
534
|
- spec/dummy/db/migrate/20111201121844_create_roles.rb
|
533
535
|
- spec/dummy/db/migrate/20111201155456_create_users.rb
|
@@ -755,9 +757,11 @@ test_files:
|
|
755
757
|
- spec/dummy/db/migrate/20081025083905_create_languages.rb
|
756
758
|
- spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb
|
757
759
|
- spec/dummy/db/migrate/20100222124420_add_allow_bookmark_external_url_to_library_group.rb
|
760
|
+
- spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb
|
758
761
|
- spec/dummy/db/migrate/20110115022329_add_position_to_library_group.rb
|
759
762
|
- spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb
|
760
763
|
- spec/dummy/db/migrate/20110913115320_add_lft_and_rgt_to_message.rb
|
764
|
+
- spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb
|
761
765
|
- spec/dummy/db/migrate/20111020063828_remove_dsbl_from_library_group.rb
|
762
766
|
- spec/dummy/db/migrate/20111201121844_create_roles.rb
|
763
767
|
- spec/dummy/db/migrate/20111201155456_create_users.rb
|