Class: BiovisionComponent

Inherits:
ApplicationRecord show all
Includes:
FlatPriority, RequiredUniqueSlug
Defined in:
app/models/biovision_component.rb

Overview

Biovision component

Attributes:

created_at [DateTime]
parameters [JSON]
priority [Integer]
settings [JSON]
slug [String]
updated_at [DateTime]

Constant Summary collapse

SLUG_LIMIT =
250
SLUG_PATTERN =
/\A[a-z][-a-z0-9_]+[a-z0-9]\z/i.freeze
SLUG_PATTERN_HTML =
'^[a-zA-Z][-a-zA-Z0-9_]+[a-zA-Z0-9]$'
VALUE_LIMIT =
65_535

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FlatPriority

#change_priority

Class Method Details

.[](slug) ⇒ Object

Find component by slug

Parameters:

  • slug (String)


28
29
30
# File 'app/models/biovision_component.rb', line 28

def self.[](slug)
  find_by(slug: slug)
end

Instance Method Details

#[]=(slug, value) ⇒ Object

Parameters:

  • slug (String)
  • value


53
54
55
56
# File 'app/models/biovision_component.rb', line 53

def []=(slug, value)
  parameters[slug.to_s] = value
  save!
end

#add_administrator(user) ⇒ Object

Parameters:



75
76
77
78
79
80
81
# File 'app/models/biovision_component.rb', line 75

def add_administrator(user)
  link = biovision_component_users.find_by(user: user)

  return if link.nil?

  link.update(administrator: true)
end

#add_privilege(user, privilege_slug) ⇒ Object

Parameters:

  • user (User)
  • privilege_slug (String|Symbol)


94
95
96
97
98
99
100
# File 'app/models/biovision_component.rb', line 94

def add_privilege(user, privilege_slug)
  return if user.nil?

  link = biovision_component_users.find_or_create_by(user: user)
  link.data[privilege_slug.to_s] = true
  link.save
end

#get(slug, default_value = '') ⇒ Object

Parameters:

  • slug (String)
  • default_value (String) (defaults to: '')


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

def get(slug, default_value = '')
  parameters.fetch(slug.to_s) { default_value }
end

#nameObject



66
67
68
# File 'app/models/biovision_component.rb', line 66

def name
  I18n.t("biovision.components.#{slug}.name", default: slug)
end

#privilegesObject



70
71
72
# File 'app/models/biovision_component.rb', line 70

def privileges
  biovision_component_users.recent
end

#receive(slug) ⇒ Object

Deprecated.

use #get

Parameters:

  • slug (String)


40
41
42
# File 'app/models/biovision_component.rb', line 40

def receive(slug)
  parameters[slug.to_s]
end

#receive!(slug, default_value = '') ⇒ Object

Deprecated.

use #get

Parameters:

  • slug (String)
  • default_value (String) (defaults to: '')


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

def receive!(slug, default_value = '')
  get(slug, default_value)
end

#remove_administrator(user) ⇒ Object

Parameters:



84
85
86
87
88
89
90
# File 'app/models/biovision_component.rb', line 84

def remove_administrator(user)
  link = biovision_component_users.find_by(user: user)

  return if link.nil?

  link.update(administrator: false)
end

#remove_privilege(user, privilege_slug) ⇒ Object

Parameters:

  • user (User)
  • privilege_slug (String|Symbol)


104
105
106
107
108
109
110
111
# File 'app/models/biovision_component.rb', line 104

def remove_privilege(user, privilege_slug)
  link = biovision_component_users.find_by(user: user)

  return if link.nil?

  link.data[privilege_slug.to_s] = false
  link.save
end

#visible_to?(user) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


59
60
61
62
63
64
# File 'app/models/biovision_component.rb', line 59

def visible_to?(user)
  return false if user.nil?
  return true if user.super_user?

  biovision_component_users.where(user: user).exists?
end