onoma 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +14 -0
  4. data/Gemfile +2 -0
  5. data/Rakefile +3 -6
  6. data/bin/rake +29 -0
  7. data/config/locales/eng.yml +1 -9
  8. data/config/locales/fra.yml +49 -165
  9. data/db/migrate/20190807125202_add_nature_to_product_natures.xml +326 -0
  10. data/db/migrate/20190909150402_add_staff_supply_stock_account.xml +4 -0
  11. data/db/migrate/20190913102036_add_caliber_indicator.xml +4 -0
  12. data/db/migrate/20191016152118_add_missing_document_templates.xml +6 -0
  13. data/db/migrate/20191113134626_add_nature_to_new_product_natures.xml +11 -0
  14. data/db/migrate/20191125133327_add_missing_units_and_indicators.xml +5 -0
  15. data/db/migrate/20200107095554_add_signed_field_to_document_nature.xml +9 -0
  16. data/db/migrate/20200421123503_add_type_to_categories_and_variants.xml +1136 -0
  17. data/db/migrate/20200514092205_add_liter_per_hectoliter_unit.xml +4 -0
  18. data/db/migrate/20200722091859_triticale_derivative_of.xml +5 -0
  19. data/db/reference.xml +948 -944
  20. data/lib/onoma.rb +82 -24
  21. data/lib/onoma/item.rb +19 -3
  22. data/lib/onoma/migration/actions/base.rb +1 -5
  23. data/lib/onoma/migration/actions/item_change.rb +1 -5
  24. data/lib/onoma/migration/actions/item_creation.rb +2 -6
  25. data/lib/onoma/migration/actions/item_merging.rb +1 -5
  26. data/lib/onoma/migration/actions/item_removal.rb +1 -1
  27. data/lib/onoma/migration/actions/nomenclature_change.rb +1 -1
  28. data/lib/onoma/migration/actions/nomenclature_creation.rb +1 -1
  29. data/lib/onoma/migration/actions/nomenclature_removal.rb +1 -5
  30. data/lib/onoma/migration/actions/property_creation.rb +4 -4
  31. data/lib/onoma/migration/base.rb +38 -0
  32. data/lib/onoma/migrator.rb +13 -0
  33. data/lib/onoma/migrator/reference.rb +71 -0
  34. data/lib/onoma/migrator/translation.rb +76 -0
  35. data/lib/onoma/models/ability.rb +4 -0
  36. data/lib/onoma/models/account.rb +4 -0
  37. data/lib/onoma/models/accounting_system.rb +12 -0
  38. data/lib/onoma/models/activity_family.rb +4 -0
  39. data/lib/onoma/models/administrative_area.rb +4 -0
  40. data/lib/onoma/models/administrative_area_nature.rb +4 -0
  41. data/lib/onoma/models/analysis_nature.rb +4 -0
  42. data/lib/onoma/models/animal_life_state.rb +4 -0
  43. data/lib/onoma/models/cation_exchange_capacity_analysis_method.rb +4 -0
  44. data/lib/onoma/models/certification.rb +4 -0
  45. data/lib/onoma/models/certification_label.rb +4 -0
  46. data/lib/onoma/models/chemical_classification.rb +4 -0
  47. data/lib/onoma/models/chemical_element.rb +4 -0
  48. data/lib/onoma/models/country.rb +4 -0
  49. data/lib/onoma/models/crop_set.rb +4 -0
  50. data/lib/onoma/models/currency.rb +4 -0
  51. data/lib/onoma/models/delivery_mode.rb +4 -0
  52. data/lib/onoma/models/dimension.rb +4 -0
  53. data/lib/onoma/models/document_category.rb +4 -0
  54. data/lib/onoma/models/document_nature.rb +4 -0
  55. data/lib/onoma/models/entity_link_nature.rb +4 -0
  56. data/lib/onoma/models/event_nature.rb +4 -0
  57. data/lib/onoma/models/fence_perimeter.rb +4 -0
  58. data/lib/onoma/models/figure.rb +4 -0
  59. data/lib/onoma/models/fiscal_position.rb +4 -0
  60. data/lib/onoma/models/guide_nature.rb +4 -0
  61. data/lib/onoma/models/identifier_nature.rb +4 -0
  62. data/lib/onoma/models/indicator.rb +7 -0
  63. data/lib/onoma/models/issue_nature.rb +4 -0
  64. data/lib/onoma/models/land.rb +4 -0
  65. data/lib/onoma/models/language.rb +4 -0
  66. data/lib/onoma/models/mammalia_birth_condition.rb +4 -0
  67. data/lib/onoma/models/mammalia_reproduction_state.rb +4 -0
  68. data/lib/onoma/models/molecule.rb +4 -0
  69. data/lib/onoma/models/net_service.rb +4 -0
  70. data/lib/onoma/models/opportunity_origin.rb +4 -0
  71. data/lib/onoma/models/phosphorus_analysis_method.rb +4 -0
  72. data/lib/onoma/models/plant_life_state.rb +4 -0
  73. data/lib/onoma/models/plant_reproduction_state.rb +4 -0
  74. data/lib/onoma/models/plants_growth_level.rb +4 -0
  75. data/lib/onoma/models/procedure_action.rb +4 -0
  76. data/lib/onoma/models/procedure_category.rb +4 -0
  77. data/lib/onoma/models/procedure_nature.rb +4 -0
  78. data/lib/onoma/models/procedure_role.rb +4 -0
  79. data/lib/onoma/models/product_nature.rb +4 -0
  80. data/lib/onoma/models/product_nature_category.rb +4 -0
  81. data/lib/onoma/models/product_nature_variant.rb +4 -0
  82. data/lib/onoma/models/production_nature.rb +4 -0
  83. data/lib/onoma/models/production_system.rb +4 -0
  84. data/lib/onoma/models/production_usage.rb +4 -0
  85. data/lib/onoma/models/residue_elimination_method.rb +4 -0
  86. data/lib/onoma/models/role.rb +4 -0
  87. data/lib/onoma/models/running_cost.rb +4 -0
  88. data/lib/onoma/models/sex.rb +4 -0
  89. data/lib/onoma/models/soil_cultural_state.rb +4 -0
  90. data/lib/onoma/models/soil_nature.rb +4 -0
  91. data/lib/onoma/models/spatial_reference_system.rb +4 -0
  92. data/lib/onoma/models/tax.rb +4 -0
  93. data/lib/onoma/models/tax_nature.rb +4 -0
  94. data/lib/onoma/models/unit.rb +4 -0
  95. data/lib/onoma/models/variety.rb +31 -0
  96. data/lib/onoma/models/working_set.rb +4 -0
  97. data/lib/onoma/nomenclature.rb +19 -23
  98. data/lib/onoma/{database.rb → nomenclature_set.rb} +25 -57
  99. data/lib/onoma/{property.rb → property_nature.rb} +5 -8
  100. data/lib/onoma/record/base.rb +15 -0
  101. data/lib/onoma/reflection.rb +3 -3
  102. data/lib/onoma/version.rb +4 -2
  103. data/onoma.gemspec +16 -17
  104. metadata +100 -23
  105. data/lib/onoma/migration.rb +0 -122
  106. data/lib/onoma/migration/actions.rb +0 -9
