enju_circulation 0.1.0.pre24 → 0.1.0.pre25

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fac9ff83b2344dcf7c20a1e381f24294a5dc68a0
4
- data.tar.gz: 51113317a9e752e27525e37abb15aa498fca376b
3
+ metadata.gz: e586c12f6f5f99c3790e5cb3256326c6d1fe88e6
4
+ data.tar.gz: ab9630c6e9ab4d9e73435cc0bcb84eb89e39b0c2
5
5
  SHA512:
6
- metadata.gz: 526ea5eedb835f1cae8d66b016b36e3c5b6b5c921f2ace78f0ab75347a039b79e1c0f84f8b4234db7143e4226f1749dcfd5f532d58c0d8eb998e3cb41552d9e0
7
- data.tar.gz: 61919b852389c473f886e77f2f77a1db5494e1c1cf095beefae291c46014ff8b528756cacd531c4f818a0dbdcec92d30ae5f066ecdf82f02eeab1472700cace9
6
+ metadata.gz: 8e01a8153d2cb1eb1511f24fc3ad5cf3683b912414e28754ad8dd1bc9c4b44c5a18bdb381eac2d0eeb664d90d72b9db30acd4ba8c973051926864092f093126d
7
+ data.tar.gz: 8591508a0c7f9e479fdc258f411e83c9d8519fc0270a8030b87e85c66d7b36ec00f7913a6fdb5503931f1c05b73e7366cf649adaa2ba1194896c438c6affa81f
@@ -134,27 +134,9 @@ class CheckoutsController < ApplicationController
134
134
  # PUT /checkouts/1
135
135
  # PUT /checkouts/1.json
136
136
  def update
137
- if @checkout.reserved?
138
- flash[:notice] = t('checkout.this_item_is_reserved')
139
- redirect_to edit_checkout_url(@checkout)
140
- return
141
- end
142
- if @checkout.over_checkout_renewal_limit?
143
- flash[:notice] = t('checkout.excessed_renewal_limit')
144
- redirect_to edit_checkout_url(@checkout)
145
- return
146
- end
147
- if @checkout.overdue?
148
- flash[:notice] = t('checkout.you_have_overdue_item')
149
- unless current_user.has_role?('Librarian')
150
- redirect_to edit_checkout_url(@checkout)
151
- return
152
- end
153
- end
154
- @checkout.reload
155
- @checkout.checkout_renewal_count += 1
156
137
  @checkout.assign_attributes(params[:checkout])
157
138
  @checkout.due_date = @checkout.due_date.end_of_day
139
+ @checkout.checkout_renewal_count += 1
158
140
 
159
141
  respond_to do |format|
160
142
  if @checkout.save
@@ -171,6 +153,7 @@ class CheckoutsController < ApplicationController
171
153
  # DELETE /checkouts/1.json
172
154
  def destroy
173
155
  user = @checkout.user
156
+ @checkout.operator = current_user
174
157
  @checkout.user_id = nil
175
158
  @checkout.save!
176
159
 
@@ -35,12 +35,13 @@ class Checkin < ActiveRecord::Base
35
35
  message = ''
36
36
  Checkin.transaction do
37
37
  checkouts = Checkout.not_returned.where(:item_id => item_id).select(
38
- [:id, :item_id, :user_id, :basket_id, :due_date, :lock_version, :created_at]
38
+ [:id, :item_id, :user_id, :basket_id, :due_date, :lock_version, :created_at, :checkout_renewal_count]
39
39
  )
40
40
  item.checkin!
41
41
  checkouts.each do |checkout|
42
42
  # TODO: ILL時の処理
43
43
  checkout.checkin = self
44
+ checkout.operator = current_user
44
45
  unless checkout.user.try(:save_checkout_history)
45
46
  checkout.user = nil
46
47
  end
@@ -21,6 +21,7 @@ class Checkout < ActiveRecord::Base
21
21
  validates_presence_of :item_id, :basket_id, :due_date
22
22
  validates_uniqueness_of :item_id, :scope => [:basket_id, :user_id]
23
23
  validate :is_not_checked?, :on => :create
24
+ validate :renewable?, :on => :update
24
25
  validates_date :due_date
25
26
 
26
27
  searchable do
