onoma 0.2.2 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +3 -0
- data/.gitlab-ci.yml +14 -0
- data/Gemfile +2 -0
- data/Rakefile +3 -6
- data/bin/rake +29 -0
- data/config/locales/arb.yml +77 -293
- data/config/locales/cmn.yml +69 -193
- data/config/locales/deu.yml +61 -1113
- data/config/locales/eng.yml +3146 -2987
- data/config/locales/fra.yml +629 -478
- data/config/locales/ita.yml +63 -1168
- data/config/locales/jpn.yml +80 -232
- data/config/locales/por.yml +63 -975
- data/config/locales/spa.yml +70 -616
- data/db/migrate/20170904223101_add_cultivable_zone_registry.xml +4 -0
- data/db/migrate/20171106085357_update_account_numbers.xml +431 -0
- data/db/migrate/20171212081801_add_fiscal_positions.xml +12 -0
- data/db/migrate/20180408190101_add_new_plant_variants.xml +7 -0
- data/db/migrate/20180409130101_add_common_crop.xml +4 -0
- data/db/migrate/20180418085027_add-hour-counter-indicator.xml +9 -0
- data/db/migrate/20180709134310_add_centralizing_field_to_accounts.xml +22 -0
- data/db/migrate/20180711093131_review_all_accounts_number_and_fallbacks.xml +431 -0
- data/db/migrate/20180806080646_edit_centralizing_field_accounts.xml +17 -0
- data/db/migrate/20180814184001_add_missing_categories.xml +12 -0
- data/db/migrate/20180907160001_edit_accounts_to_unlock_first_run.xml +21 -0
- data/db/migrate/20181004220301_add_journal_ledger.xml +4 -0
- data/db/migrate/20181205162401_add_intra_vat.xml +6 -0
- data/db/migrate/20181213153405_fix_accounting_systems.xml +7 -0
- data/db/migrate/20181217155149_fiscal_position_refers_to_accounting_system.xml +10 -0
- data/db/migrate/20181217173101_fiscal_position_reference_typo.xml +4 -0
- data/db/migrate/20190315154040_add_suspense_account.xml +4 -0
- data/db/migrate/20190326110849_add_asset_fixable_to_product_nature_categories.xml +25 -0
- data/db/migrate/20190326135443_change_product_nature_category_cultivable_zone_into_land.xml +21 -0
- data/db/migrate/20190329133808_change_land_fixed_assets_account_usage.xml +7 -0
- data/db/migrate/20190405120711_delete_land_sales_account_and_assign_land_parcels_sell_revenues_to_land.xml +5 -0
- data/db/migrate/20190412071057_add_new_fixed_assets_andn_depreciable_accounts.xml +22 -0
- data/db/migrate/20190509092804_add_account_exceptional_depreciations_imputations_expenses_for_fixed_assets.xml +4 -0
- data/db/migrate/20190514084753_add_approved_input_volume.xml +9 -0
- data/db/migrate/20190520072403_add_new_accounts.xml +58 -0
- data/db/migrate/20190521170601_add_missing_taxes.xml +7 -0
- data/db/migrate/20190611101014_change_deductible_vat_account.xml +5 -0
- data/db/migrate/20190620092151_fix_conflicts_in_new_accounts.xml +6 -0
- data/db/migrate/20190625152636_change_mixture_seed_product_nature_variant.xml +4 -0
- data/db/migrate/20190718130243_remove_services_expenses.xml +5 -0
- data/db/migrate/20190801142431_remove_accounts_from_pcg82.xml +5 -0
- data/db/migrate/20190807125202_add_nature_to_product_natures.xml +326 -0
- data/db/migrate/20190823091727_fix-cubic-meter-per-hectare-symbol.xml +5 -0
- data/db/migrate/20190909150402_add_staff_supply_stock_account.xml +4 -0
- data/db/migrate/20190913102036_add_caliber_indicator.xml +4 -0
- data/db/migrate/20190917161215_add_missing_mass_area_density_units.xml +21 -0
- data/db/migrate/20190917161216_update_quintal_symbol.xml +4 -0
- data/db/migrate/20190917161217_adds_more_info_to_units.xml +133 -0
- data/db/migrate/20190918074757_add_new_accounts.xml +8 -0
- data/db/migrate/20191001122750_add_accounts_fixed_assets_related.xml +10 -0
- data/db/migrate/20191016152118_add_missing_document_templates.xml +6 -0
- data/db/migrate/20191028175001_add_short_balance_sheet.xml +4 -0
- data/db/migrate/20191029131921_add_vine_equipments.xml +117 -0
- data/db/migrate/20191112132413_remove_roller_from_product_natures.xml +5 -0
- data/db/migrate/20191113134626_add_nature_to_new_product_natures.xml +11 -0
- data/db/migrate/20191125133327_add_missing_units_and_indicators.xml +5 -0
- data/db/migrate/20200107095554_add_signed_field_to_document_nature.xml +9 -0
- data/db/migrate/20200305160358_add_varieties_for_phytosanitary.xml +11 -0
- data/db/migrate/20200421123503_add_type_to_categories_and_variants.xml +1136 -0
- data/db/migrate/20200514092205_add_liter_per_hectoliter_unit.xml +4 -0
- data/db/migrate/20200722091859_triticale_derivative_of.xml +5 -0
- data/db/reference.xml +1934 -1676
- data/lib/onoma.rb +82 -24
- data/lib/onoma/item.rb +19 -3
- data/lib/onoma/migration/actions/base.rb +1 -5
- data/lib/onoma/migration/actions/item_change.rb +1 -5
- data/lib/onoma/migration/actions/item_creation.rb +2 -6
- data/lib/onoma/migration/actions/item_merging.rb +1 -5
- data/lib/onoma/migration/actions/item_removal.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_change.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_creation.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_removal.rb +1 -5
- data/lib/onoma/migration/actions/property_creation.rb +4 -4
- data/lib/onoma/migration/base.rb +38 -0
- data/lib/onoma/migrator.rb +13 -0
- data/lib/onoma/migrator/reference.rb +71 -0
- data/lib/onoma/migrator/translation.rb +76 -0
- data/lib/onoma/models/ability.rb +4 -0
- data/lib/onoma/models/account.rb +4 -0
- data/lib/onoma/models/accounting_system.rb +12 -0
- data/lib/onoma/models/activity_family.rb +4 -0
- data/lib/onoma/models/administrative_area.rb +4 -0
- data/lib/onoma/models/administrative_area_nature.rb +4 -0
- data/lib/onoma/models/analysis_nature.rb +4 -0
- data/lib/onoma/models/animal_life_state.rb +4 -0
- data/lib/onoma/models/cation_exchange_capacity_analysis_method.rb +4 -0
- data/lib/onoma/models/certification.rb +4 -0
- data/lib/onoma/models/certification_label.rb +4 -0
- data/lib/onoma/models/chemical_classification.rb +4 -0
- data/lib/onoma/models/chemical_element.rb +4 -0
- data/lib/onoma/models/country.rb +4 -0
- data/lib/onoma/models/crop_set.rb +4 -0
- data/lib/onoma/models/currency.rb +4 -0
- data/lib/onoma/models/delivery_mode.rb +4 -0
- data/lib/onoma/models/dimension.rb +4 -0
- data/lib/onoma/models/document_category.rb +4 -0
- data/lib/onoma/models/document_nature.rb +4 -0
- data/lib/onoma/models/entity_link_nature.rb +4 -0
- data/lib/onoma/models/event_nature.rb +4 -0
- data/lib/onoma/models/fence_perimeter.rb +4 -0
- data/lib/onoma/models/figure.rb +4 -0
- data/lib/onoma/models/fiscal_position.rb +4 -0
- data/lib/onoma/models/guide_nature.rb +4 -0
- data/lib/onoma/models/identifier_nature.rb +4 -0
- data/lib/onoma/models/indicator.rb +7 -0
- data/lib/onoma/models/issue_nature.rb +4 -0
- data/lib/onoma/models/land.rb +4 -0
- data/lib/onoma/models/language.rb +4 -0
- data/lib/onoma/models/mammalia_birth_condition.rb +4 -0
- data/lib/onoma/models/mammalia_reproduction_state.rb +4 -0
- data/lib/onoma/models/molecule.rb +4 -0
- data/lib/onoma/models/net_service.rb +4 -0
- data/lib/onoma/models/opportunity_origin.rb +4 -0
- data/lib/onoma/models/phosphorus_analysis_method.rb +4 -0
- data/lib/onoma/models/plant_life_state.rb +4 -0
- data/lib/onoma/models/plant_reproduction_state.rb +4 -0
- data/lib/onoma/models/plants_growth_level.rb +4 -0
- data/lib/onoma/models/procedure_action.rb +4 -0
- data/lib/onoma/models/procedure_category.rb +4 -0
- data/lib/onoma/models/procedure_nature.rb +4 -0
- data/lib/onoma/models/procedure_role.rb +4 -0
- data/lib/onoma/models/product_nature.rb +4 -0
- data/lib/onoma/models/product_nature_category.rb +4 -0
- data/lib/onoma/models/product_nature_variant.rb +4 -0
- data/lib/onoma/models/production_nature.rb +4 -0
- data/lib/onoma/models/production_system.rb +4 -0
- data/lib/onoma/models/production_usage.rb +4 -0
- data/lib/onoma/models/residue_elimination_method.rb +4 -0
- data/lib/onoma/models/role.rb +4 -0
- data/lib/onoma/models/running_cost.rb +4 -0
- data/lib/onoma/models/sex.rb +4 -0
- data/lib/onoma/models/soil_cultural_state.rb +4 -0
- data/lib/onoma/models/soil_nature.rb +4 -0
- data/lib/onoma/models/spatial_reference_system.rb +4 -0
- data/lib/onoma/models/tax.rb +4 -0
- data/lib/onoma/models/tax_nature.rb +4 -0
- data/lib/onoma/models/unit.rb +4 -0
- data/lib/onoma/models/variety.rb +31 -0
- data/lib/onoma/models/working_set.rb +4 -0
- data/lib/onoma/nomenclature.rb +19 -23
- data/lib/onoma/{database.rb → nomenclature_set.rb} +25 -57
- data/lib/onoma/{property.rb → property_nature.rb} +5 -8
- data/lib/onoma/record/base.rb +15 -0
- data/lib/onoma/reflection.rb +3 -3
- data/lib/onoma/version.rb +3 -1
- data/onoma.gemspec +19 -20
- metadata +156 -39
- data/lib/onoma/migration.rb +0 -122
- data/lib/onoma/migration/actions.rb +0 -9
@@ -0,0 +1,31 @@
|
|
1
|
+
module Onoma
|
2
|
+
class Variety < Onoma::Record::Base
|
3
|
+
TOPLEVEL_VARIETIES = %w[bioproduct immatter matter product product_group].freeze
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def parent_variety(variety)
|
7
|
+
v = find(variety)
|
8
|
+
|
9
|
+
if v.nil?
|
10
|
+
nil
|
11
|
+
elsif (toplevel = toplevel_parent(v)).present?
|
12
|
+
toplevel.name
|
13
|
+
else
|
14
|
+
v.name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def toplevel_parent(variety)
|
19
|
+
ancestors(variety).last
|
20
|
+
end
|
21
|
+
|
22
|
+
def ancestors(variety)
|
23
|
+
if variety.parent.nil? || TOPLEVEL_VARIETIES.include?(variety.parent.name)
|
24
|
+
[]
|
25
|
+
else
|
26
|
+
[variety.parent, *ancestors(variety.parent)]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/onoma/nomenclature.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'bigdecimal'
|
2
|
-
require 'bigdecimal/util'
|
3
|
-
|
4
1
|
module Onoma
|
5
2
|
# This class represents a nomenclature
|
6
3
|
class Nomenclature
|
@@ -12,10 +9,10 @@ module Onoma
|
|
12
9
|
def initialize(name, options = {})
|
13
10
|
@name = name.to_sym
|
14
11
|
@set = options.delete(:set)
|
15
|
-
@items =
|
12
|
+
@items = HashWithIndifferentAccess.new
|
16
13
|
@forest_right = 0
|
17
14
|
@roots = []
|
18
|
-
@properties =
|
15
|
+
@properties = {}.with_indifferent_access
|
19
16
|
@translateable = !options[:translateable].is_a?(FalseClass)
|
20
17
|
@notions = options[:notions] || []
|
21
18
|
end
|
@@ -116,7 +113,7 @@ module Onoma
|
|
116
113
|
if element.has_attribute?('default')
|
117
114
|
options[:default] = element.attr('default').to_sym
|
118
115
|
end
|
119
|
-
options[:required] =
|
116
|
+
options[:required] = element.attr('required').to_s == 'true'
|
120
117
|
# options[:inherit] = !!(element.attr('inherit').to_s == 'true')
|
121
118
|
if type == :list
|
122
119
|
type = element.has_attribute?('nomenclature') ? :item_list : :choice_list
|
@@ -138,7 +135,7 @@ module Onoma
|
|
138
135
|
raise MissingChoices, "[#{@name}] Property #{name} must have nomenclature as choices"
|
139
136
|
end
|
140
137
|
end
|
141
|
-
unless
|
138
|
+
unless Onoma::PROPERTY_TYPES.include?(type)
|
142
139
|
raise ArgumentError, "Property #{name} type is unknown: #{type.inspect}"
|
143
140
|
end
|
144
141
|
add_property(name, type, options)
|
@@ -231,7 +228,7 @@ module Onoma
|
|
231
228
|
|
232
229
|
# Add an property to the nomenclature
|
233
230
|
def add_property(name, type, options = {})
|
234
|
-
p =
|
231
|
+
p = PropertyNature.new(self, name, type, options)
|
235
232
|
if @properties[p.name]
|
236
233
|
raise "Property #{p.name} is already defined in nomenclature #{@name}"
|
237
234
|
end
|
@@ -248,11 +245,11 @@ module Onoma
|
|
248
245
|
# Check properties
|
249
246
|
@properties.values.each do |property|
|
250
247
|
if property.choices_nomenclature && !property.inline_choices? && !Onoma[property.choices_nomenclature.to_s]
|
251
|
-
raise
|
248
|
+
raise InvalidPropertyNature, "[#{name}] #{property.name} nomenclature property must refer to an existing nomenclature. Got #{property.choices_nomenclature.inspect}. Expecting: #{Onoma.names.inspect}"
|
252
249
|
end
|
253
250
|
next unless property.type == :choice && property.default
|
254
251
|
unless property.choices.include?(property.default)
|
255
|
-
raise
|
252
|
+
raise InvalidPropertyNature, "The default choice #{property.default.inspect} is invalid (in #{name}##{property.name}). Pick one from #{property.choices.sort.inspect}."
|
256
253
|
end
|
257
254
|
end
|
258
255
|
|
@@ -283,7 +280,7 @@ module Onoma
|
|
283
280
|
end
|
284
281
|
|
285
282
|
def inspect
|
286
|
-
"
|
283
|
+
"Onoma::#{name.to_s.classify}"
|
287
284
|
end
|
288
285
|
|
289
286
|
def table_name
|
@@ -301,8 +298,7 @@ module Onoma
|
|
301
298
|
|
302
299
|
# Return human name
|
303
300
|
def human_name(options = {})
|
304
|
-
I18n.
|
305
|
-
options.merge(default: ["labels.#{name}".to_sym, name.to_s.humanize]))
|
301
|
+
I18n.t("nomenclatures.#{Onoma.escape_key(name)}.name", options.merge(default: ["labels.#{Onoma.escape_key(name)}".to_sym, name.to_s.humanize]))
|
306
302
|
end
|
307
303
|
alias humanize human_name
|
308
304
|
|
@@ -370,7 +366,7 @@ module Onoma
|
|
370
366
|
|
371
367
|
# Returns a list for select, without specified items
|
372
368
|
def select_without(already_imported)
|
373
|
-
ActiveSupport::Deprecation.warn '
|
369
|
+
ActiveSupport::Deprecation.warn 'Onoma::Nomenclature#select_without method is deprecated. Please use Onoma::Nomenclature#without method instead.'
|
374
370
|
select_options = @items.values.collect do |item|
|
375
371
|
[item.human_name, item.name.to_s] unless already_imported[item.name.to_s]
|
376
372
|
end
|
@@ -401,7 +397,7 @@ module Onoma
|
|
401
397
|
end
|
402
398
|
alias item find
|
403
399
|
|
404
|
-
# Return the Item for the given name. Raises
|
400
|
+
# Return the Item for the given name. Raises Onoma::ItemNotFound if no item
|
405
401
|
# found in nomenclature
|
406
402
|
def find!(item_name)
|
407
403
|
i = find(item_name)
|
@@ -412,7 +408,7 @@ module Onoma
|
|
412
408
|
# Returns +true+ if an item exists in the nomenclature that matches the
|
413
409
|
# name, or +false+ otherwise. The argument can take two forms:
|
414
410
|
# * String/Symbol - Find an item with this primary name
|
415
|
-
# *
|
411
|
+
# * Onoma::Item - Find an item with the same name of the item
|
416
412
|
def exists?(item)
|
417
413
|
@items[item.respond_to?(:name) ? item.name : item].present?
|
418
414
|
end
|
@@ -433,8 +429,8 @@ module Onoma
|
|
433
429
|
end
|
434
430
|
|
435
431
|
# List items with properties filtering
|
436
|
-
def where(properties)
|
437
|
-
|
432
|
+
def where(properties, collection = list)
|
433
|
+
collection.select do |item|
|
438
434
|
valid = true
|
439
435
|
properties.each do |name, value|
|
440
436
|
item_value = item.property(name)
|
@@ -461,7 +457,7 @@ module Onoma
|
|
461
457
|
def without(*names)
|
462
458
|
excluded = names.flatten.compact.map(&:to_sym)
|
463
459
|
list.reject do |item|
|
464
|
-
excluded.include?(item.name)
|
460
|
+
excluded.include?(item.name.to_sym)
|
465
461
|
end
|
466
462
|
end
|
467
463
|
|
@@ -505,7 +501,7 @@ module Onoma
|
|
505
501
|
if property = properties[name]
|
506
502
|
if property.type == :choice || property.type == :item
|
507
503
|
if value =~ /\,/
|
508
|
-
raise
|
504
|
+
raise InvalidPropertyNature, 'A property nature of choice type cannot contain commas'
|
509
505
|
end
|
510
506
|
value = value.strip.to_sym
|
511
507
|
elsif property.list?
|
@@ -513,14 +509,14 @@ module Onoma
|
|
513
509
|
elsif property.type == :boolean
|
514
510
|
value = (value == 'true' ? true : value == 'false' ? false : nil)
|
515
511
|
elsif property.type == :decimal
|
516
|
-
value = value
|
512
|
+
value = BigDecimal(value)
|
517
513
|
elsif property.type == :integer
|
518
514
|
value = value.to_i
|
519
515
|
elsif property.type == :date
|
520
|
-
value = (value.blank? ? nil : value
|
516
|
+
value = (value.blank? ? nil : Date.parse(value))
|
521
517
|
elsif property.type == :symbol
|
522
518
|
unless value =~ /\A\w+\z/
|
523
|
-
raise
|
519
|
+
raise InvalidPropertyNature, "A property '#{name}' must contains a symbol. /[a-z0-9_]/ accepted. No spaces. Got #{value.inspect}"
|
524
520
|
end
|
525
521
|
value = value.to_sym
|
526
522
|
end
|
@@ -1,27 +1,34 @@
|
|
1
1
|
module Onoma
|
2
2
|
# This class represents a set of nomenclature like the reference DB
|
3
|
-
class
|
3
|
+
class NomenclatureSet
|
4
4
|
attr_accessor :version
|
5
|
-
attr_reader :path
|
6
5
|
|
7
|
-
def initialize
|
8
|
-
@
|
9
|
-
@nomenclatures = ActiveSupport::HashWithIndifferentAccess.new
|
6
|
+
def initialize
|
7
|
+
@nomenclatures = {}.with_indifferent_access
|
10
8
|
@version = 0
|
11
9
|
end
|
12
10
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
File.write(@path, to_xml)
|
11
|
+
def load_data_from_xml(nomenclature_name)
|
12
|
+
Rails.logger.info "Loading #{nomenclature_name}..."
|
13
|
+
start = Time.now
|
14
|
+
element = Onoma.reference_document.xpath("/xmlns:nomenclatures/xmlns:nomenclature[@name='#{nomenclature_name}']")
|
15
|
+
nomenclature = harvest_nomenclature(element)
|
16
|
+
Rails.logger.info "Loaded #{nomenclature_name} in #{(Time.now - start).round(2)} seconds..."
|
17
|
+
nomenclature
|
21
18
|
end
|
22
19
|
|
23
|
-
def
|
24
|
-
|
20
|
+
def self.load_file(file)
|
21
|
+
set = new
|
22
|
+
f = File.open(file, 'rb')
|
23
|
+
document = Nokogiri::XML(f) do |config|
|
24
|
+
config.strict.nonet.noblanks.noent
|
25
|
+
end
|
26
|
+
f.close
|
27
|
+
document.root.children.each do |nomenclature|
|
28
|
+
set.harvest_nomenclature(nomenclature)
|
29
|
+
end
|
30
|
+
set.version = document.root['version'].to_i
|
31
|
+
set
|
25
32
|
end
|
26
33
|
|
27
34
|
def nomenclature_names
|
@@ -105,29 +112,9 @@ module Onoma
|
|
105
112
|
builder.to_xml
|
106
113
|
end
|
107
114
|
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
add_nomenclature(action.name, action.options)
|
112
|
-
when :nomenclature_change
|
113
|
-
change_nomenclature(action.nomenclature, action.changes)
|
114
|
-
when :nomenclature_removal
|
115
|
-
remove_nomenclature(action.nomenclature)
|
116
|
-
when :property_creation
|
117
|
-
add_property(action.nomenclature, action.name, action.type, action.options)
|
118
|
-
when :property_change
|
119
|
-
add_property(action.nomenclature, action.name, action.changes)
|
120
|
-
when :item_creation
|
121
|
-
add_item(action.nomenclature, action.name, action.options)
|
122
|
-
when :item_change
|
123
|
-
change_item(action.nomenclature, action.name, action.changes)
|
124
|
-
when :item_merging
|
125
|
-
merge_item(action.nomenclature, action.name, action.into)
|
126
|
-
when :item_removal
|
127
|
-
remove_item(action.nomenclature, action.name)
|
128
|
-
else
|
129
|
-
raise "Unknown action: #{action.action_name}"
|
130
|
-
end
|
115
|
+
def harvest_nomenclature(element)
|
116
|
+
nomenclature = Nomenclature.harvest(element, set: self)
|
117
|
+
@nomenclatures[nomenclature.name] = nomenclature
|
131
118
|
end
|
132
119
|
|
133
120
|
def add_nomenclature(name, options = {})
|
@@ -193,24 +180,5 @@ module Onoma
|
|
193
180
|
nomenclature = find!(nomenclature_name)
|
194
181
|
nomenclature.remove_item(item_name)
|
195
182
|
end
|
196
|
-
|
197
|
-
protected
|
198
|
-
|
199
|
-
def harvest_nomenclature(element)
|
200
|
-
nomenclature = Nomenclature.harvest(element, set: self)
|
201
|
-
@nomenclatures[nomenclature.name] = nomenclature
|
202
|
-
end
|
203
|
-
|
204
|
-
def parse_file(file)
|
205
|
-
f = File.open(file, 'rb')
|
206
|
-
document = Nokogiri::XML(f) do |config|
|
207
|
-
config.strict.nonet.noblanks.noent
|
208
|
-
end
|
209
|
-
f.close
|
210
|
-
document.root.children.each do |nomenclature|
|
211
|
-
harvest_nomenclature(nomenclature)
|
212
|
-
end
|
213
|
-
self.version = document.root.attr('version').to_i
|
214
|
-
end
|
215
183
|
end
|
216
184
|
end
|
@@ -1,8 +1,5 @@
|
|
1
1
|
module Onoma
|
2
|
-
class
|
3
|
-
TYPES = %i[boolean item item_list choice choice_list string_list
|
4
|
-
date decimal integer nomenclature string symbol].freeze
|
5
|
-
|
2
|
+
class PropertyNature
|
6
3
|
attr_reader :nomenclature, :name, :type, :fallbacks, :default, :source
|
7
4
|
|
8
5
|
# New item
|
@@ -10,14 +7,14 @@ module Onoma
|
|
10
7
|
@nomenclature = nomenclature
|
11
8
|
@name = name.to_sym
|
12
9
|
@type = type
|
13
|
-
raise "Invalid type: #{@type.inspect}" unless
|
10
|
+
raise "Invalid type: #{@type.inspect}" unless Onoma::PROPERTY_TYPES.include?(@type)
|
14
11
|
@fallbacks = options[:fallbacks] if options[:fallbacks]
|
15
12
|
@default = options[:default] if options[:default]
|
16
13
|
@required = !!options[:required]
|
17
14
|
@source = options[:choices] if reference? && options[:choices]
|
18
15
|
end
|
19
16
|
|
20
|
-
|
17
|
+
Onoma::PROPERTY_TYPES.each do |type|
|
21
18
|
define_method "#{type}?" do
|
22
19
|
@type == type
|
23
20
|
end
|
@@ -77,7 +74,7 @@ module Onoma
|
|
77
74
|
def selection
|
78
75
|
if inline_choices?
|
79
76
|
choices.collect do |c|
|
80
|
-
[c, c]
|
77
|
+
["nomenclatures.#{@nomenclature.name}.choices.#{name}.#{c}".t, c]
|
81
78
|
end
|
82
79
|
elsif item_reference?
|
83
80
|
@nomenclature.sibling(@source).selection
|
@@ -86,7 +83,7 @@ module Onoma
|
|
86
83
|
|
87
84
|
# Return human name of property
|
88
85
|
def human_name
|
89
|
-
"nomenclatures.#{nomenclature.name}.
|
86
|
+
I18n.t("nomenclatures.#{nomenclature.name}.property_natures.#{name}", default: ["nomenclatures.#{nomenclature.name}.properties.#{name}".to_sym, "properties.#{name}".to_sym, "enumerize.#{nomenclature.name}.#{name}".to_sym, "labels.#{name}".to_sym, name.humanize])
|
90
87
|
end
|
91
88
|
|
92
89
|
alias humanize human_name
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Onoma
|
2
|
+
module Record
|
3
|
+
class Base
|
4
|
+
class << self
|
5
|
+
def method_missing(*args, &block)
|
6
|
+
Onoma.find_or_initialize(name.tableize.sub(/\Aonoma\//, '')).send(*args, &block)
|
7
|
+
end
|
8
|
+
|
9
|
+
def respond_to?(method_name)
|
10
|
+
Onoma.find_or_initialize(name.tableize.sub(/\Aonoma\//, '')).respond_to?(method_name) || super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/onoma/reflection.rb
CHANGED
@@ -4,7 +4,7 @@ module Onoma
|
|
4
4
|
|
5
5
|
# name: things
|
6
6
|
# class_name: Thing
|
7
|
-
# klass:
|
7
|
+
# klass: Onoma::Thing
|
8
8
|
def initialize(active_record, name, options = {})
|
9
9
|
@options = options
|
10
10
|
@name = name.to_s
|
@@ -12,8 +12,8 @@ module Onoma
|
|
12
12
|
@class_name = options[:class_name] || name.to_s.classify
|
13
13
|
@foreign_key = (options[:foreign_key] || name).to_s
|
14
14
|
@scope = options[:scope]
|
15
|
-
@nomenclature = class_name.
|
16
|
-
@klass = Onoma.
|
15
|
+
@nomenclature = class_name.tableize
|
16
|
+
@klass = "Onoma::#{@class_name}".constantize
|
17
17
|
end
|
18
18
|
|
19
19
|
alias model active_record
|
data/lib/onoma/version.rb
CHANGED
data/onoma.gemspec
CHANGED
@@ -1,29 +1,28 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'onoma/version'
|
1
|
+
require_relative 'lib/onoma/version'
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.
|
10
|
-
spec.
|
4
|
+
spec.name = 'onoma'
|
5
|
+
spec.version = Onoma::VERSION
|
6
|
+
spec.required_ruby_version = '>= 2.4.4'
|
7
|
+
spec.authors = ['Brice TEXIER']
|
8
|
+
spec.email = ['brice@ekylibre.com']
|
11
9
|
|
12
|
-
spec.summary
|
13
|
-
spec.description
|
14
|
-
spec.homepage
|
15
|
-
spec.license
|
10
|
+
spec.summary = 'Provides open nomenclature data in a gem'
|
11
|
+
spec.description = 'Actual support Open-Nomenclature data and gem for use'
|
12
|
+
spec.homepage = 'https://gitlab.com/ekylibre/onoma'
|
13
|
+
spec.license = 'MIT'
|
16
14
|
|
17
|
-
spec.files
|
18
|
-
spec.bindir
|
19
|
-
spec.executables
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.bindir = 'exe'
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
18
|
spec.require_paths = ['lib']
|
21
19
|
|
22
|
-
spec.add_development_dependency 'bundler', '
|
23
|
-
spec.add_development_dependency '
|
24
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
20
|
+
spec.add_development_dependency 'bundler', '> 1.15'
|
21
|
+
spec.add_development_dependency 'rake', '> 12.0'
|
25
22
|
spec.add_development_dependency 'minitest'
|
26
23
|
spec.add_development_dependency 'i18n-tasks'
|
27
|
-
|
28
|
-
spec.add_dependency '
|
24
|
+
|
25
|
+
spec.add_dependency 'activesupport', '>= 4.2'
|
26
|
+
spec.add_dependency 'zeitwerk', '~> 2.4.0'
|
27
|
+
spec.add_dependency 'nokogiri', '>= 1.10.4'
|
29
28
|
end
|
metadata
CHANGED
@@ -1,57 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onoma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brice TEXIER
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.15'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: colored
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
26
|
+
version: '1.15'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - "
|
31
|
+
- - ">"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '12.0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - ">"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '12.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: minitest
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +72,42 @@ dependencies:
|
|
86
72
|
requirements:
|
87
73
|
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
75
|
+
version: '4.2'
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
82
|
+
version: '4.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: zeitwerk
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.4.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.4.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: nokogiri
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 1.10.4
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 1.10.4
|
111
111
|
description: Actual support Open-Nomenclature data and gem for use
|
112
112
|
email:
|
113
113
|
- brice@ekylibre.com
|
@@ -116,6 +116,7 @@ extensions: []
|
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
118
|
- ".gitignore"
|
119
|
+
- ".gitlab-ci.yml"
|
119
120
|
- ".travis.yml"
|
120
121
|
- CODE_OF_CONDUCT.md
|
121
122
|
- Gemfile
|
@@ -123,6 +124,7 @@ files:
|
|
123
124
|
- README.md
|
124
125
|
- Rakefile
|
125
126
|
- bin/console
|
127
|
+
- bin/rake
|
126
128
|
- bin/setup
|
127
129
|
- config/locales/arb.yml
|
128
130
|
- config/locales/cmn.yml
|
@@ -318,14 +320,62 @@ files:
|
|
318
320
|
- db/migrate/20170627081533_add_pending_deposit_payments_account_number_for_pt_accounting_system.xml
|
319
321
|
- db/migrate/20170718131724_add_issue_natures.xml
|
320
322
|
- db/migrate/20170803164344_add_procedure_nature_and_category.xml
|
323
|
+
- db/migrate/20170904223101_add_cultivable_zone_registry.xml
|
321
324
|
- db/migrate/20170914083358_add_new_product_nature_variants.xml
|
322
325
|
- db/migrate/20170927144852_add_kiwi_varieties.xml
|
326
|
+
- db/migrate/20171106085357_update_account_numbers.xml
|
327
|
+
- db/migrate/20171212081801_add_fiscal_positions.xml
|
328
|
+
- db/migrate/20180408190101_add_new_plant_variants.xml
|
329
|
+
- db/migrate/20180409130101_add_common_crop.xml
|
330
|
+
- db/migrate/20180418085027_add-hour-counter-indicator.xml
|
331
|
+
- db/migrate/20180709134310_add_centralizing_field_to_accounts.xml
|
332
|
+
- db/migrate/20180711093131_review_all_accounts_number_and_fallbacks.xml
|
333
|
+
- db/migrate/20180806080646_edit_centralizing_field_accounts.xml
|
334
|
+
- db/migrate/20180814184001_add_missing_categories.xml
|
335
|
+
- db/migrate/20180907160001_edit_accounts_to_unlock_first_run.xml
|
336
|
+
- db/migrate/20181004220301_add_journal_ledger.xml
|
337
|
+
- db/migrate/20181205162401_add_intra_vat.xml
|
338
|
+
- db/migrate/20181213153405_fix_accounting_systems.xml
|
339
|
+
- db/migrate/20181217155149_fiscal_position_refers_to_accounting_system.xml
|
340
|
+
- db/migrate/20181217173101_fiscal_position_reference_typo.xml
|
341
|
+
- db/migrate/20190315154040_add_suspense_account.xml
|
342
|
+
- db/migrate/20190326110849_add_asset_fixable_to_product_nature_categories.xml
|
343
|
+
- db/migrate/20190326135443_change_product_nature_category_cultivable_zone_into_land.xml
|
344
|
+
- db/migrate/20190329133808_change_land_fixed_assets_account_usage.xml
|
345
|
+
- db/migrate/20190405120711_delete_land_sales_account_and_assign_land_parcels_sell_revenues_to_land.xml
|
346
|
+
- db/migrate/20190412071057_add_new_fixed_assets_andn_depreciable_accounts.xml
|
347
|
+
- db/migrate/20190509092804_add_account_exceptional_depreciations_imputations_expenses_for_fixed_assets.xml
|
348
|
+
- db/migrate/20190514084753_add_approved_input_volume.xml
|
349
|
+
- db/migrate/20190520072403_add_new_accounts.xml
|
350
|
+
- db/migrate/20190521170601_add_missing_taxes.xml
|
351
|
+
- db/migrate/20190611101014_change_deductible_vat_account.xml
|
352
|
+
- db/migrate/20190620092151_fix_conflicts_in_new_accounts.xml
|
353
|
+
- db/migrate/20190625152636_change_mixture_seed_product_nature_variant.xml
|
354
|
+
- db/migrate/20190718130243_remove_services_expenses.xml
|
355
|
+
- db/migrate/20190801142431_remove_accounts_from_pcg82.xml
|
356
|
+
- db/migrate/20190807125202_add_nature_to_product_natures.xml
|
357
|
+
- db/migrate/20190823091727_fix-cubic-meter-per-hectare-symbol.xml
|
358
|
+
- db/migrate/20190909150402_add_staff_supply_stock_account.xml
|
359
|
+
- db/migrate/20190913102036_add_caliber_indicator.xml
|
360
|
+
- db/migrate/20190917161215_add_missing_mass_area_density_units.xml
|
361
|
+
- db/migrate/20190917161216_update_quintal_symbol.xml
|
362
|
+
- db/migrate/20190917161217_adds_more_info_to_units.xml
|
363
|
+
- db/migrate/20190918074757_add_new_accounts.xml
|
364
|
+
- db/migrate/20191001122750_add_accounts_fixed_assets_related.xml
|
365
|
+
- db/migrate/20191016152118_add_missing_document_templates.xml
|
366
|
+
- db/migrate/20191028175001_add_short_balance_sheet.xml
|
367
|
+
- db/migrate/20191029131921_add_vine_equipments.xml
|
368
|
+
- db/migrate/20191112132413_remove_roller_from_product_natures.xml
|
369
|
+
- db/migrate/20191113134626_add_nature_to_new_product_natures.xml
|
370
|
+
- db/migrate/20191125133327_add_missing_units_and_indicators.xml
|
371
|
+
- db/migrate/20200107095554_add_signed_field_to_document_nature.xml
|
372
|
+
- db/migrate/20200305160358_add_varieties_for_phytosanitary.xml
|
373
|
+
- db/migrate/20200421123503_add_type_to_categories_and_variants.xml
|
374
|
+
- db/migrate/20200514092205_add_liter_per_hectoliter_unit.xml
|
375
|
+
- db/migrate/20200722091859_triticale_derivative_of.xml
|
323
376
|
- db/reference.xml
|
324
377
|
- lib/onoma.rb
|
325
|
-
- lib/onoma/database.rb
|
326
378
|
- lib/onoma/item.rb
|
327
|
-
- lib/onoma/migration.rb
|
328
|
-
- lib/onoma/migration/actions.rb
|
329
379
|
- lib/onoma/migration/actions/base.rb
|
330
380
|
- lib/onoma/migration/actions/item_change.rb
|
331
381
|
- lib/onoma/migration/actions/item_creation.rb
|
@@ -335,18 +385,86 @@ files:
|
|
335
385
|
- lib/onoma/migration/actions/nomenclature_creation.rb
|
336
386
|
- lib/onoma/migration/actions/nomenclature_removal.rb
|
337
387
|
- lib/onoma/migration/actions/property_creation.rb
|
388
|
+
- lib/onoma/migration/base.rb
|
389
|
+
- lib/onoma/migrator.rb
|
390
|
+
- lib/onoma/migrator/reference.rb
|
391
|
+
- lib/onoma/migrator/translation.rb
|
392
|
+
- lib/onoma/models/ability.rb
|
393
|
+
- lib/onoma/models/account.rb
|
394
|
+
- lib/onoma/models/accounting_system.rb
|
395
|
+
- lib/onoma/models/activity_family.rb
|
396
|
+
- lib/onoma/models/administrative_area.rb
|
397
|
+
- lib/onoma/models/administrative_area_nature.rb
|
398
|
+
- lib/onoma/models/analysis_nature.rb
|
399
|
+
- lib/onoma/models/animal_life_state.rb
|
400
|
+
- lib/onoma/models/cation_exchange_capacity_analysis_method.rb
|
401
|
+
- lib/onoma/models/certification.rb
|
402
|
+
- lib/onoma/models/certification_label.rb
|
403
|
+
- lib/onoma/models/chemical_classification.rb
|
404
|
+
- lib/onoma/models/chemical_element.rb
|
405
|
+
- lib/onoma/models/country.rb
|
406
|
+
- lib/onoma/models/crop_set.rb
|
407
|
+
- lib/onoma/models/currency.rb
|
408
|
+
- lib/onoma/models/delivery_mode.rb
|
409
|
+
- lib/onoma/models/dimension.rb
|
410
|
+
- lib/onoma/models/document_category.rb
|
411
|
+
- lib/onoma/models/document_nature.rb
|
412
|
+
- lib/onoma/models/entity_link_nature.rb
|
413
|
+
- lib/onoma/models/event_nature.rb
|
414
|
+
- lib/onoma/models/fence_perimeter.rb
|
415
|
+
- lib/onoma/models/figure.rb
|
416
|
+
- lib/onoma/models/fiscal_position.rb
|
417
|
+
- lib/onoma/models/guide_nature.rb
|
418
|
+
- lib/onoma/models/identifier_nature.rb
|
419
|
+
- lib/onoma/models/indicator.rb
|
420
|
+
- lib/onoma/models/issue_nature.rb
|
421
|
+
- lib/onoma/models/land.rb
|
422
|
+
- lib/onoma/models/language.rb
|
423
|
+
- lib/onoma/models/mammalia_birth_condition.rb
|
424
|
+
- lib/onoma/models/mammalia_reproduction_state.rb
|
425
|
+
- lib/onoma/models/molecule.rb
|
426
|
+
- lib/onoma/models/net_service.rb
|
427
|
+
- lib/onoma/models/opportunity_origin.rb
|
428
|
+
- lib/onoma/models/phosphorus_analysis_method.rb
|
429
|
+
- lib/onoma/models/plant_life_state.rb
|
430
|
+
- lib/onoma/models/plant_reproduction_state.rb
|
431
|
+
- lib/onoma/models/plants_growth_level.rb
|
432
|
+
- lib/onoma/models/procedure_action.rb
|
433
|
+
- lib/onoma/models/procedure_category.rb
|
434
|
+
- lib/onoma/models/procedure_nature.rb
|
435
|
+
- lib/onoma/models/procedure_role.rb
|
436
|
+
- lib/onoma/models/product_nature.rb
|
437
|
+
- lib/onoma/models/product_nature_category.rb
|
438
|
+
- lib/onoma/models/product_nature_variant.rb
|
439
|
+
- lib/onoma/models/production_nature.rb
|
440
|
+
- lib/onoma/models/production_system.rb
|
441
|
+
- lib/onoma/models/production_usage.rb
|
442
|
+
- lib/onoma/models/residue_elimination_method.rb
|
443
|
+
- lib/onoma/models/role.rb
|
444
|
+
- lib/onoma/models/running_cost.rb
|
445
|
+
- lib/onoma/models/sex.rb
|
446
|
+
- lib/onoma/models/soil_cultural_state.rb
|
447
|
+
- lib/onoma/models/soil_nature.rb
|
448
|
+
- lib/onoma/models/spatial_reference_system.rb
|
449
|
+
- lib/onoma/models/tax.rb
|
450
|
+
- lib/onoma/models/tax_nature.rb
|
451
|
+
- lib/onoma/models/unit.rb
|
452
|
+
- lib/onoma/models/variety.rb
|
453
|
+
- lib/onoma/models/working_set.rb
|
338
454
|
- lib/onoma/nomenclature.rb
|
339
|
-
- lib/onoma/
|
455
|
+
- lib/onoma/nomenclature_set.rb
|
456
|
+
- lib/onoma/property_nature.rb
|
457
|
+
- lib/onoma/record/base.rb
|
340
458
|
- lib/onoma/reference.rb
|
341
459
|
- lib/onoma/reflection.rb
|
342
460
|
- lib/onoma/relation.rb
|
343
461
|
- lib/onoma/version.rb
|
344
462
|
- onoma.gemspec
|
345
|
-
homepage: https://
|
463
|
+
homepage: https://gitlab.com/ekylibre/onoma
|
346
464
|
licenses:
|
347
465
|
- MIT
|
348
466
|
metadata: {}
|
349
|
-
post_install_message:
|
467
|
+
post_install_message:
|
350
468
|
rdoc_options: []
|
351
469
|
require_paths:
|
352
470
|
- lib
|
@@ -354,16 +472,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
354
472
|
requirements:
|
355
473
|
- - ">="
|
356
474
|
- !ruby/object:Gem::Version
|
357
|
-
version:
|
475
|
+
version: 2.4.4
|
358
476
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
359
477
|
requirements:
|
360
478
|
- - ">="
|
361
479
|
- !ruby/object:Gem::Version
|
362
480
|
version: '0'
|
363
481
|
requirements: []
|
364
|
-
|
365
|
-
|
366
|
-
signing_key:
|
482
|
+
rubygems_version: 3.0.3
|
483
|
+
signing_key:
|
367
484
|
specification_version: 4
|
368
485
|
summary: Provides open nomenclature data in a gem
|
369
486
|
test_files: []
|