class News

Clase para las Noticias. Es subclase de Document, por lo que usa la tabla documents

Public Class Methods

ley_vivienda() click to toggle source

/ Para euskadi.net

# File app/models/news.rb, line 102
def self.ley_vivienda
  begin
    self.find(4597)
  rescue
    nil
  end
end
most_recent() click to toggle source
# File app/models/news.rb, line 110
def self.most_recent
  self.published.translated.listable.find :all, 
    :include => :organization, 
    :order => "published_at DESC", 
    :limit => 29
end
most_recent_with_image() click to toggle source
# File app/models/news.rb, line 117
def self.most_recent_with_image
  self.most_recent.select {|n| n.has_video? || n.has_cover_photo? || n.has_photos?}
end

Public Instance Methods

attachment_for(name) click to toggle source

See thewebfellas.com/blog/2008/11/2/goodbye-attachment_fu-hello-paperclip#comment-2415

# File app/models/news.rb, line 63
def attachment_for name
  @_paperclip_attachments ||= {}
  @_paperclip_attachments[name] ||= Attachment.new(name, self, self.class.attachment_definitions[name])
end
cuerpo(lang_code=I18n.locale) click to toggle source
# File app/models/news.rb, line 89
def cuerpo(lang_code=I18n.locale)
  c = self.pretty_body(lang_code).dup
  if self.subtitle.present?
    c = c.gsub(/<[^<]+class="r01Subtitular".*?>#{Regexp.escape(self.subtitle(lang_code))}<\/.+?>/, '')
  end
  if self.entradilla.present?
    c = c.gsub(/<[^<]+class="r01Entradilla".*?>#{Regexp.escape(self.entradilla(lang_code))}<\/.+?>/, '')
  end
  
  return c
end
debate_id() click to toggle source

Noticias que corresponden a Debate

# File app/models/news.rb, line 155
def debate_id
  self.debate.present? ? self.debate.id : nil
end
debate_id=(d_id) click to toggle source
# File app/models/news.rb, line 159
def debate_id=(d_id)
  if debate = Debate.find(d_id)
    self.debate = debate
  end
  true
end
entradilla(lang_code=I18n.locale) click to toggle source
# File app/models/news.rb, line 81
def entradilla(lang_code=I18n.locale)
  if self.send("body_#{lang_code}").present? && m = self.send("body_#{lang_code}").match(/<.+class=\"r01Entradilla\".*?>(.+?)</) 
    return m[1]
  else
    return ""
  end
end
is_consejo_news() click to toggle source
# File app/models/news.rb, line 146
def is_consejo_news
  !consejo_news_id.nil? && consejo_news_id != 19841984
end
is_programa_de_gobierno_news() click to toggle source
# File app/models/news.rb, line 150
def is_programa_de_gobierno_news
  consejo_news_id == 19841984
end
subtitle(lang_code=I18n.locale) click to toggle source

Para euskadi.net

# File app/models/news.rb, line 73
def subtitle(lang_code=I18n.locale)
  if self.send("body_#{lang_code}").present? && m = self.send("body_#{lang_code}").match(/<.+class=\"r01Subtitular\".*?>(.+?)</) 
    return m[1]
  else
    return ""
  end
end

Protected Instance Methods

disable_unnecessary_fields() click to toggle source

No todas las columnas de la tabla documents se utilizan en las noticias, por lo que nos aseguramos de que están vacías. Se llama desde before_save

# File app/models/news.rb, line 170
def disable_unnecessary_fields
  self.starts_at = nil
  self.ends_at = nil
  self.place = nil
  self.lat = nil
  self.lng = nil
  self.location_for_gmaps = nil
  self.stream_flow_id = false
  self.journalist_alert_version = 0
  self.staff_alert_version = 0
end
schedule_tweets() click to toggle source

Programa el auto-tweeteo de las noticias publicadas en irekia, con fecha igual a la fecha de publicacion en la web. Se llama desde before_save

# File app/models/news.rb, line 184
def schedule_tweets
  # Si ha pasado más de un mes desde su publicación, no lo twitteamos
  if self.published_at && self.published_at >= 1.month.ago
    # Primero borramos los tweets pendientes de este evento, por si ha cambiado la fecha
    DocumentTweet.delete_all(["document_id= ? AND tweeted_at IS NULL", self.id])

    Event::LANGUAGES.each do |l|
      if self.published? && self.translated_to?(l.to_s) && !DocumentTweet.exists?(:document_id => self.id, :tweet_locale => l.to_s)
        self.tweets.build(:tweet_account => "irekia_news", :tweet_at => self.published_at, :tweet_locale => l.to_s)
      end
    end    
  end
end