@@ -43,6 +44,8 @@ class Checkout < ActiveRecord::Base
43
44
  end
44
45
  end
45
46
 
47
+ attr_accessor :operator
48
+
46
49
  paginates_per 10
47
50
 
48
51
  def is_not_checked?
@@ -52,13 +55,16 @@ class Checkout < ActiveRecord::Base
52
55
  end
53
56
  end
54
57
 
55
- def checkout_renewable?
56
- return false if overdue?
57
- if item
58
- return false if over_checkout_renewal_limit?
59
- return false if reserved?
58
+ def renewable?
59
+ if !operator and overdue?
60
+ errors[:base] << I18n.t('checkout.you_have_overdue_item')
61
+ end
62
+ if !operator and reserved?
63
+ errors[:base] << I18n.t('checkout.this_item_is_reserved')
64
+ end
65
+ if !operator and over_checkout_renewal_limit?
66
+ errors[:base] << I18n.t('checkout.excessed_renewal_limit')
60
67
  end
61
- true
62
68
  end
63
69
 
64
70
  def reserved?
@@ -67,7 +73,8 @@ class Checkout < ActiveRecord::Base
67
73
  end
68
74
 
69
75
  def over_checkout_renewal_limit?
70
- return true if item.checkout_status(user).checkout_renewal_limit <= checkout_renewal_count
76
+ return nil unless item.checkout_status(user)
77
+ return true if item.checkout_status(user).checkout_renewal_limit < checkout_renewal_count
71
78
  end
72
79
 
73
80
  def overdue?
@@ -0,0 +1,9 @@
1
+ <div class="field">
2
+ <%= f.label t('activerecord.models.carrier_type_has_checkout_type') %><br />
3
+ <%= f.fields_for :carrier_type_has_checkout_types do |checkout_form| %>
4
+ <%= checkout_form.label :checkout_type_id -%>
5
+ <%= checkout_form.select(:checkout_type_id, @checkout_types.collect{|c| [c.display_name.localize, c.id]}) %>
6
+ <%= checkout_form.link_to_remove t('page.remove'), :confirm => t('page.are_you_sure') %>
7
+ <% end %>
8
+ <p><%= f.link_to_add t('page.add'), :carrier_type_has_checkout_types %></p>
9
+ </div>
@@ -0,0 +1,23 @@
1
+ <div class="field">
2
+ <%= f.label t('activerecord.models.user_group_has_checkout_type') %><br />
3
+ <%= f.fields_for :user_group_has_checkout_types do |checkout_form| %>
4
+ <%= checkout_form.label :checkout_type_id -%>
5
+ <%= checkout_form.select(:checkout_type_id, @checkout_types.collect{|c| [c.display_name.localize, c.id]}) %>
6
+ <%= checkout_form.link_to_remove t('page.remove'), :confirm => t('page.are_you_sure') %>
7
+ <br />
8
+ <%= checkout_form.label :checkout_limit -%>
9
+ <%= checkout_form.text_field :checkout_limit, :class => 'resource_integer' %>
10
+ <%= checkout_form.label :checkout_period -%>
11
+ <%= checkout_form.text_field :checkout_period, :class => 'resource_integer' %>
12
+ <%= checkout_form.label :checkout_renewal_limit -%>
13
+ <%= checkout_form.text_field :checkout_renewal_limit, :class => 'resource_integer' %>
14
+ <br />
15
+ <%= checkout_form.label :reservation_limit -%>
16
+ <%= checkout_form.text_field :reservation_limit, :class => 'resource_integer' %>
17
+ <%= checkout_form.label :reservation_expired_period -%>
18
+ <%= checkout_form.text_field :reservation_expired_period, :class => 'resource_integer' %>
19
+ <%= checkout_form.label :set_due_date_before_closing_day -%>
20
+ <%= checkout_form.check_box :set_due_date_before_closing_day %>
21
+ <% end %>
22
+ <p><%= f.link_to_add t('page.add'), :user_group_has_checkout_types %></p>
23
+ </div>
@@ -80,6 +80,7 @@ en:
80
80
  carrier_type_has_checkout_type:
81
81
  note: Note
82
82
  position: Position
83
+ checkout_type_id: Checkout type
83
84
  manifestation_checkout_stat:
84
85
  start_date: Start date
85
86
  end_date: End date
