Module: Card::Set::Right::Read

Extended by:
Card::Set
Includes:
Abstract::Permission
Defined in:
platypus/tmp/set/gem-defaults/mod007-permissions/right/read.rb

Overview

Set: All “+Read” cards

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

Methods included from Card::Set::Registrar

#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

Methods included from AdvancedApi

#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

Methods included from Inheritance

#include_set, #include_set_formats

Methods included from Trait

#card_accessor, #card_reader, #card_writer, #require_field

Methods included from Event::Api

#event

Methods included from Abstract::Permission

#options_card, #standardize_items

Class Method Details

.source_locationObject



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_membersObject



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_ruleObject



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_queueObject



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

Returns:

  • (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_indexObject



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_cardsObject



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 # maybe be more surgical, just Auth.user related
  expire # probably shouldn't be necessary,
  # but was sometimes getting cached version when card should be in the
  # trash.  could be related to other bugs?

  processed = update_read_rules_of_set_members
  update_cards_with_read_rule_id processed unless new?
end

#update_read_rules_of_set_membersObject



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