diff options
| author | Zog | 2018-04-25 15:34:57 +0200 | 
|---|---|---|
| committer | Alban Peignier | 2018-04-25 22:44:51 +0200 | 
| commit | 0e64912dd2c299df543ed03e2cd6609bc7d6dec6 (patch) | |
| tree | e9fa08b24b8c231d4671bfc15a7e3c59ffc66950 | |
| parent | b930761de0a269c45876b2242e085e23070f8325 (diff) | |
| download | chouette-core-0e64912dd2c299df543ed03e2cd6609bc7d6dec6.tar.bz2 | |
Refs #6683; Uniformize the time_zones notation
| -rw-r--r-- | app/inputs/full_time_zone_input.rb | 24 | ||||
| -rw-r--r-- | app/views/companies/_form.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_companies/_form.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referential_stop_areas/_form.html.slim | 2 | ||||
| -rw-r--r-- | app/views/stop_areas/_form.html.slim | 2 | ||||
| -rw-r--r-- | db/migrate/20180425133154_fix_timezones.rb | 19 | 
6 files changed, 47 insertions, 4 deletions
| diff --git a/app/inputs/full_time_zone_input.rb b/app/inputs/full_time_zone_input.rb new file mode 100644 index 000000000..f5d8a9ba2 --- /dev/null +++ b/app/inputs/full_time_zone_input.rb @@ -0,0 +1,24 @@ +class FullTimeZoneInput < SimpleForm::Inputs::CollectionSelectInput +  def collection +    @collection ||= begin +      collection = options.delete(:collection) || ActiveSupport::TimeZone::MAPPING +      collection.respond_to?(:call) ? collection.call : collection.to_a +    end +  end + +  def detect_collection_methods +    label, value = options.delete(:label_method), options.delete(:value_method) + +    label ||= ->(tz) do +      tz = ActiveSupport::TimeZone[tz.last] +      "(#{tz.formatted_offset}) #{tz.name}" +    end +    value ||= :last + +    [label, value] +  end + +  def input(wrapper_options = {}) +    super wrapper_options +  end +end diff --git a/app/views/companies/_form.html.slim b/app/views/companies/_form.html.slim index ec003b836..4aa08e267 100644 --- a/app/views/companies/_form.html.slim +++ b/app/views/companies/_form.html.slim @@ -9,7 +9,7 @@        = f.input :phone        = f.input :fax        = f.input :email, as: :email -      = f.input :time_zone, include_blank: true +      = f.input :time_zone, as: :full_time_zone, include_blank: true        = f.input :url        = f.input :registration_number, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@line_referential)}.company.registration_number")}        - if resource.custom_fields.present? diff --git a/app/views/referential_companies/_form.html.slim b/app/views/referential_companies/_form.html.slim index 0e7b20af4..bac6d6694 100644 --- a/app/views/referential_companies/_form.html.slim +++ b/app/views/referential_companies/_form.html.slim @@ -9,7 +9,7 @@        = f.input :phone        = f.input :fax        = f.input :email, as: :email -      = f.input :time_zone, include_blank: true +      = f.input :time_zone, as: :full_time_zone, include_blank: true        = f.input :url        = f.input :registration_number, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@line_referential)}.company.registration_number")}        - if resource.custom_fields(@referential.workgroup).any? diff --git a/app/views/referential_stop_areas/_form.html.slim b/app/views/referential_stop_areas/_form.html.slim index 3921c8bf1..bf416ebb0 100644 --- a/app/views/referential_stop_areas/_form.html.slim +++ b/app/views/referential_stop_areas/_form.html.slim @@ -30,7 +30,7 @@        = form.input :fare_code, as: :number        = form.input :nearest_topic_name, :input_html => { :title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.nearest_topic_name")}        = form.input :comment, as: :text, :input_html => { :rows => 5, :title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.comment") } -      = form.input :time_zone, :include_blank => true +      = form.input :time_zone, as: :full_time_zone, :include_blank => true        = form.input :url    .pmr_info diff --git a/app/views/stop_areas/_form.html.slim b/app/views/stop_areas/_form.html.slim index 220097a69..2ac316632 100644 --- a/app/views/stop_areas/_form.html.slim +++ b/app/views/stop_areas/_form.html.slim @@ -52,7 +52,7 @@            = f.input :fare_code            = f.input :nearest_topic_name, :input_html => {:title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.nearest_topic_name")}            = f.input :comment, as: :text, :input_html => {:rows => 5, :title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.stop_area.comment")} -          = f.input :time_zone, :include_blank => true +          = f.input :time_zone, as: :full_time_zone, include_blank: true            = f.input :url          .pmr_info diff --git a/db/migrate/20180425133154_fix_timezones.rb b/db/migrate/20180425133154_fix_timezones.rb new file mode 100644 index 000000000..0e9e5fcb3 --- /dev/null +++ b/db/migrate/20180425133154_fix_timezones.rb @@ -0,0 +1,19 @@ +class FixTimezones < ActiveRecord::Migration +  def convert tz +    return unless tz.present? +    return tz unless ActiveSupport::TimeZone[tz].present? +    ActiveSupport::TimeZone[tz].tzinfo.name +  end + +  def change +    if Apartment::Tenant.current == "public" +      Chouette::StopArea.where.not("time_zone LIKE '%/%'").find_each do |s| +        s.update time_zone: convert(s.time_zone) +      end + +      Chouette::Company.where.not("time_zone LIKE '%/%'").find_each do |c| +        c.update time_zone: convert(c.time_zone) +      end +    end +  end +end | 
