enju_circulation 0.1.0.pre24 → 0.1.0.pre25

Sign up to get free protection for your applications and to get access to all the features.
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