| Class | News |
| In: |
app/models/news.rb
|
| Parent: | Document |
Clase para las Noticias. Es subclase de Document, por lo que usa la tabla documents
Garantiza que solo habrá una noticia destacada en Irekia Se llama before_update
# File app/models/news.rb, line 81
81: def check_only_one_featured
82: Document.update_all("featured='f'") if featured && featured_changed?
83: end
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 46
46: def disable_unnecessary_fields
47: self.starts_at = nil
48: self.ends_at = nil
49: self.place = nil
50: self.lat = nil
51: self.lng = nil
52: self.location_for_gmaps = nil
53: self.stream_flow_id = false
54: self.journalist_alert_version = 0
55: self.staff_alert_version = 0
56: end
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 67
67: def schedule_tweets
68: # Primero borramos los tweets pendientes de este evento, por si ha cambiado la fecha
69: DocumentTweet.delete_all(["document_id= ? AND tweeted_at IS NULL", self.id])
70:
71: Event::LANGUAGES.each do |l|
72: if self.published? && self.show_in_irekia? && self.translated_to?(l) && !DocumentTweet.exists?(:document_id => self.id, :tweet_locale => l)
73: self.tweets.build(:tweet_account => "irekia_news", :tweet_at => self.published_at, :tweet_locale => l)
74: end
75: end
76: end
Crea el directorio para los contenidos multimedia de esta noticia a partir de lo especificado en el parametro multimedia_dir. Se llama desde before_save
# File app/models/news.rb, line 17
17: def set_and_create_multimedia_path
18: if (self.new_record? && self.multimedia_dir.present?) || (self.multimedia_dir_changed? && self.multimedia_dir_was.blank? && self.multimedia_dir.present?)
19: # if m = self.multimedia_dir.match(/^(\d{4}\/\d{2}\/\d{2}\/)/)
20: self.multimedia_path = self.multimedia_dir.dup
21: self.multimedia_path << "/" unless self.multimedia_path.match(/\/$/)
22:
23: # else
24: # date = self.published_at ? self.published_at.to_date : Date.today
25: # self.multimedia_path = "#{date.year}/#{date.strftime("%m")}/#{date.strftime("%d")}/#{self.multimedia_dir}/"
26: # end
27: m_path_array = self.multimedia_path.split('/')
28: FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_irekia"]).join('/'))
29: logger.info "Creando directorio #{Document::MULTIMEDIA_PATH + (m_path_array + ['solo_irekia']).join('/')}"
30: FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_agencia"]).join('/'))
31: if Document.exists?(:multimedia_path => self.multimedia_path)
32: self.errors.add(:multimedia_dir, I18n.t('activerecord.errors.messages.taken'))
33: return false
34: else
35: return self.multimedia_path
36: end
37: else
38: return true
39: end
40: end