Class: Vulgata::TranslationState

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
StatusTypes
Defined in:
app/models/vulgata/translation_state.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#tr_dataObject

Returns the value of attribute tr_data.



9
10
11
# File 'app/models/vulgata/translation_state.rb', line 9

def tr_data
  @tr_data
end

Instance Method Details

#apply_current_version_to_itemObject



86
87
88
89
# File 'app/models/vulgata/translation_state.rb', line 86

def apply_current_version_to_item
  self.item.vlg_skip_pendify = true
  self.item.vulgata_save_translation(self)
end

#approve_translation(translator = nil) ⇒ Object



63
64
65
66
67
68
69
70
71
72
# File 'app/models/vulgata/translation_state.rb', line 63

def approve_translation translator = nil
  transaction_succeeded = Vulgata::TranslationState.transaction do
    self.apply_current_version_to_item
    self.update(status: :approved, user: translator, locked: false)
  end

  self.item.vulgata_after_approved if transaction_succeeded

  transaction_succeeded
end

#item_classObject



19
20
21
# File 'app/models/vulgata/translation_state.rb', line 19

def item_class
  @item_class ||= self.item_type.constantize
end

#item_class_nameObject



27
28
29
# File 'app/models/vulgata/translation_state.rb', line 27

def item_class_name
  self.item.class.respond_to?(:vulgata_name) ? self.item.class.vulgata_name : self.item_type
end

#item_nameObject



31
32
33
# File 'app/models/vulgata/translation_state.rb', line 31

def item_name
  self.item.respond_to?(:vulgata_name) ? self.item.vulgata_name.to_s.truncate(15, omission: "...") : self.item_id
end

#latest_rejected_versionObject



82
83
84
# File 'app/models/vulgata/translation_state.rb', line 82

def latest_rejected_version
  self.versions.where(status: Vulgata::TranslationState.statuses[:rejected]).order(id: :asc).last
end

#latest_translated_versionObject



78
79
80
# File 'app/models/vulgata/translation_state.rb', line 78

def latest_translated_version
  self.versions.where(status: Vulgata::TranslationState.statuses[:done]).where.not(translation_data: nil).order(id: :asc).last
end

#long_item_nameObject



35
36
37
# File 'app/models/vulgata/translation_state.rb', line 35

def long_item_name
  self.item.respond_to?(:vulgata_name) ? self.item.vulgata_name.to_s.truncate(40, omission: "...") : self.item_id
end

#pending_approval?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'app/models/vulgata/translation_state.rb', line 74

def pending_approval?
  self.status.to_sym == :done || self.status.to_sym == :proofreading
end

#preprocced_translation_dataObject



47
48
49
# File 'app/models/vulgata/translation_state.rb', line 47

def preprocced_translation_data
  self.item.vulgata_preprocess_getter(translation_data)
end

#save_translation_version(translation_data, translator) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
# File 'app/models/vulgata/translation_state.rb', line 51

def save_translation_version translation_data, translator
  return false if self.source?

  Vulgata::TranslationState.transaction do
    self.status = Vulgata::TranslationState.statuses[:done]
    self.user = translator if translator.present?
    self.updated_at = DateTime.now
    self.tr_data = self.item.vulgata_preprocess_setter(translation_data)
    self.save
  end
end

#source_translation_stateObject



23
24
25
# File 'app/models/vulgata/translation_state.rb', line 23

def source_translation_state
  @source_state ||= Vulgata::TranslationState.where(item_type: self.item_type, item_id: self.item_id, status: Vulgata::TranslationState.statuses[:source]).first
end

#statusObject



14
15
16
17
# File 'app/models/vulgata/translation_state.rb', line 14

def status
  s = super
  s = s.to_sym unless s.nil?
end

#translated_attribute_namesObject

returns array of the translated attributes names



92
93
94
# File 'app/models/vulgata/translation_state.rb', line 92

def translated_attribute_names
  self.item.vulgata_translated_attribute_names
end

#translation_dataObject



39
40
41
42
43
44
45
# File 'app/models/vulgata/translation_state.rb', line 39

def translation_data
  if ltv = latest_translated_version
    @translation ||= ltv.translation_data
  end

  @translation ||= self.item.vulgata_translation_data self
end