enju_trunk_frbr 1.0.0 → 1.1.0

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/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