agenda-libre-ruby/app/models/region.rb

40 lines
1.0 KiB
Ruby
Raw Normal View History

# This is mostly to group events around a region
class Region < ApplicationRecord
belongs_to :region
2017-09-17 11:14:49 +02:00
has_many :regions, dependent: :nullify
2017-09-17 11:14:49 +02:00
has_many :orgas, dependent: :destroy
2014-01-02 00:21:49 +01:00
default_scope { order :name }
2019-12-21 21:00:16 +01:00
scope :top, -> { where(region: nil).includes(:regions).reorder :code }
scope :local, -> { where(url: [nil, '']) }
2018-03-18 16:05:26 +01:00
scope :region, (lambda do |region|
return if region.nil? || region == 'all' || region.to_i.zero?
2018-09-15 15:05:21 +02:00
2018-03-18 16:05:26 +01:00
temp = Region.find region
where region: [temp, temp.regions].flatten
end)
2014-06-09 12:18:40 +02:00
def to_s
name
end
def flag
region.try(:flag) || code.try(:downcase)
end
# Attempt to get a corresponding timezone, used for ical
def tzid
country = TZInfo::Country.get region.try(:code) || code
if country.present? && country.zone_identifiers.length.positive?
# Get arbitrarily the first zone for this country
country.zone_identifiers[0]
else
Time.now.zone
end
rescue TZInfo::InvalidCountryCode
# Mostly useful for non country calendars
Time.now.zone
end
2013-12-03 21:56:20 +01:00
end