@@ -20,7 +20,7 @@ ja:
20
20
  reserve_stat_has_manifestation: 資料別予約統計
21
21
  reserve_stat_has_user: 利用者別予約統計
22
22
  user_group_has_checkout_type: 利用者グループと貸出区分の関係
23
- carrier_type_has_checkout_type: 資料の種類と貸出区分の関係
23
+ carrier_type_has_checkout_type: 資料の形態と貸出区分の関係
24
24
 
25
25
  attributes:
26
26
  basket:
@@ -78,6 +78,7 @@ ja:
78
78
  carrier_type_has_checkout_type:
79
79
  note: 注記
80
80
  position: 位置
81
+ checkout_type_id: 貸出種別
81
82
  manifestation_checkout_stat:
82
83
  start_date: 開始日
83
84
  end_date: 終了日
@@ -9,6 +9,8 @@ module EnjuCirculation
9
9
  has_many :user_group_has_checkout_types, :dependent => :destroy
10
10
  has_many :checkout_types, :through => :user_group_has_checkout_types, :order => :position
11
11
  has_many :lending_policies
12
+ attr_accessible :user_group_has_checkout_types_attributes
13
+ accepts_nested_attributes_for :user_group_has_checkout_types, :allow_destroy => true, :reject_if => :all_blank
12
14
 
13
15
  validates_numericality_of :number_of_day_to_notify_due_date,
14
16
  :number_of_day_to_notify_overdue,
@@ -1,3 +1,3 @@
1
1
  module EnjuCirculation
2
- VERSION = "0.1.0.pre24"
2
+ VERSION = "0.1.0.pre25"
3
3
  end
@@ -320,8 +320,8 @@ describe CheckoutsController do
320
320
 
321
321
  it "should update checkout item that is reserved" do
322
322
  put :update, :id => 8, :checkout => { }
323
- flash[:notice].should eq I18n.t('checkout.this_item_is_reserved')
324
- response.should redirect_to edit_checkout_url(assigns(:checkout))
323
+ assigns(:checkout).errors[:base].include?(I18n.t('checkout.this_item_is_reserved')).should be_true
324
+ response.should be_success
325
325
  end
326
326
 
327
327
  it "should update other user's checkout" do
@@ -371,8 +371,8 @@ describe CheckoutsController do
371
371
 
372
372
  it "should not update checkout already renewed" do
373
373
  put :update, :id => 9, :checkout => { }
374
- flash[:notice].should eq I18n.t('checkout.excessed_renewal_limit')
375
- response.should redirect_to edit_checkout_url(assigns(:checkout))
374
+ assigns(:checkout).errors[:base].include?(I18n.t('checkout.excessed_renewal_limit')).should be_true
375
+ response.should be_success
376
376
  end
377
377
 
378
378
  it "should update my checkout" do
Binary file
@@ -5,9 +5,11 @@ describe Checkout do
5
5
  #pending "add some examples to (or delete) #{__FILE__}"
6
6
  fixtures :all
7
7
 
8
- it "should respond to checkout_renewable?" do
9
- checkouts(:checkout_00001).checkout_renewable?.should be_true
10
- checkouts(:checkout_00002).checkout_renewable?.should be_false
8
+ it "should respond to renewable?" do
9
+ checkouts(:checkout_00001).save
10
+ checkouts(:checkout_00001).errors[:base].should eq []
11
+ checkouts(:checkout_00002).save
12
+ checkouts(:checkout_00002).errors[:base].should eq [I18n.t('checkout.this_item_is_reserved')]
11
13
  end
12
14
 
13
15
  it "should respond to reserved?" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enju_circulation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre24
4
+ version: 0.1.0.pre25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kosuke Tanabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-04 00:00:00.000000000 Z
11
+ date: 2013-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: enju_core
@@ -306,6 +306,7 @@ files:
306
306
  - app/views/carrier_type_has_checkout_types/index.html.erb
307
307
  - app/views/carrier_type_has_checkout_types/new.html.erb
308
308
  - app/views/carrier_type_has_checkout_types/show.html.erb
309
+ - app/views/carrier_types/_checkout_form.html.erb
309
310
  - app/views/checked_items/_checked_item.html.erb
310
311
  - app/views/checked_items/_checkout.html.erb
