Sha256: d94c5db1f330561443a0a624ee44ebbf7cce598188fe106e9605e11ccd495415

Contents?: true

Size: 1.28 KB

Versions: 10

Compression:

Stored size: 1.28 KB

Contents

class MediaFile < ApplicationRecord
  include HasOwner

  PER_PAGE = 20

  NAME_LIMIT        = 250
  DESCRIPTION_LIMIT = 250

  mount_uploader :file, MediaFileUploader
  mount_uploader :snapshot, MediaSnapshotUploader

  belongs_to :media_folder, optional: true, counter_cache: true
  belongs_to :user, optional: true
  belongs_to :agent, optional: true

  after_initialize { self.uuid = SecureRandom.uuid if uuid.nil? }

  before_validation { self.mime_type = mime_type.to_s[0..254] }
  before_validation { self.original_name = original_name.to_s[0..254] }

  validates_presence_of :name
  validates_presence_of :file
  validates_length_of :name, maximum: NAME_LIMIT
  validates_length_of :description, maximum: DESCRIPTION_LIMIT
  validates_uniqueness_of :uuid

  scope :ordered_by_name, -> { order('name asc') }
  scope :recent, -> { order('id desc') }

  # @param [Integer] page
  def self.page_for_administration(page = 1)
    ordered_by_name.page(page).per(PER_PAGE)
  end

  def self.entity_parameters
    %i(name description media_folder_id)
  end

  def self.creation_parameters
    entity_parameters + %i(file snapshot mime_type original_name)
  end

  # @param [User] user
  def editable_by?(user)
    !locked && owned_by?(user) || UserPrivilege.user_has_privilege?(user, :chief_editor)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
biovision-base-0.41.190905.0 app/models/media_file.rb
biovision-base-0.39.190804.1 app/models/media_file.rb
biovision-base-0.37.190607.0 app/models/media_file.rb
biovision-base-0.36.190526.0 app/models/media_file.rb
biovision-base-0.34.190331.1 app/models/media_file.rb
biovision-base-0.22.180920.0 app/models/media_file.rb
biovision-base-0.21.180812.0 app/models/media_file.rb
biovision-base-0.20.180731.0 app/models/media_file.rb
biovision-base-0.19.180703.1 app/models/media_file.rb
biovision-base-0.17.180619 app/models/media_file.rb