aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-04-20 08:19:12 +0200
committerRobert2017-04-20 08:32:39 +0200
commitf590d7b18c7e980ce7e93e96ae3b45fce310675f (patch)
tree2e2c7034580e632d20617e9e507b7a71e3bc0d20
parentb767e3c006e9eeee22e2de939605203d8cb99f32 (diff)
downloadchouette-core-f590d7b18c7e980ce7e93e96ae3b45fce310675f.tar.bz2
custom attribute daterange for referential_metadata
-rw-r--r--app/models/referential_metadata.rb18
-rw-r--r--config/initializers/postgresql_adapter_patch.rb3
2 files changed, 20 insertions, 1 deletions
diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb
index 62faf5541..d79c0d839 100644
--- a/app/models/referential_metadata.rb
+++ b/app/models/referential_metadata.rb
@@ -12,6 +12,24 @@ class ReferentialMetadata < ActiveRecord::Base
scope :include_lines, -> (line_ids) { where('line_ids && ARRAY[?]::bigint[]', line_ids) }
scope :include_dateranges, -> (dateranges) { where('periodes && ARRAY[?]', dateranges) }
+ def periodes
+ attributes["periodes"].tap do | periods |
+ return periods unless periods
+ return adapted_periods(periods)
+ end
+ end
+
+ def adapted_periods(periods)
+ periods.map do | period |
+ if period.try(:exclude_end?)
+ period.begin .. (period.end - 1)
+ else
+ period
+ end
+ end
+ end
+ private :adapted_periods
+
class Period
include ActiveAttr::Model
include ActiveAttr::MultiParameterAttributes
diff --git a/config/initializers/postgresql_adapter_patch.rb b/config/initializers/postgresql_adapter_patch.rb
index bb8dbe17b..46066fbbf 100644
--- a/config/initializers/postgresql_adapter_patch.rb
+++ b/config/initializers/postgresql_adapter_patch.rb
@@ -16,7 +16,8 @@ end
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
def initialize_type_map_with_daterange mapping
initialize_type_map_without_daterange mapping
- mapping.register_type 3912, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange)
+ # mapping.register_type 3912, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange)
+ mapping.register_type 'daterange', ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange)
end
alias_method_chain :initialize_type_map, :daterange