Class News
In: app/models/news.rb
Parent: Document

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

Methods

Included Modules

DraftUtils::InstanceMethods

Public Instance methods

Garantiza que solo habrá una noticia destacada en Irekia Se llama before_update

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Validate]