enju_trunk_frbr 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -27,14 +27,6 @@ load 'rails/tasks/engine.rake'
27
27
 
28
28
  Bundler::GemHelper.install_tasks
29
29
 
30
- require 'rake/testtask'
31
-
32
- Rake::TestTask.new(:test) do |t|
33
- t.libs << 'lib'
34
- t.libs << 'test'
35
- t.pattern = 'test/**/*_test.rb'
36
- t.verbose = false
37
- end
38
-
39
-
40
- task :default => :test
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec)
32
+ task :default => :spec
@@ -0,0 +1,19 @@
1
+ class CreateType < ActiveRecord::Base
2
+ attr_accessible :name, :display_name, :note, :position
3
+ include MasterModel
4
+ default_scope :order => 'create_types.position'
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: create_types
10
+ #
11
+ # id :integer not null, primary key
12
+ # name :string(255)
13
+ # display_name :text
14
+ # note :text
15
+ # position :integer
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+
@@ -7,7 +7,7 @@ class Exemplify < ActiveRecord::Base
7
7
  validates_uniqueness_of :item_id
8
8
  after_save :reindex
9
9
  after_destroy :reindex
10
- after_create :create_lending_policy
10
+ after_create :create_lending_policy, :unless => proc{SystemConfiguration.isWebOPAC}
11
11
 
12
12
  acts_as_list :scope => :manifestation_id
13
13
 
data/app/models/item.rb CHANGED
@@ -1,21 +1,46 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  class Item < ActiveRecord::Base
3
3
  scope :recent, where(['items.created_at >= ?', Time.zone.now.months_ago(1)])
4
- has_one :exemplify
4
+ has_one :exemplify, :dependent => :destroy
5
5
  has_one :manifestation, :through => :exemplify
6
6
 
7
7
  validates :item_identifier, :allow_blank => true, :uniqueness => true, :format => {:with => /\A[0-9A-Za-z_]+\Z/}
8
8
  validates :url, :url => true, :allow_blank => true, :length => {:maximum => 255}
9
+ validate :check_acquired_at_string
9
10
  validates_date :acquired_at, :allow_blank => true
10
11
 
11
12
  normalize_attributes :item_identifier
12
13
 
14
+ before_save :set_acquired_at
13
15
  attr_accessor :library_id, :manifestation_id, :use_restriction_id
14
16
 
15
17
  def title
16
18
  manifestation.try(:original_title)
17
19
  end
18
20
 
21
+ def check_acquired_at_string
22
+ return if self.acquired_at_string.blank?
23
+ case self.acquired_at_string
24
+ when /^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01]$)|^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])$/
25
+ dates = self.acquired_at_string =~ /^\d{8}$/ ? ["#{self.acquired_at_string[0..3]}", "#{self.acquired_at_string[4..5]}", "#{self.acquired_at_string[6..7]}"] : self.acquired_at_string.split('-')
26
+ date = Time.zone.parse(self.acquired_at_string) rescue nil
27
+ if date
28
+ dates[1] = "0#{dates[1]}" if dates[1].match(/^[1-9]$/)
29
+ dates[2] = "0#{dates[2]}" if dates[2].match(/^[1-9]$/)
30
+ if date.strftime("%m") == dates[1]
31
+ self.acquired_at_string = dates.join('-'); return
32
+ end
33
+ end
34
+ when /^\d{4}-(0?[1-9]|1[0-2])$/
35
+ dates = self.acquired_at_string.split('-')
36
+ dates[1] = "0#{dates[1]}" if dates[1].match(/^[1-9]$/)
37
+ self.acquired_at_string = dates.join('-'); return
38
+ when /^\d{4}$/
39
+ return
40
+ end
41
+ errors.add(:acquired_at_string)
42
+ end
43
+
19
44
  def select_acquired_at
20
45
  if self.acquired_at
21
46
  return self.acquired_at.strftime("%Y%m")
@@ -24,6 +49,26 @@ class Item < ActiveRecord::Base
24
49
  end
25
50
  end
26
51
 
52
+ def set_acquired_at
53
+ return if acquired_at_string.blank?
54
+ begin
55
+ date = Time.zone.parse("#{acquired_at_string}")
56
+ rescue ArgumentError
57
+ begin
58
+ date = Time.zone.parse("#{acquired_at_string}-01")
59
+ date = date.end_of_month
60
+ rescue ArgumentError
61
+ begin
62
+ date = Time.zone.parse("#{acquired_at_string}-12-01")
63
+ date = date.end_of_month
64
+ rescue ArgumentError
65
+ nil
66
+ end
67
+ end
68
+ end
69
+ self.acquired_at = date
70
+ end
71
+
27
72
  private
