Module: Card::Set::Right::Read
Overview
Constant Summary
Constants included
from Helpers
Helpers::SET_PATTERN_TEST_REGEXP
Constants included
from Event::Api
Event::Api::OPTIONS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Card::Set
reset
Methods included from I18nScope
#mod_name, #scope
#extended, #finalize_load, #process_base_modules, #register_set
Methods included from Helpers
#format_module, #format_modules, #method_missing, #modules, #pattern_code, #respond_to_missing?, #set_name_parts, #shortname, #underscored_name
#assign_type, #attachment, #define_set_from_error, #ensure_set, #setting_opts, #stage_method
Methods included from Format
#before, #format, layout_method_name, #view, view_method_name, view_setting_method_name, wrapper_method_name
#include_set, #include_set_formats
Methods included from Trait
#card_accessor, #card_reader, #card_writer, #require_field
Methods included from Event::Api
#event
#options_card, #standardize_items
Class Method Details
.source_location ⇒ Object
7
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 7
def self.source_location; "/Users/ethan/dev/decko/gem/mod/permissions/set/right/read.rb"; end
|
Instance Method Details
#all_members ⇒ Object
63
64
65
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 63
def all_members
rule_set.item_cards limit: 0
end
|
#each_member(&block) ⇒ Object
57
58
59
60
61
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 57
def each_member &block
Auth.as_bot do
all_members.each_with_object(::Set.new, &block)
end
end
|
#event: cascade_read_rule ⇒ Object
14
15
16
17
18
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 14
event :cascade_read_rule, :finalize, after: :update_rule_cache, when: :rule? do
return unless name_is_changing? || trash_is_changing?
update_read_ruled_cards
end
|
#event: process_read_rule_update_queue ⇒ Object
81
82
83
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 81
event :process_read_rule_update_queue, :finalize do
left&.update_read_rule
end
|
#invalid_pattern_id(pattern_id) ⇒ Object
77
78
79
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 77
def invalid_pattern_id pattern_id
Rails.logger.info "invalid pattern id for read rule: #{pattern_id}"
end
|
#member_has_overriding_rule?(member) ⇒ Boolean
41
42
43
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 41
def member_has_overriding_rule? member
pattern_index(member.read_rule_class.card_id) < rule_pattern_index
end
|
#pattern_index(pattern_id) ⇒ Object
73
74
75
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 73
def pattern_index pattern_id
Pattern.ids.index(pattern_id) || invalid_pattern_id(pattern_id)
end
|
#rule_pattern_index ⇒ Object
67
68
69
70
71
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 67
def rule_pattern_index
return if trash
@rule_pattern_index ||= pattern_index rule_set&.tag&.id
end
|
#update_cards_with_read_rule_id(processed) ⇒ Object
cards with this card as a read_rule_id
These may include cards that are no longer set members if the card was renamed
(edge case)
48
49
50
51
52
53
54
55
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 48
def update_cards_with_read_rule_id processed
processed ||= ::Set.new
Card::Auth.as_bot do
Card.search(read_rule_id: id) do |card|
card.update_read_rule unless processed.include?(card.key)
end
end
end
|
#update_read_ruled_cards ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 20
def update_read_ruled_cards
Card::Rule.clear_read_rule_cache
Card.cache.reset expire
processed = update_read_rules_of_set_members
update_cards_with_read_rule_id processed unless new?
end
|
#update_read_rules_of_set_members ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb', line 31
def update_read_rules_of_set_members
return unless rule_pattern_index
each_member do |member, processed|
processed << member.key
member.update_read_rule
member.update_read_rule unless member_has_overriding_rule?(member)
end
end
|