@@ -0,0 +1,76 @@
1
+ module Onoma
2
+ module Migrator
3
+ class Translation
4
+ class << self
5
+ def run(migration)
6
+ puts "Migration #{migration.name}"
7
+ I18n.available_locales.each do |locale|
8
+ file = Onoma.root.join('config', 'locales', "#{locale.to_s}.yml")
9
+ hash = yaml_to_hash(file)
10
+ migration.each_action do |action|
11
+ ref = hash[locale.to_sym][:nomenclatures]
12
+ ref[action.nomenclature.to_sym] ||= {}
13
+ ref[action.nomenclature.to_sym][:items] ||= {}
14
+ if action.is_a?(Onoma::Migration::Actions::ItemChange) && action.new_name?
15
+ ref[action.nomenclature.to_sym][:items][action.new_name.to_sym] ||= ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
16
+ elsif action.is_a?(Onoma::Migration::Actions::ItemMerging)
17
+ # ref[action.nomenclature.to_sym][:items][action.into.to_sym] ||= ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
18
+ ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
19
+ elsif action.is_a?(Onoma::Migration::Actions::NomenclatureChange) && action.changes[:name]
20
+ ref[action.changes[:name].to_sym] = ref.delete(action.nomenclature.to_sym)
21
+ elsif action.is_a?(Onoma::Migration::Actions::NomenclatureRemoval)
22
+ ref.delete(action.nomenclature.to_sym)
23
+ elsif !action.is_a?(Onoma::Migration::Actions::Base)
24
+ raise "Cannot handle: #{action.inspect}"
25
+ end
26
+ File.write(file, hash_to_yaml(hash))
27
+ end
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def yaml_to_hash(filename)
34
+ hash = YAML.safe_load(IO.read(filename).gsub(/^(\s*)(no|yes|false|true):(.*)$/, '\1__\2__:\3'), [], [], true)
35
+ hash.deep_symbolize_keys
36
+ end
37
+
38
+ def hash_to_yaml(hash, depth = nil)
39
+ code = hash.sort_by { |a| a[0].to_s.tr('_', ' ').strip }.map do |k, v|
40
+ next unless v
41
+ pair_to_yaml(k, v)
42
+ end.join("\n")
43
+ code = "\n" + code.indent(depth).gsub(/^\s+$/, '') unless depth.nil?
44
+ code
45
+ end
46
+
47
+ def value_to_yaml(value)
48
+ if value.is_a?(Array)
49
+ '[' + value.map { |x| value_to_yaml(x) }.join(', ') + ']'
50
+ elsif value.is_a?(Symbol)
51
+ ':' + value.to_s
52
+ elsif value.is_a?(Hash)
53
+ hash_to_yaml(value)
54
+ elsif value.is_a?(Numeric)
55
+ value.to_s
56
+ else
57
+ v = value.to_s.gsub("\\u00A0", '\\_')
58
+ value =~ /\n/ ? "|\n" + v.strip.indent : '"' + v + '"'
59
+ end
60
+ end
61
+
62
+ def pair_to_yaml(k, v)
63
+ if v.is_a?(Hash)
64
+ k.to_s + ":\n" + indent(hash_to_yaml(v))
65
+ else
66
+ k.to_s + ': ' + value_to_yaml(v)
67
+ end
68
+ end
69
+
70
+ def indent(string, depth = 1)
71
+ string.gsub(/^/, ' ' * depth)
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Ability < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Account < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,12 @@
1
+ module Onoma
2
+ class AccountingSystem < Onoma::Record::Base
3
+ class << self
4
+ def with_fiscal_position
5
+ Onoma::FiscalPosition.items.values
6
+ .reduce(Set.new) {|acc, fp| acc << fp.accounting_system}
7
+ .map {|e| Onoma::AccountingSystem[e]}
8
+ .compact
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ActivityFamily < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AdministrativeArea < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AdministrativeAreaNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AnalysisNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AnimalLifeState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class CationExchangeCapacityAnalysisMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Certification < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class CertificationLabel < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ChemicalClassification < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ChemicalElement < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Country < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class CropSet < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Currency < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DeliveryMode < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Dimension < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DocumentCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DocumentNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class EntityLinkNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class EventNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class FencePerimeter < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Figure < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class FiscalPosition < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class GuideNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class IdentifierNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,7 @@
1
+ module Onoma
2
+ class Indicator < Onoma::Record::Base
3
+ class << self
4
+ delegate :each, to: :all
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class IssueNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Land < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Language < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class MammaliaBirthCondition < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class MammaliaReproductionState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Molecule < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class NetService < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class OpportunityOrigin < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PhosphorusAnalysisMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantLifeState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantReproductionState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantsGrowthLevel < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureAction < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureRole < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNatureCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNatureVariant < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionSystem < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionUsage < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ResidueEliminationMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Role < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class RunningCost < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Sex < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SoilCulturalState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SoilNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SpatialReferenceSystem < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Tax < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class TaxNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Unit < Onoma::Record::Base
3
+ end
4
+ end