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 +3 -11
- data/app/models/create_type.rb +19 -0
- data/app/models/exemplify.rb +1 -1
- data/app/models/item.rb +46 -1
- data/app/models/manifestation.rb +32 -12
- data/app/models/produce_type.rb +19 -0
- data/app/models/realize_type.rb +19 -0
- data/lib/enju_trunk_frbr/engine.rb +7 -0
- data/lib/enju_trunk_frbr/version.rb +1 -1
- metadata +48 -13
data/Rakefile
CHANGED
@@ -27,14 +27,6 @@ load 'rails/tasks/engine.rake'
|
|
27
27
|
|
28
28
|
Bundler::GemHelper.install_tasks
|
29
29
|
|
30
|
-
require '
|
31
|
-
|
32
|
-
|
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
|
+
|
data/app/models/exemplify.rb
CHANGED
@@ -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,')
|
data/app/models/manifestation.rb
CHANGED
@@ -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("#{
|
127
|
+
date = Time.zone.parse("#{date}")
|
126
128
|
rescue ArgumentError
|
127
129
|
begin
|
128
|
-
date = Time.zone.parse("#{
|
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("#{
|
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"){
|
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.
|
157
|
-
|
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.
|
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.
|
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
|
+
|
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.
|
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-
|
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: '
|
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: '
|
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/
|
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/
|
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:
|
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:
|
196
|
+
hash: 3283277806184863409
|
162
197
|
requirements: []
|
163
198
|
rubyforge_project:
|
164
199
|
rubygems_version: 1.8.23
|