28
73
  def self.to_format(num)
29
74
  num.to_s.gsub(/(\d)(?=(\d{3})+(?!\d))/, '\1,')
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  class Manifestation < ActiveRecord::Base
2
3
  scope :periodical_master, where(:periodical_master => true)
3
4
  scope :periodical_children, where(:periodical_master => false)
@@ -13,7 +14,7 @@ class Manifestation < ActiveRecord::Base
13
14
  belongs_to :manifestation_relationship_type
14
15
 
15
16
  validates_presence_of :original_title
16
- validates :isbn, :uniqueness => true, :allow_blank => true, :unless => proc{|manifestation| manifestation.series_statement}
17
+ validates :isbn, :uniqueness => true, :allow_blank => true, :unless => proc{ |manifestation| manifestation.series_statement }, :if => proc{ SystemConfiguration.get("manifestation.isbn_unique") }
17
18
  validates :nbn, :uniqueness => true, :allow_blank => true
18
19
  validates :identifier, :uniqueness => true, :allow_blank => true
19
20
  validates :access_address, :url => true, :allow_blank => true, :length => {:maximum => 255}
@@ -121,15 +122,16 @@ class Manifestation < ActiveRecord::Base
121
122
 
122
123
  def set_date_of_publication
123
124
  return if pub_date.blank?
125
+ date = pub_date.gsub(/(\.|\,|\/)/, '-')
124
126
  begin
125
- date = Time.zone.parse("#{pub_date}")
127
+ date = Time.zone.parse("#{date}")
126
128
  rescue ArgumentError
127
129
  begin
128
- date = Time.zone.parse("#{pub_date}-01")
130
+ date = Time.zone.parse("#{date}-01")
129
131
  date = date.end_of_month
130
132
  rescue ArgumentError
131
133
  begin
132
- date = Time.zone.parse("#{pub_date}-12-01")
134
+ date = Time.zone.parse("#{date}-12-01")
133
135
  date = date.end_of_month
134
136
  rescue ArgumentError
135
137
  nil
@@ -140,7 +142,11 @@ class Manifestation < ActiveRecord::Base
140
142
  end
141
143
 
142
144
  def self.cached_numdocs
143
- Rails.cache.fetch("manifestation_search_total"){Manifestation.search.total}
145
+ Rails.cache.fetch("manifestation_search_total"){
146
+ Manifestation.search do
147
+ with(:periodical_master, false)
148
+ end.total
149
+ }
144
150
  end
145
151
 
146
152
  def clear_cached_numdocs
@@ -153,8 +159,10 @@ class Manifestation < ActiveRecord::Base
153
159
 
154
160
  def number_of_pages
155
161
  if self.start_page and self.end_page
156
- if self.start_page.to_s.match(/\D/).nil? and self.end_page.to_s.match(/\D/).nil?
157
- page = self.end_page.to_i - self.start_page.to_i + 1
162
+ if self.start_page.present? and self.end_page.present?
163
+ if self.start_page.to_s.match(/\D/).nil? and self.end_page.to_s.match(/\D/).nil?
164
+ page = self.end_page.to_i - self.start_page.to_i + 1
165
+ end
158
166
  end
159
167
  end
160
168
  end
@@ -171,16 +179,28 @@ class Manifestation < ActiveRecord::Base
171
179
  end
172
180
 
173
181
  def set_new_serial_number
174
- self.serial_number = self.serial_number_string.gsub(/\D/, "").to_i if self.serial_number_string rescue nil
182
+ if self.serial_number_string.blank? or self.serial_number_string.tr('0-9','0-9').match(/\D/)
183
+ self.serial_number = nil
184
+ else
185
+ self.serial_number = self.serial_number_string.tr('0-9','0-9').to_i
186
+ end
175
187
  end
176
188
 
177
189
  def set_volume_issue_number
178
- self.volume_number = (self.volume_number_string.gsub(/\D/, "")).to_i if self.volume_number_string rescue nil
179
- self.issue_number = self.issue_number_string.gsub(/\D/, "").to_i if self.issue_number_string rescue nil
180
-
181
- if self.volume_number && self.volume_number.to_s.length > 9
190
+ if self.volume_number_string.blank? or self.volume_number_string.tr('0-9','0-9').match(/\D/)
182
191
  self.volume_number = nil
