enju_circulation 0.1.0.pre40 → 0.1.0.pre41
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +8 -1
- data/app/controllers/checked_items_controller.rb +1 -1
- data/app/controllers/checkout_types_controller.rb +0 -7
- data/app/controllers/checkouts_controller.rb +1 -1
- data/app/controllers/manifestation_checkout_stats_controller.rb +22 -8
- data/app/controllers/reserves_controller.rb +17 -5
- data/app/models/carrier_type_has_checkout_type.rb +2 -3
- data/app/models/checked_item.rb +2 -3
- data/app/models/checkin.rb +2 -3
- data/app/models/checkout.rb +6 -2
- data/app/models/checkout_stat_has_manifestation.rb +2 -3
- data/app/models/checkout_stat_has_user.rb +2 -3
- data/app/models/checkout_type.rb +2 -3
- data/app/models/circulation_status.rb +2 -3
- data/app/models/item_has_use_restriction.rb +2 -3
- data/app/models/lending_policy.rb +2 -3
- data/app/models/manifestation_checkout_stat.rb +3 -3
- data/app/models/manifestation_checkout_stat_state_machine.rb +1 -1
- data/app/models/manifestation_checkout_stat_transition.rb +2 -2
- data/app/models/manifestation_reserve_stat.rb +3 -3
- data/app/models/manifestation_reserve_stat_transition.rb +2 -2
- data/app/models/reserve.rb +14 -11
- data/app/models/reserve_stat_has_manifestation.rb +2 -3
- data/app/models/reserve_stat_has_user.rb +2 -3
- data/app/models/reserve_transition.rb +2 -2
- data/app/models/use_restriction.rb +2 -3
- data/app/models/user_checkout_stat.rb +2 -2
- data/app/models/user_checkout_stat_transition.rb +2 -2
- data/app/models/user_group_has_checkout_type.rb +6 -7
- data/app/models/user_reserve_stat.rb +2 -2
- data/app/models/user_reserve_stat_transition.rb +2 -2
- data/app/views/checkouts/_list.html.erb +5 -0
- data/app/views/checkouts/index.rss.builder +3 -3
- data/app/views/manifestation_checkout_stats/_group_by_carrier_type.html.erb +53 -0
- data/app/views/manifestation_checkout_stats/_group_by_checkout_type.html.erb +54 -0
- data/app/views/manifestation_checkout_stats/show.html.erb +6 -38
- data/app/views/reserves/_new.html.erb +6 -1
- data/app/views/reserves/_new_user.html.erb +6 -1
- data/app/views/reserves/edit.html.erb +5 -0
- data/app/views/reserves/index.html.erb +2 -0
- data/app/views/reserves/index.rss.builder +2 -2
- data/app/views/reserves/show.html.erb +5 -0
- data/config/locales/translation_en.yml +2 -0
- data/config/locales/translation_ja.yml +2 -0
- data/db/migrate/20111129044509_add_pickup_location_to_reserve.rb +6 -0
- data/db/migrate/20140518050147_create_reserve_transitions.rb +5 -1
- data/db/migrate/20140528045518_create_user_checkout_stat_transitions.rb +5 -1
- data/db/migrate/20140528045539_create_user_reserve_stat_transitions.rb +5 -1
- data/db/migrate/20140528045600_create_manifestation_checkout_stat_transitions.rb +5 -1
- data/db/migrate/20140528045617_create_manifestation_reserve_stat_transitions.rb +5 -1
- data/db/migrate/20141014065831_add_shelf_id_to_checkout.rb +6 -0
- data/db/migrate/20141020120523_add_library_id_to_checkout.rb +6 -0
- data/lib/enju_circulation/accept.rb +22 -0
- data/lib/enju_circulation/basket.rb +37 -0
- data/lib/enju_circulation/item.rb +14 -8
- data/lib/enju_circulation/profile.rb +1 -1
- data/lib/enju_circulation/version.rb +1 -1
- data/lib/enju_circulation.rb +4 -0
- data/lib/tasks/checkout.rb +7 -0
- data/lib/tasks/enju_circulation_tasks.rake +10 -2
- data/spec/controllers/manifestation_checkout_stats_controller_spec.rb +2 -0
- data/spec/dummy/config/database.yml +23 -18
- data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +5 -1
- data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +5 -1
- data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +5 -1
- data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +5 -1
- data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +5 -1
- data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +5 -1
- data/spec/dummy/db/schema.rb +561 -555
- data/spec/fixtures/carrier_type_has_checkout_types.yml +2 -3
- data/spec/fixtures/checked_items.yml +6 -7
- data/spec/fixtures/checkins.yml +2 -3
- data/spec/fixtures/checkout_stat_has_manifestations.yml +2 -3
- data/spec/fixtures/checkout_stat_has_users.yml +2 -3
- data/spec/fixtures/checkout_types.yml +2 -3
- data/spec/fixtures/checkouts.yml +17 -15
- data/spec/fixtures/circulation_statuses.yml +2 -3
- data/spec/fixtures/item_has_use_restrictions.yml +2 -3
- data/spec/fixtures/lending_policies.yml +2 -3
- data/spec/fixtures/manifestation_checkout_stats.yml +2 -2
- data/spec/fixtures/manifestation_reserve_stats.yml +2 -2
- data/spec/fixtures/manifestations.yml +114 -114
- data/spec/fixtures/reserve_stat_has_manifestations.yml +2 -3
- data/spec/fixtures/reserve_stat_has_users.yml +2 -3
- data/spec/fixtures/reserve_transitions.yml +2 -2
- data/spec/fixtures/reserves.yml +20 -19
- data/spec/fixtures/use_restrictions.yml +2 -3
- data/spec/fixtures/user_checkout_stats.yml +2 -2
- data/spec/fixtures/user_group_has_checkout_types.yml +2 -3
- data/spec/fixtures/user_reserve_stats.yml +2 -2
- data/spec/fixtures/users.yml +1 -1
- data/spec/models/basket_spec.rb +15 -2
- data/spec/models/carrier_type_has_checkout_type_spec.rb +2 -3
- data/spec/models/checked_item_spec.rb +2 -3
- data/spec/models/checkin_spec.rb +2 -3
- data/spec/models/checkout_spec.rb +4 -2
- data/spec/models/checkout_stat_has_manifestation_spec.rb +2 -3
- data/spec/models/checkout_stat_has_user_spec.rb +2 -3
- data/spec/models/checkout_type_spec.rb +2 -3
- data/spec/models/circulation_status_spec.rb +2 -3
- data/spec/models/lending_policy_spec.rb +2 -3
- data/spec/models/manifestation_checkout_stat_spec.rb +5 -4
- data/spec/models/manifestation_reserve_stat_spec.rb +2 -2
- data/spec/models/reserve_spec.rb +3 -2
- data/spec/models/reserve_stat_has_manifestation_spec.rb +2 -3
- data/spec/models/reserve_stat_has_user_spec.rb +2 -3
- data/spec/models/user_checkout_stat_spec.rb +2 -2
- data/spec/models/user_group_has_checkout_type_spec.rb +2 -3
- data/spec/models/user_reserve_stat_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -0
- metadata +44 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc28894fa75205e043a65091c988180f9ec16291
|
4
|
+
data.tar.gz: c032ab36c6bb6973ad8c7d333cda148feb0db4c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38f85ed8019ed31ddc51516bed7bf0fd9764445b3ba9d4a3231fa27cdaccb744d7f0723bc211be6002e394c56e7e103ccbef73ba7aa84a62bd20f9537cb34e72
|
7
|
+
data.tar.gz: d35cb074110a6727b25a03fb57d1f38f25132dea4844dd31b1371db40383612b4d6cacfaf2f17269b545cca4adf96fbfeb0071227c73415dc8c84516eee9957c
|
data/README.rdoc
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
-
= EnjuCirculation
|
1
|
+
= EnjuCirculation
|
2
|
+
{<img src="https://secure.travis-ci.org/next-l/enju_circulation.png?branch=1.1" alt="Build Status" />}[http://travis-ci.org/next-l/enju_circulation]
|
3
|
+
{<img src="https://coveralls.io/repos/next-l/enju_circulation/badge.png?branch=1.1" alt="Coverage Status" />}[https://coveralls.io/r/next-l/enju_circulation?branch=1.1]
|
4
|
+
{<img src="https://hakiri.io/github/next-l/enju_circulation/1.1.svg" alt="security" />}[https://hakiri.io/github/next-l/enju_circulation/1.1]
|
2
5
|
|
3
6
|
This project rocks and uses MIT-LICENSE.
|
7
|
+
|
8
|
+
== 製作者・貢献者 (Authors and contributors)
|
9
|
+
* {TANABE, Kosuke}[https://github.com/nabeta] ({@nabeta}[https://twitter.com/nabeta])
|
10
|
+
* {Project Next-L}[http://www.next-l.jp] ({@ProjectNextL}[https://twitter.com/ProjectNextL])
|
@@ -88,7 +88,7 @@ class CheckedItemsController < ApplicationController
|
|
88
88
|
|
89
89
|
respond_to do |format|
|
90
90
|
if @checked_item.update_attributes(params[:checked_item])
|
91
|
-
format.html { redirect_to @checked_item, notice: t('controller.successfully_updated', model: t('activerecord.models.checked_item')) }
|
91
|
+
format.html { redirect_to checked_item_url(@checked_item), notice: t('controller.successfully_updated', model: t('activerecord.models.checked_item')) }
|
92
92
|
format.json { head :no_content }
|
93
93
|
else
|
94
94
|
format.html { render action: "edit" }
|
@@ -47,9 +47,6 @@ class CheckoutTypesController < ApplicationController
|
|
47
47
|
|
48
48
|
# GET /checkout_types/1/edit
|
49
49
|
def edit
|
50
|
-
if @user_group
|
51
|
-
@checkout_type = @user_group.checkout_types.find(params[:id])
|
52
|
-
end
|
53
50
|
end
|
54
51
|
|
55
52
|
# POST /checkout_types
|
@@ -75,10 +72,6 @@ class CheckoutTypesController < ApplicationController
|
|
75
72
|
# PUT /checkout_types/1
|
76
73
|
# PUT /checkout_types/1.json
|
77
74
|
def update
|
78
|
-
if @user_group
|
79
|
-
@checkout_type = @user_group.checkout_types.find(params[:id])
|
80
|
-
end
|
81
|
-
|
82
75
|
if params[:move]
|
83
76
|
move_position(@checkout_type, params[:move])
|
84
77
|
return
|
@@ -10,7 +10,7 @@ class CheckoutsController < ApplicationController
|
|
10
10
|
# GET /checkouts.json
|
11
11
|
def index
|
12
12
|
if params[:icalendar_token].present?
|
13
|
-
icalendar_user = Profile.where(:
|
13
|
+
icalendar_user = Profile.where(checkout_icalendar_token: params[:icalendar_token]).first.try(:user)
|
14
14
|
if icalendar_user.blank?
|
15
15
|
raise ActiveRecord::RecordNotFound
|
16
16
|
else
|
@@ -21,20 +21,32 @@ class ManifestationCheckoutStatsController < ApplicationController
|
|
21
21
|
else
|
22
22
|
per_page = CheckoutStatHasManifestation.default_per_page
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
|
+
@carrier_type_results = Checkout.where(
|
25
26
|
Checkout.arel_table[:created_at].gteq @manifestation_checkout_stat.start_date
|
26
27
|
).where(
|
27
28
|
Checkout.arel_table[:created_at].lt @manifestation_checkout_stat.end_date
|
28
|
-
).joins(item:
|
29
|
+
).joins(item: :manifestation).group(
|
30
|
+
'checkouts.shelf_id', :carrier_type_id
|
31
|
+
).merge(
|
29
32
|
Manifestation.where(carrier_type_id: CarrierType.pluck(:id))
|
30
|
-
).
|
31
|
-
|
33
|
+
).count(:id)
|
34
|
+
|
35
|
+
@checkout_type_results = Checkout.where(
|
36
|
+
Checkout.arel_table[:created_at].gteq @manifestation_checkout_stat.start_date
|
37
|
+
).where(
|
38
|
+
Checkout.arel_table[:created_at].lt @manifestation_checkout_stat.end_date
|
39
|
+
).joins(item: :manifestation).group(
|
40
|
+
'checkouts.shelf_id', :checkout_type_id
|
41
|
+
).count(:id)
|
42
|
+
|
43
|
+
@stats = Checkout.where(
|
32
44
|
Checkout.arel_table[:created_at].gteq @manifestation_checkout_stat.start_date
|
33
45
|
).where(
|
34
46
|
Checkout.arel_table[:created_at].lt @manifestation_checkout_stat.end_date
|
35
|
-
).joins(item:
|
47
|
+
).joins(item: :manifestation).group(:manifestation_id).merge(
|
36
48
|
Manifestation.where(carrier_type_id: CarrierType.pluck(:id))
|
37
|
-
).order('
|
49
|
+
).order('count_id DESC').page(params[:page]).per(per_page)
|
38
50
|
|
39
51
|
respond_to do |format|
|
40
52
|
format.html # show.html.erb
|
@@ -67,8 +79,10 @@ class ManifestationCheckoutStatsController < ApplicationController
|
|
67
79
|
|
68
80
|
respond_to do |format|
|
69
81
|
if @manifestation_checkout_stat.save
|
70
|
-
|
71
|
-
|
82
|
+
@manifestation_checkout_stat.transition_to(:started)
|
83
|
+
@manifestation_checkout_stat.transition_to!(:completed)
|
84
|
+
#Resque.enqueue(ManifestationCheckoutStatQueue, @manifestation_checkout_stat.id)
|
85
|
+
format.html { redirect_to @manifestation_checkout_stat, notice: t('controller.successfully_created', model: t('activerecord.models.manifestation_checkout_stat')) }
|
72
86
|
format.json { render json: @manifestation_checkout_stat, status: :created, location: @manifestation_checkout_stat }
|
73
87
|
else
|
74
88
|
format.html { render action: "new" }
|
@@ -3,6 +3,7 @@ class ReservesController < ApplicationController
|
|
3
3
|
before_filter :store_location, only: [:index, :new]
|
4
4
|
load_and_authorize_resource except: :index
|
5
5
|
authorize_resource only: :index
|
6
|
+
before_filter :prepare_options, only: [:new, :edit]
|
6
7
|
before_filter :get_user, only: [:index, :new]
|
7
8
|
before_filter :store_page
|
8
9
|
helper_method :get_manifestation
|
@@ -95,7 +96,7 @@ class ReservesController < ApplicationController
|
|
95
96
|
order_by sort_column, order
|
96
97
|
with(:state).equal_to state if state
|
97
98
|
facet :state
|
98
|
-
paginate :
|
99
|
+
paginate page: page.to_i, per_page: per_page
|
99
100
|
end
|
100
101
|
|
101
102
|
@reserves = search.execute.results
|
@@ -122,7 +123,7 @@ class ReservesController < ApplicationController
|
|
122
123
|
# GET /reserves/new
|
123
124
|
# GET /reserves/new.json
|
124
125
|
def new
|
125
|
-
@reserve = Reserve.new
|
126
|
+
@reserve = Reserve.new
|
126
127
|
|
127
128
|
if current_user.has_role?('Librarian')
|
128
129
|
@reserve.user = @user
|
@@ -157,7 +158,11 @@ class ReservesController < ApplicationController
|
|
157
158
|
# POST /reserves
|
158
159
|
# POST /reserves.json
|
159
160
|
def create
|
160
|
-
|
161
|
+
if current_user.has_role?('Librarian')
|
162
|
+
@reserve = Reserve.new(params[:reserve], as: :admin)
|
163
|
+
else
|
164
|
+
@reserve = Reserve.new(params[:reserve])
|
165
|
+
end
|
161
166
|
@reserve.set_user
|
162
167
|
|
163
168
|
if current_user.has_role?('Librarian')
|
@@ -179,6 +184,7 @@ class ReservesController < ApplicationController
|
|
179
184
|
format.html { redirect_to @reserve, notice: t('controller.successfully_created', model: t('activerecord.models.reserve')) }
|
180
185
|
format.json { render json: @reserve, status: :created, location: reserve_url(@reserve) }
|
181
186
|
else
|
187
|
+
prepare_options
|
182
188
|
format.html { render action: "new" }
|
183
189
|
format.json { render json: @reserve.errors, status: :unprocessable_entity }
|
184
190
|
end
|
@@ -202,11 +208,11 @@ class ReservesController < ApplicationController
|
|
202
208
|
@reserve.transition_to!(:canceled)
|
203
209
|
else
|
204
210
|
if @reserve.retained?
|
205
|
-
if @reserve.item_identifier and @reserve.force_retaining == '1'
|
211
|
+
if @reserve.item_identifier.present? and @reserve.force_retaining == '1'
|
206
212
|
@reserve.transition_to!(:retained)
|
207
213
|
end
|
208
214
|
else
|
209
|
-
@reserve.transition_to!(:retained) if @reserve.item_identifier
|
215
|
+
@reserve.transition_to!(:retained) if @reserve.item_identifier.present?
|
210
216
|
end
|
211
217
|
end
|
212
218
|
end
|
@@ -221,6 +227,7 @@ class ReservesController < ApplicationController
|
|
221
227
|
format.html { redirect_to @reserve }
|
222
228
|
format.json { head :no_content }
|
223
229
|
else
|
230
|
+
prepare_options
|
224
231
|
format.html { render action: "edit" }
|
225
232
|
format.json { render json: @reserve.errors, status: :unprocessable_entity }
|
226
233
|
end
|
@@ -247,4 +254,9 @@ class ReservesController < ApplicationController
|
|
247
254
|
format.json { head :no_content }
|
248
255
|
end
|
249
256
|
end
|
257
|
+
|
258
|
+
private
|
259
|
+
def prepare_options
|
260
|
+
@libraries = Library.real.order(:position)
|
261
|
+
end
|
250
262
|
end
|
data/app/models/checked_item.rb
CHANGED
@@ -132,8 +132,7 @@ end
|
|
132
132
|
# item_id :integer not null
|
133
133
|
# basket_id :integer not null
|
134
134
|
# due_date :datetime not null
|
135
|
-
# created_at :datetime
|
136
|
-
# updated_at :datetime
|
135
|
+
# created_at :datetime
|
136
|
+
# updated_at :datetime
|
137
137
|
# librarian_id :integer
|
138
138
|
#
|
139
|
-
|
data/app/models/checkin.rb
CHANGED
@@ -90,8 +90,7 @@ end
|
|
90
90
|
# item_id :integer not null
|
91
91
|
# librarian_id :integer
|
92
92
|
# basket_id :integer
|
93
|
-
# created_at :datetime
|
94
|
-
# updated_at :datetime
|
93
|
+
# created_at :datetime
|
94
|
+
# updated_at :datetime
|
95
95
|
# lock_version :integer default(0), not null
|
96
96
|
#
|
97
|
-
|
data/app/models/checkout.rb
CHANGED
@@ -13,6 +13,8 @@ class Checkout < ActiveRecord::Base
|
|
13
13
|
belongs_to :checkin
|
14
14
|
belongs_to :librarian, class_name: 'User'
|
15
15
|
belongs_to :basket
|
16
|
+
belongs_to :shelf
|
17
|
+
belongs_to :library
|
16
18
|
|
17
19
|
validates_associated :user, :item, :librarian, :checkin #, :basket
|
18
20
|
# TODO: 貸出履歴を保存しない場合は、ユーザ名を削除する
|
@@ -169,6 +171,8 @@ end
|
|
169
171
|
# due_date :datetime
|
170
172
|
# checkout_renewal_count :integer default(0), not null
|
171
173
|
# lock_version :integer default(0), not null
|
172
|
-
# created_at :datetime
|
173
|
-
# updated_at :datetime
|
174
|
+
# created_at :datetime
|
175
|
+
# updated_at :datetime
|
176
|
+
# shelf_id :integer
|
177
|
+
# library_id :integer
|
174
178
|
#
|
@@ -18,7 +18,6 @@ end
|
|
18
18
|
# user_checkout_stat_id :integer not null
|
19
19
|
# user_id :integer not null
|
20
20
|
# checkouts_count :integer default(0), not null
|
21
|
-
# created_at :datetime
|
22
|
-
# updated_at :datetime
|
21
|
+
# created_at :datetime
|
22
|
+
# updated_at :datetime
|
23
23
|
#
|
24
|
-
|
data/app/models/checkout_type.rb
CHANGED
@@ -24,7 +24,7 @@ class ManifestationCheckoutStat < ActiveRecord::Base
|
|
24
24
|
self.started_at = Time.zone.now
|
25
25
|
Manifestation.find_each do |manifestation|
|
26
26
|
daily_count = Checkout.manifestations_count(start_date.beginning_of_day, end_date.tomorrow.beginning_of_day, manifestation)
|
27
|
-
#manifestation.update_attributes({:
|
27
|
+
#manifestation.update_attributes({daily_checkouts_count: daily_count, total_count: manifestation.total_count + daily_count})
|
28
28
|
if daily_count > 0
|
29
29
|
self.manifestations << manifestation
|
30
30
|
sql = ['UPDATE checkout_stat_has_manifestations SET checkouts_count = ? WHERE manifestation_checkout_stat_id = ? AND manifestation_id = ?', daily_count, id, manifestation.id]
|
@@ -52,8 +52,8 @@ end
|
|
52
52
|
# start_date :datetime
|
53
53
|
# end_date :datetime
|
54
54
|
# note :text
|
55
|
-
# created_at :datetime
|
56
|
-
# updated_at :datetime
|
55
|
+
# created_at :datetime
|
56
|
+
# updated_at :datetime
|
57
57
|
# started_at :datetime
|
58
58
|
# completed_at :datetime
|
59
59
|
# user_id :integer
|
@@ -9,7 +9,7 @@ class ManifestationCheckoutStatStateMachine
|
|
9
9
|
|
10
10
|
after_transition(to: :started) do |manifestation_checkout_stat|
|
11
11
|
manifestation_checkout_stat.update_column(:started_at, Time.zone.now)
|
12
|
-
manifestation_checkout_stat.calculate_count!
|
12
|
+
#manifestation_checkout_stat.calculate_count!
|
13
13
|
end
|
14
14
|
|
15
15
|
after_transition(to: :completed) do |manifestation_checkout_stat|
|
@@ -24,7 +24,7 @@ class ManifestationReserveStat < ActiveRecord::Base
|
|
24
24
|
self.started_at = Time.zone.now
|
25
25
|
Manifestation.find_each do |manifestation|
|
26
26
|
daily_count = manifestation.reserves.created(start_date.beginning_of_day, end_date.tomorrow.beginning_of_day).size
|
27
|
-
#manifestation.update_attributes({:
|
27
|
+
#manifestation.update_attributes({daily_reserves_count: daily_count, total_count: manifestation.total_count + daily_count})
|
28
28
|
if daily_count > 0
|
29
29
|
self.manifestations << manifestation
|
30
30
|
sql = ['UPDATE reserve_stat_has_manifestations SET reserves_count = ? WHERE manifestation_reserve_stat_id = ? AND manifestation_id = ?', daily_count, id, manifestation.id]
|
@@ -52,8 +52,8 @@ end
|
|
52
52
|
# start_date :datetime
|
53
53
|
# end_date :datetime
|
54
54
|
# note :text
|
55
|
-
# created_at :datetime
|
56
|
-
# updated_at :datetime
|
55
|
+
# created_at :datetime
|
56
|
+
# updated_at :datetime
|
57
57
|
# started_at :datetime
|
58
58
|
# completed_at :datetime
|
59
59
|
# user_id :integer
|
data/app/models/reserve.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
class Reserve < ActiveRecord::Base
|
3
3
|
include Statesman::Adapters::ActiveRecordModel
|
4
|
-
attr_accessible :manifestation_id, :user_number, :expired_at
|
5
|
-
|
4
|
+
attr_accessible :manifestation_id, :user_number, :expired_at,
|
5
|
+
:pickup_location_id
|
6
|
+
attr_accessible :expired_at, :pickup_location_id, as: :user_update
|
6
7
|
attr_accessible :manifestation_id, :item_identifier, :user_number,
|
7
8
|
:expired_at, :request_status_type, :canceled_at, :checked_out_at,
|
8
9
|
:expiration_notice_to_patron, :expiration_notice_to_library, :item_id,
|
9
|
-
:retained_at, :postponed_at, :force_retaining,
|
10
|
+
:retained_at, :postponed_at, :force_retaining, :pickup_location_id,
|
10
11
|
as: :admin
|
11
12
|
scope :hold, -> { where('item_id IS NOT NULL') }
|
12
13
|
scope :not_hold, -> { where(item_id: nil) }
|
@@ -18,17 +19,18 @@ class Reserve < ActiveRecord::Base
|
|
18
19
|
scope :will_expire_retained, lambda {|datetime| in_state(:retained).where('checked_out_at IS NULL AND canceled_at IS NULL AND expired_at <= ?', datetime).order('expired_at')}
|
19
20
|
scope :will_expire_pending, lambda {|datetime| in_state(:pending).where('checked_out_at IS NULL AND canceled_at IS NULL AND expired_at <= ?', datetime).order('expired_at')}
|
20
21
|
scope :created, lambda {|start_date, end_date| where('created_at >= ? AND created_at < ?', start_date, end_date)}
|
21
|
-
scope :not_sent_expiration_notice_to_patron, -> {in_state(:expired).where(:
|
22
|
-
scope :not_sent_expiration_notice_to_library, -> {in_state(:expired).where(:
|
23
|
-
scope :sent_expiration_notice_to_patron, -> {in_state(:expired).where(:
|
24
|
-
scope :sent_expiration_notice_to_library, -> {in_state(:expired).where(:
|
25
|
-
scope :not_sent_cancel_notice_to_patron, -> {in_state(:canceled).where(:
|
26
|
-
scope :not_sent_cancel_notice_to_library, -> {in_state(:canceled).where(:
|
22
|
+
scope :not_sent_expiration_notice_to_patron, -> {in_state(:expired).where(expiration_notice_to_patron: false)}
|
23
|
+
scope :not_sent_expiration_notice_to_library, -> {in_state(:expired).where(expiration_notice_to_library: false)}
|
24
|
+
scope :sent_expiration_notice_to_patron, -> {in_state(:expired).where(expiration_notice_to_patron: true)}
|
25
|
+
scope :sent_expiration_notice_to_library, -> {in_state(:expired).where(expiration_notice_to_library: true)}
|
26
|
+
scope :not_sent_cancel_notice_to_patron, -> {in_state(:canceled).where(expiration_notice_to_patron: false)}
|
27
|
+
scope :not_sent_cancel_notice_to_library, -> {in_state(:canceled).where(expiration_notice_to_library: false)}
|
27
28
|
belongs_to :user
|
28
29
|
belongs_to :manifestation, touch: true
|
29
30
|
belongs_to :librarian, class_name: 'User'
|
30
31
|
belongs_to :item, touch: true
|
31
32
|
belongs_to :request_status_type
|
33
|
+
belongs_to :pickup_location, :class_name => 'Library'
|
32
34
|
|
33
35
|
validates_associated :user, :librarian, :request_status_type
|
34
36
|
validates :manifestation, associated: true #, on: :create
|
@@ -401,13 +403,14 @@ end
|
|
401
403
|
# item_id :integer
|
402
404
|
# request_status_type_id :integer not null
|
403
405
|
# checked_out_at :datetime
|
404
|
-
# created_at :datetime
|
405
|
-
# updated_at :datetime
|
406
|
+
# created_at :datetime
|
407
|
+
# updated_at :datetime
|
406
408
|
# canceled_at :datetime
|
407
409
|
# expired_at :datetime
|
408
410
|
# deleted_at :datetime
|
409
411
|
# expiration_notice_to_patron :boolean default(FALSE)
|
410
412
|
# expiration_notice_to_library :boolean default(FALSE)
|
413
|
+
# pickup_location_id :integer
|
411
414
|
# retained_at :datetime
|
412
415
|
# postponed_at :datetime
|
413
416
|
# lock_version :integer default(0), not null
|
@@ -51,8 +51,8 @@ end
|
|
51
51
|
# start_date :datetime
|
52
52
|
# end_date :datetime
|
53
53
|
# note :text
|
54
|
-
# created_at :datetime
|
55
|
-
# updated_at :datetime
|
54
|
+
# created_at :datetime
|
55
|
+
# updated_at :datetime
|
56
56
|
# started_at :datetime
|
57
57
|
# completed_at :datetime
|
58
58
|
# user_id :integer
|
@@ -4,8 +4,8 @@ class UserGroupHasCheckoutType < ActiveRecord::Base
|
|
4
4
|
:reservation_limit, :reservation_expired_period,
|
5
5
|
:set_due_date_before_closing_day, :fixed_due_date, :note, :position,
|
6
6
|
:user_group, :checkout_type
|
7
|
-
scope :available_for_item, lambda{|item| where(:
|
8
|
-
scope :available_for_carrier_type, lambda{|carrier_type| includes(:
|
7
|
+
scope :available_for_item, lambda{|item| where(checkout_type_id: item.checkout_type.id)}
|
8
|
+
scope :available_for_carrier_type, lambda{|carrier_type| includes(checkout_type: :carrier_types).where('carrier_types.id' => carrier_type.id)}
|
9
9
|
|
10
10
|
belongs_to :user_group, validate: true
|
11
11
|
belongs_to :checkout_type, validate: true
|
@@ -20,7 +20,7 @@ class UserGroupHasCheckoutType < ActiveRecord::Base
|
|
20
20
|
|
21
21
|
def create_lending_policy
|
22
22
|
self.checkout_type.items.find_each do |item|
|
23
|
-
policy = LendingPolicy.where(item_id: item.id, :
|
23
|
+
policy = LendingPolicy.where(item_id: item.id, user_group_id: user_group_id).select(:id).first
|
24
24
|
unless policy
|
25
25
|
sql = ['INSERT INTO lending_policies (item_id, user_group_id, loan_period, renewal, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)', item.id, user_group_id, checkout_period, checkout_renewal_limit, Time.zone.now, Time.zone.now]
|
26
26
|
ActiveRecord::Base.connection.execute(
|
@@ -44,7 +44,7 @@ class UserGroupHasCheckoutType < ActiveRecord::Base
|
|
44
44
|
'SELECT count(checkouts.id) as current_checkout_count,
|
45
45
|
profiles.user_group_id,
|
46
46
|
items.checkout_type_id
|
47
|
-
FROM
|
47
|
+
FROM profiles, checkouts LEFT OUTER JOIN items
|
48
48
|
ON (checkouts.item_id = items.id)
|
49
49
|
LEFT OUTER JOIN users
|
50
50
|
ON (users.id = checkouts.user_id)
|
@@ -81,8 +81,7 @@ end
|
|
81
81
|
# fixed_due_date :datetime
|
82
82
|
# note :text
|
83
83
|
# position :integer
|
84
|
-
# created_at :datetime
|
85
|
-
# updated_at :datetime
|
84
|
+
# created_at :datetime
|
85
|
+
# updated_at :datetime
|
86
86
|
# current_checkout_count :integer
|
87
87
|
#
|
88
|
-
|
@@ -51,8 +51,8 @@ end
|
|
51
51
|
# start_date :datetime
|
52
52
|
# end_date :datetime
|
53
53
|
# note :text
|
54
|
-
# created_at :datetime
|
55
|
-
# updated_at :datetime
|
54
|
+
# created_at :datetime
|
55
|
+
# updated_at :datetime
|
56
56
|
# started_at :datetime
|
57
57
|
# completed_at :datetime
|
58
58
|
# user_id :integer
|
@@ -21,6 +21,11 @@
|
|
21
21
|
<%= render 'manifestations/show_index', manifestation: checkout.item.manifestation -%>
|
22
22
|
(<%= link_to checkout.item.item_identifier, checkout.item -%>)
|
23
23
|
<% end %>
|
24
|
+
<% if checkout.shelf %>
|
25
|
+
<%= t('activerecord.models.shelf') %>:
|
26
|
+
<%= link_to checkout.shelf.display_name.localize, checkout.shelf %>
|
27
|
+
(<%= link_to checkout.shelf.library.display_name.localize, checkout.shelf.library %>)
|
28
|
+
<% end %>
|
24
29
|
</td>
|
25
30
|
<td>
|
26
31
|
<%= l(checkout.due_date, format: :only_date) -%>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
xml.instruct! :xml, :
|
1
|
+
xml.instruct! :xml, version: "1.0"
|
2
2
|
xml.rss('version' => "2.0",
|
3
3
|
'xmlns:opensearch' => "http://a9.com/-/spec/opensearch/1.1/",
|
4
4
|
'xmlns:atom' => "http://www.w3.org/2005/Atom"){
|
@@ -17,12 +17,12 @@ xml.rss('version' => "2.0",
|
|
17
17
|
xml.description "Next-L Enju, an open source integrated library system developed by Project Next-L"
|
18
18
|
xml.language @locale.to_s
|
19
19
|
xml.ttl "60"
|
20
|
-
#xml.tag! "atom:link", rel: 'search', :
|
20
|
+
#xml.tag! "atom:link", rel: 'search', type: 'application/opensearchdescription+xml', href: "http://#{request.host_with_port}/page/opensearch"
|
21
21
|
unless params[:query].blank?
|
22
22
|
xml.tag! "opensearch:totalResults", @count[:query_result]
|
23
23
|
xml.tag! "opensearch:startIndex", @checkouts.offset + 1
|
24
24
|
xml.tag! "opensearch:itemsPerPage", @checkouts.per_page
|
25
|
-
#xml.tag! "opensearch:Query", :
|
25
|
+
#xml.tag! "opensearch:Query", role: 'request', searchTerms: params[:query], startPage: (params[:page] || 1)
|
26
26
|
end
|
27
27
|
@checkouts.each do |checkout|
|
28
28
|
xml.item do
|