Module: Sunrise::Models::Asset

Extended by:
ActiveSupport::Concern
Included in:
Asset
Defined in:
lib/sunrise/models/asset.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#as_json(options = nil) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/sunrise/models/asset.rb', line 58

def as_json(options = nil)
  options = {
    root: 'asset',
    only: [:id, :guid, :assetable_id, :assetable_type, :user_id, :public_token],
    methods: [:filename, :url, :thumb_url, :size, :content_type]
  }.merge(options || {})

  super(options)
end

#content_type ⇒ Object



38
39
40
# File 'lib/sunrise/models/asset.rb', line 38

def content_type
  data_content_type
end

#cropper_geometry=(value) ⇒ Object



76
77
78
79
80
81
82
83
# File 'lib/sunrise/models/asset.rb', line 76

def cropper_geometry=(value)
  geometry = (value || '').to_s.split(',')

  unless geometry.map(&:blank?).any?
    @cropper_geometry_changed = true
    @cropper_geometry = geometry
  end
end

#cropper_geometry_changed? ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/sunrise/models/asset.rb', line 85

def cropper_geometry_changed?
  @cropper_geometry_changed === true
end

#filename ⇒ Object



30
31
32
# File 'lib/sunrise/models/asset.rb', line 30

def filename
  data_file_name
end

#format_created_at ⇒ Object



42
43
44
# File 'lib/sunrise/models/asset.rb', line 42

def format_created_at
  I18n.l(created_at, format: '%d.%m.%Y %H:%M')
end

#has_dimensions? ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/sunrise/models/asset.rb', line 68

def has_dimensions?
  respond_to?(:width) && respond_to?(:height)
end

#image? ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/sunrise/models/asset.rb', line 72

def image?
  Sunrise::Utils::IMAGE_TYPES.include?(data_content_type)
end

#rotate_degrees=(value) ⇒ Object



89
90
91
92
93
94
# File 'lib/sunrise/models/asset.rb', line 89

def rotate_degrees=(value)
  if value.present?
    @rotate_degrees_changed = true
    @rotate_degrees = value.to_s
  end
end

#rotate_degrees_changed? ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/sunrise/models/asset.rb', line 96

def rotate_degrees_changed?
  @rotate_degrees_changed === true
end

#size ⇒ Object



34
35
36
# File 'lib/sunrise/models/asset.rb', line 34

def size
  data_file_size
end

#thumb_url ⇒ Object



26
27
28
# File 'lib/sunrise/models/asset.rb', line 26

def thumb_url
  data.thumb.url
end

#to_xml(options = {}, &block) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sunrise/models/asset.rb', line 46

def to_xml(options = {}, &block)
  options = { only: [:id], root: 'asset' }.merge(options)

  options[:procs] ||= proc do |options, _record|
    options[:builder].tag!('filename', filename)
    options[:builder].tag!('path', url)
    options[:builder].tag!('size', data_file_size)
  end

  super
end

#uploader_can?(action, request) ⇒ Boolean

Returns:

  • (Boolean)


123
124
125
126
# File 'lib/sunrise/models/asset.rb', line 123

def uploader_can?(action, request)
  ability = ::Ability.new(uploader_user(request))
  ability.can? action.to_sym, self
end

#uploader_create(params, request = nil) ⇒ Object



104
105
106
107
108
109
110
111
112
113
# File 'lib/sunrise/models/asset.rb', line 104

def uploader_create(params, request = nil)
  if uploader_can?(:create, request)
    self.user_id = uploader_user(request).try(:id)
    params[:assetable_type] = 'Noname' if params[:assetable_type].blank?
    params[:assetable_id] = 0 if params[:assetable_id].blank?
    super
  else
    errors.add(:id, :access_denied)
  end
end

#uploader_destroy(params, request = nil) ⇒ Object



115
116
117
118
119
120
121
# File 'lib/sunrise/models/asset.rb', line 115

def uploader_destroy(params, request = nil)
  if uploader_can?(:delete, request)
    super
  else
    errors.add(:id, :access_denied)
  end
end

#uploader_user(request) ⇒ Object



100
101
102
# File 'lib/sunrise/models/asset.rb', line 100

def uploader_user(request)
  request.env['warden'].user
end