192
+ else
193
+ self.volume_number = self.volume_number_string.tr('0-9','0-9').to_i
194
+ end
195
+
196
+ if self.issue_number_string.blank? or self.issue_number_string.tr('0-9','0-9').match(/\D/)
197
+ self.issue_number = nil
198
+ else
199
+ self.issue_number = self.issue_number_string.tr('0-9','0-9').to_i
183
200
  end
201
+ #if self.volume_number && self.volume_number.to_s.length > 9
202
+ # self.volume_number = nil
203
+ #end
184
204
  end
185
205
 
186
206
  def title
@@ -0,0 +1,19 @@
1
+ class ProduceType < ActiveRecord::Base
2
+ attr_accessible :name, :display_name, :note, :position
3
+ include MasterModel
4
+ default_scope :order => 'produce_types.position'
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: produce_types
10
+ #
11
+ # id :integer not null, primary key
12
+ # name :string(255)
13
+ # display_name :text
14
+ # note :text
15
+ # position :integer
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+
@@ -0,0 +1,19 @@
1
+ class RealizeType < ActiveRecord::Base
2
+ attr_accessible :name, :display_name, :note, :position
3
+ include MasterModel
4
+ default_scope :order => 'realize_types.position'
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: realize_types
10
+ #
11
+ # id :integer not null, primary key
12
+ # name :string(255)
13
+ # display_name :text
14
+ # note :text
15
+ # position :integer
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+
@@ -1,5 +1,12 @@
1
+ require 'validates_timeliness'
2
+ require 'kaminari'
3
+
1
4
  module EnjuTrunkFrbr
2
5
  class Engine < ::Rails::Engine
3
6
  isolate_namespace EnjuTrunkFrbr
7
+ config.generators do |g|
8
+ g.test_framework :rspec
9
+ g.integration_tool :rspec
10
+ end
4
11
  end
5
12
  end
@@ -1,3 +1,3 @@
1
1
  module EnjuTrunkFrbr
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enju_trunk_frbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-24 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '1.1'
53
+ version: '2.0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,39 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.1'
61
+ version: '2.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: enju_core
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: validates_timeliness
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  - !ruby/object:Gem::Dependency
63
95
  name: sqlite3
64
96
  requirement: !ruby/object:Gem::Requirement
@@ -116,22 +148,25 @@ extra_rdoc_files: []
116
148
  files:
117
149
  - app/assets/stylesheets/enju_trunk_frbr/application.css
118
150
  - app/assets/javascripts/enju_trunk_frbr/application.js
119
- - app/controllers/enju_trunk_frbr/application_controller.rb
120
151
  - app/helpers/enju_trunk_frbr/application_helper.rb
152
+ - app/controllers/enju_trunk_frbr/application_controller.rb
121
153
  - app/views/layouts/enju_trunk_frbr/application.html.erb
122
- - app/models/exemplify.rb
154
+ - app/models/create_type.rb
155
+ - app/models/produce_type.rb
156
+ - app/models/produce.rb
123
157
  - app/models/manifestation.rb
158
+ - app/models/exemplify.rb
124
159
  - app/models/realize.rb
125
- - app/models/manifestation_relationship_type.rb
126
160
  - app/models/create.rb
127
- - app/models/manifestation_relationship.rb
128
- - app/models/produce.rb
161
+ - app/models/realize_type.rb
129
162
  - app/models/item.rb
163
+ - app/models/manifestation_relationship.rb
164
+ - app/models/manifestation_relationship_type.rb
130
165
  - config/routes.rb
131
166
  - lib/tasks/enju_trunk_frbr_tasks.rake
132
- - lib/enju_trunk_frbr.rb
133
- - lib/enju_trunk_frbr/engine.rb
134
167
  - lib/enju_trunk_frbr/version.rb
168
+ - lib/enju_trunk_frbr/engine.rb
169
+ - lib/enju_trunk_frbr.rb
135
170
  - MIT-LICENSE
136
171
  - Rakefile
137
172
  - README.rdoc
@@ -149,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
184
  version: '0'
150
185
  segments:
151
186
  - 0
152
- hash: -4230465122048120083
187
+ hash: 3283277806184863409
153
188
  required_rubygems_version: !ruby/object:Gem::Requirement
154
189
  none: false
155
190
  requirements:
@@ -158,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
193
  version: '0'
159
194
  segments:
160
195
  - 0
161
- hash: -4230465122048120083
196
+ hash: 3283277806184863409
162
197
  requirements: []
163
198
  rubyforge_project:
164
199
  rubygems_version: 1.8.23