311
312
  - app/views/checked_items/_list.html.erb
@@ -416,6 +417,7 @@ files:
416
417
  - app/views/user_group_has_checkout_types/index.html.erb
417
418
  - app/views/user_group_has_checkout_types/new.html.erb
418
419
  - app/views/user_group_has_checkout_types/show.html.erb
420
+ - app/views/user_groups/_checkout_form.html.erb
419
421
  - app/views/user_reserve_stats/_form.html.erb
420
422
  - app/views/user_reserve_stats/edit.html.erb
421
423
  - app/views/user_reserve_stats/index.html.erb
@@ -635,16 +637,16 @@ files:
635
637
  - spec/dummy/solr/conf/spellings.txt
636
638
  - spec/dummy/solr/conf/stopwords.txt
637
639
  - spec/dummy/solr/conf/synonyms.txt
638
- - spec/dummy/solr/data/test/index/_1mh.fdt
639
- - spec/dummy/solr/data/test/index/_1mh.fdx
640
- - spec/dummy/solr/data/test/index/_1mh.fnm
641
- - spec/dummy/solr/data/test/index/_1mh.frq
642
- - spec/dummy/solr/data/test/index/_1mh.nrm
643
- - spec/dummy/solr/data/test/index/_1mh.prx
644
- - spec/dummy/solr/data/test/index/_1mh.tii
645
- - spec/dummy/solr/data/test/index/_1mh.tis
640
+ - spec/dummy/solr/data/test/index/_1yy.fdt
641
+ - spec/dummy/solr/data/test/index/_1yy.fdx
642
+ - spec/dummy/solr/data/test/index/_1yy.fnm
643
+ - spec/dummy/solr/data/test/index/_1yy.frq
644
+ - spec/dummy/solr/data/test/index/_1yy.nrm
645
+ - spec/dummy/solr/data/test/index/_1yy.prx
646
+ - spec/dummy/solr/data/test/index/_1yy.tii
647
+ - spec/dummy/solr/data/test/index/_1yy.tis
646
648
  - spec/dummy/solr/data/test/index/segments.gen
647
- - spec/dummy/solr/data/test/index/segments_391
649
+ - spec/dummy/solr/data/test/index/segments_3xz
648
650
  - spec/dummy/solr/data/test/spellchecker/segments.gen
649
651
  - spec/dummy/solr/data/test/spellchecker/segments_1
650
652
  - spec/factories/basket.rb
@@ -910,16 +912,16 @@ test_files:
910
912
  - spec/dummy/solr/conf/spellings.txt
911
913
  - spec/dummy/solr/conf/stopwords.txt
912
914
  - spec/dummy/solr/conf/synonyms.txt
913
- - spec/dummy/solr/data/test/index/_1mh.fdt
914
- - spec/dummy/solr/data/test/index/_1mh.fdx
915
- - spec/dummy/solr/data/test/index/_1mh.fnm
916
- - spec/dummy/solr/data/test/index/_1mh.frq
917
- - spec/dummy/solr/data/test/index/_1mh.nrm
918
- - spec/dummy/solr/data/test/index/_1mh.prx
919
- - spec/dummy/solr/data/test/index/_1mh.tii
920
- - spec/dummy/solr/data/test/index/_1mh.tis
915
+ - spec/dummy/solr/data/test/index/_1yy.fdt
916
+ - spec/dummy/solr/data/test/index/_1yy.fdx
917
+ - spec/dummy/solr/data/test/index/_1yy.fnm
918
+ - spec/dummy/solr/data/test/index/_1yy.frq
919
+ - spec/dummy/solr/data/test/index/_1yy.nrm
920
+ - spec/dummy/solr/data/test/index/_1yy.prx
921
+ - spec/dummy/solr/data/test/index/_1yy.tii
922
+ - spec/dummy/solr/data/test/index/_1yy.tis
921
923
  - spec/dummy/solr/data/test/index/segments.gen
922
- - spec/dummy/solr/data/test/index/segments_391
924
+ - spec/dummy/solr/data/test/index/segments_3xz
923
925
  - spec/dummy/solr/data/test/spellchecker/segments.gen
924
926
  - spec/dummy/solr/data/test/spellchecker/segments_1
925
927
  - spec/factories/basket.rb