Class: Pulitzer::Version

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
ForeignOffice::Broadcaster
Defined in:
app/models/pulitzer/version.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#processed_element_countObject

Returns the value of attribute processed_element_count.



12
13
14
# File 'app/models/pulitzer/version.rb', line 12

def processed_element_count
  @processed_element_count
end

Instance Method Details

#all_elementsObject



38
39
40
# File 'app/models/pulitzer/version.rb', line 38

def all_elements
  (content_elements.to_a + free_form_sections.to_a).sort_by{|e| e.sort_order || 0}
end

#content_element(label) ⇒ Object



30
31
32
# File 'app/models/pulitzer/version.rb', line 30

def content_element(label)
  self.content_elements.to_a.detect{|ce| ce.label == label}
end

#empty_required_content_elements?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/pulitzer/version.rb', line 55

def empty_required_content_elements?
  content_elements.required.select{|ce| ce.empty_body?}.any? || free_form_sections.includes(partials: :content_elements).map(&:partials).flatten.map(&:content_elements).flatten.select{|ce| ce.empty_body? && ce.required?}.any?
end

#has_label(label) ⇒ Object



22
23
24
# File 'app/models/pulitzer/version.rb', line 22

def has_label(label)
  .to_a.select{|pt| pt.label_type == label.class.name && pt.label_id == label.id}.any?
end

#has_label_type(label_type) ⇒ Object



18
19
20
# File 'app/models/pulitzer/version.rb', line 18

def has_label_type(label_type)
  .to_a.select{|pt| pt.label_type == label_type}.any?
end

#post_tags_for(label_type) ⇒ Object



26
27
28
# File 'app/models/pulitzer/version.rb', line 26

def (label_type)
  .to_a.select{|pt| pt.label_type == label_type}
end

#required_partials?Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/models/pulitzer/version.rb', line 59

def required_partials?
  has_all_partials = true
  free_form_section_types = post.post_type_version.free_form_section_types
  free_form_sections      = self.free_form_sections.where(name: free_form_section_types.pluck(:name))
  free_form_sections.each do |fs|
    free_form_section_type = free_form_section_types.select{|ffst| ffst.name == fs.name }
    partial_types     = free_form_section_type.first.partial_types
    partials          = fs.partials.where(label: partial_types.pluck(:label))
    has_all_partials = partial_types.all?{|pt| fs.partials.where(post_type_version_id: pt.post_type_version_id).any?}
  end
  has_all_partials
end

#section(name) ⇒ Object



34
35
36
# File 'app/models/pulitzer/version.rb', line 34

def section(name)
  self.free_form_sections.to_a.detect{|ffs| ffs.name == name}
end

#serializeObject



50
51
52
53
# File 'app/models/pulitzer/version.rb', line 50

def serialize
  self.attributes.merge \
    processed_element_count: self.processed_element_count
end

#template_content_elementsObject



42
43
44
# File 'app/models/pulitzer/version.rb', line 42

def template_content_elements
  content_elements.template
end

#total_processing_elementsObject



46
47
48
# File 'app/models/pulitzer/version.rb', line 46

def total_processing_elements
  active_version.content_elements.count + active_version..count + active_version.free_form_sections.count + 2
end