pbw 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/app/controllers/pbw/base_models_controller.rb +22 -10
- data/app/controllers/pbw/commands_controller.rb +11 -0
- data/app/controllers/pbw/items_controller.rb +1 -1
- data/app/models/pbw/ability.rb +35 -11
- data/app/models/pbw/area.rb +25 -0
- data/app/models/pbw/attached_process.rb +41 -0
- data/app/models/pbw/capability.rb +20 -0
- data/app/models/pbw/command.rb +105 -0
- data/app/models/pbw/constraint.rb +20 -0
- data/app/models/pbw/item.rb +16 -0
- data/app/models/pbw/item_container.rb +16 -0
- data/app/models/pbw/item_conversion.rb +16 -0
- data/app/models/pbw/item_transfer.rb +16 -0
- data/app/models/pbw/process.rb +17 -8
- data/app/models/pbw/rule.rb +16 -0
- data/app/models/pbw/token.rb +26 -1
- data/app/models/pbw/trigger.rb +20 -0
- data/app/models/pbw/user.rb +50 -14
- data/config/initializers/devise.rb +0 -8
- data/config/routes.rb +1 -1
- data/lib/generators/pbw/area/area_generator.rb +4 -0
- data/lib/generators/pbw/item/item_generator.rb +4 -0
- data/lib/generators/pbw/rules/capability/capability_generator.rb +4 -0
- data/lib/generators/pbw/rules/command/USAGE +3 -3
- data/lib/generators/pbw/rules/command/command_generator.rb +11 -11
- data/lib/generators/pbw/rules/command/templates/model.coffee +1 -0
- data/lib/generators/pbw/rules/constraint/constraint_generator.rb +4 -0
- data/lib/generators/pbw/rules/process/process_generator.rb +4 -0
- data/lib/generators/pbw/rules/trigger/trigger_generator.rb +4 -0
- data/lib/generators/pbw/scaffold_generator.rb +3 -3
- data/lib/generators/pbw/token/token_generator.rb +4 -0
- data/lib/pbw/tick.rb +8 -0
- data/lib/pbw/update.rb +8 -0
- data/lib/pbw/version.rb +1 -1
- data/lib/tasks/pbw_tasks.rake +11 -4
- metadata +36 -14
- data/app/controllers/pbw/roles_controller.rb +0 -46
- data/app/models/pbw/permission.rb +0 -13
- data/app/models/pbw/role.rb +0 -26
- data/lib/generators/pbw/rules/command/templates/command.rb +0 -18
- data/lib/generators/pbw/rules/command/templates/index.erb +0 -6
- data/lib/generators/pbw/rules/command/templates/templates/edit.jst +0 -17
- data/lib/generators/pbw/rules/command/templates/templates/index.jst +0 -16
- data/lib/generators/pbw/rules/command/templates/templates/show.jst +0 -9
- data/lib/generators/pbw/rules/command/templates/views/edit_view.coffee +0 -24
- data/lib/generators/pbw/rules/command/templates/views/index_view.coffee +0 -20
- data/lib/generators/pbw/rules/command/templates/views/show_view.coffee +0 -8
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDE5MzY0MTBlZjgxMjU3OGMxMGMwZTAzMzk4ZThlZmQ4ZGE3YjVhZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWFlMzkxMjY1MDFjYzZiNjljYjU1MWZiN2JiZjhlYTgzZTcxNzk4YQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZWNkMzU1NWIyMDEyYTg1YTY0OTQ1YTIzZWI3ZDAxNmVlYmM5ZTNiNTdjNjQy
|
10
|
+
MDA3MWQ0Y2JlYzIyMTQzODRkZWJiNmI4ZmFmODAyYjI2MzNlNjRiMWExYzRm
|
11
|
+
ZDJlMmJiNWM4MDczN2IxN2IzYmU4ZDI5YTg2ZDI2YmUxNDg3OWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzI0YjMyZjI5ZWEzZGZjYWQ4NWQ3MThlMzQzM2VmMjI0NTU4ZGZlZjM2ZTUw
|
14
|
+
NDM5Zjk4MDkzYTMwZDk2Zjg1MWY2Yzc0ZjNjYTAwNTdiM2EwODFkMzIwNmY0
|
15
|
+
Y2Y0OTNhMDJjMjI2ODU3MzMyNDBmODkwY2NiOWEzMzdmNzQ5NGU=
|
@@ -9,6 +9,19 @@ module Pbw
|
|
9
9
|
before_filter :model_for_read, :only => [:show]
|
10
10
|
before_filter :model_for_update, :only => [:edit, :update, :destroy]
|
11
11
|
before_filter :index_models, :only => [:index]
|
12
|
+
before_filter :model_for_create, :only => [:new, :create]
|
13
|
+
|
14
|
+
def set_model_class
|
15
|
+
# stub method
|
16
|
+
end
|
17
|
+
|
18
|
+
def update_model_before_create(model)
|
19
|
+
# stub method
|
20
|
+
end
|
21
|
+
|
22
|
+
def update_model_before_update(model)
|
23
|
+
# stub method
|
24
|
+
end
|
12
25
|
|
13
26
|
def index
|
14
27
|
session[:referrer] = request.url
|
@@ -30,17 +43,12 @@ module Pbw
|
|
30
43
|
end
|
31
44
|
|
32
45
|
def new
|
33
|
-
authorize! :manage, Admin
|
34
|
-
@model = real_model_class.new
|
35
46
|
respond_with(@model) do |format|
|
36
47
|
format.json { render json: @model }
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
51
|
def create
|
41
|
-
authorize! :manage, real_model_class
|
42
|
-
@model = real_model_class.new(params[model_param])
|
43
|
-
@model.image = @image if @image
|
44
52
|
if @model.save
|
45
53
|
respond_with(@model) do |format|
|
46
54
|
format.json { render json: @model }
|
@@ -54,10 +62,6 @@ module Pbw
|
|
54
62
|
|
55
63
|
def update
|
56
64
|
if @model.update_attributes(params[model_param])
|
57
|
-
if @image
|
58
|
-
@model.image = @image
|
59
|
-
@model.save
|
60
|
-
end
|
61
65
|
respond_with(@model) do |format|
|
62
66
|
format.json { render json: @model }
|
63
67
|
end
|
@@ -100,17 +104,25 @@ module Pbw
|
|
100
104
|
end
|
101
105
|
|
102
106
|
def index_models
|
103
|
-
authorize! :
|
107
|
+
authorize! :manage, model_class
|
104
108
|
@models = model_class.desc(:created_at)
|
105
109
|
end
|
106
110
|
|
111
|
+
def model_for_create
|
112
|
+
authorize! :create, real_model_class
|
113
|
+
@model = real_model_class.new(params[model_param])
|
114
|
+
update_model_before_create(@model)
|
115
|
+
end
|
116
|
+
|
107
117
|
def model_for_read
|
108
118
|
@model = model_class.find(model_id)
|
119
|
+
authorize! :read, @model
|
109
120
|
end
|
110
121
|
|
111
122
|
def model_for_update
|
112
123
|
@model = model_class.find(model_id)
|
113
124
|
authorize! :update, @model
|
125
|
+
update_model_before_update(@model)
|
114
126
|
end
|
115
127
|
end
|
116
128
|
|
data/app/models/pbw/ability.rb
CHANGED
@@ -1,13 +1,37 @@
|
|
1
|
+
require 'cancan'
|
2
|
+
|
1
3
|
class Ability
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
include CanCan::Ability
|
5
|
+
|
6
|
+
MANAGED_CLASSES = [Area, Capability, Command, Constraint, Item, ItemContainer, ItemConversion, ItemTransfer, Process, Rule, Token, Trigger, User]
|
7
|
+
|
8
|
+
def initialize(user)
|
9
|
+
user ||= User.new
|
10
|
+
if user.superadmin?
|
11
|
+
can :manage, :all
|
12
|
+
else
|
13
|
+
can do |action, subject_class, subject|
|
14
|
+
case action.to_s
|
15
|
+
when "index", "show", "search"
|
16
|
+
check_method = :viewable_by?
|
17
|
+
when "create", "new"
|
18
|
+
check_method = :creatable_by?
|
19
|
+
when "edit", "update"
|
20
|
+
check_method = :editable_by?
|
21
|
+
when "delete", "destroy"
|
22
|
+
check_method = :deletable_by?
|
23
|
+
else
|
24
|
+
check_method = :viewable_by?
|
25
|
+
end
|
26
|
+
check_class = subject_class.respond_to?(check_method) ? subject_class : parent_of_subject_class(subject_class)
|
27
|
+
check_class.send(check_method, user, subject)
|
28
|
+
end
|
29
|
+
end
|
11
30
|
end
|
12
|
-
|
13
|
-
|
31
|
+
|
32
|
+
def parent_of_subject_class(subject_class)
|
33
|
+
MANAGED_CLASSES.each do |klass|
|
34
|
+
return klass if subject_class.ancestors.include?(klass)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/app/models/pbw/area.rb
CHANGED
@@ -10,9 +10,26 @@ module Pbw
|
|
10
10
|
has_many :item_containers
|
11
11
|
has_and_belongs_to_many :constraints
|
12
12
|
has_and_belongs_to_many :triggers
|
13
|
+
has_and_belongs_to_many :attached_processes
|
13
14
|
|
14
15
|
attr_accessible :name
|
15
16
|
|
17
|
+
def self.viewable_by?(user, subject)
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.creatable_by?(user, subject)
|
22
|
+
user.admin?
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.editable_by?(user, subject)
|
26
|
+
user.admin?
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.deletable_by?(user, subject)
|
30
|
+
user.admin?
|
31
|
+
end
|
32
|
+
|
16
33
|
def before_token_enters(token)
|
17
34
|
# stub method
|
18
35
|
true
|
@@ -49,6 +66,14 @@ module Pbw
|
|
49
66
|
# stub method
|
50
67
|
end
|
51
68
|
|
69
|
+
def attach_tick_process(process, ticks_to_wait=0)
|
70
|
+
AttachedProcess.create(area: self, process: process, tickable: true, ticks_waiting: ticks_to_wait)
|
71
|
+
end
|
72
|
+
|
73
|
+
def attach_update_process(process, updates_to_wait=0)
|
74
|
+
AttachedProcess.create(area: self, process: process, updatable: true, updates_waiting: updates_to_wait)
|
75
|
+
end
|
76
|
+
|
52
77
|
def count_item(item)
|
53
78
|
container = ItemContainer.find_for_area(self)
|
54
79
|
container ? container.quantity : 0
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Pbw
|
2
|
+
class AttachedProcess < Rule
|
3
|
+
belongs_to :token
|
4
|
+
belongs_to :area
|
5
|
+
belongs_to :process
|
6
|
+
|
7
|
+
field :tickable, :type => Boolean, :default => false
|
8
|
+
field :updatable, :type => Boolean, :default => false
|
9
|
+
field :ticks_waiting, :type => Integer, :default => 0
|
10
|
+
field :updates_waiting, :type => Integer, :default => 0
|
11
|
+
|
12
|
+
scope :tickable, where(tickable: true)
|
13
|
+
scope :updatable, where(updatable: true)
|
14
|
+
|
15
|
+
def tick!
|
16
|
+
return unless self.tickable && self.process && (self.token || self.area)
|
17
|
+
unless self.ticks_waiting > 0
|
18
|
+
self.process.run!(token_or_area)
|
19
|
+
destroy
|
20
|
+
else
|
21
|
+
self.ticks_waiting = self.ticks_waiting - 1
|
22
|
+
save!
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def update!
|
27
|
+
return unless self.updatable && self.process && (self.token || self.area)
|
28
|
+
unless self.updates_waiting > 0
|
29
|
+
self.process.run!(token_or_area)
|
30
|
+
destroy
|
31
|
+
else
|
32
|
+
self.updates_waiting = self.updates_waiting - 1
|
33
|
+
save!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def token_or_area
|
38
|
+
self.token || self.area
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -2,6 +2,26 @@ module Pbw
|
|
2
2
|
class Capability < Rule
|
3
3
|
has_and_belongs_to_many :tokens
|
4
4
|
|
5
|
+
def self.viewable_by?(user, subject)
|
6
|
+
return true if user.admin?
|
7
|
+
subject.tokens.each do |token|
|
8
|
+
return true token.user && token.user == user
|
9
|
+
end
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.creatable_by?(user, subject)
|
14
|
+
user.admin?
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.editable_by?(user, subject)
|
18
|
+
user.admin?
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.deletable_by?(user, subject)
|
22
|
+
user.admin?
|
23
|
+
end
|
24
|
+
|
5
25
|
def before_process(token, &changeset)
|
6
26
|
# stub method
|
7
27
|
true
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Pbw
|
2
|
+
class Command < Rule
|
3
|
+
belongs_to :token
|
4
|
+
belongs_to :user
|
5
|
+
|
6
|
+
before_validation :validate_token_and_user
|
7
|
+
|
8
|
+
field :tickable, :type => Boolean, :default => false
|
9
|
+
field :updatable, :type => Boolean, :default => false
|
10
|
+
field :ticks_waiting, :type => Integer, :default => 0
|
11
|
+
field :updates_waiting, :type => Integer, :default => 0
|
12
|
+
|
13
|
+
before_save :set_tickable_and_updatable
|
14
|
+
|
15
|
+
scope :tickable, where(tickable: true)
|
16
|
+
scope :updatable, where(updatable: true)
|
17
|
+
|
18
|
+
def self.viewable_by?(user, subject)
|
19
|
+
user.admin? || subject.user == user
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.creatable_by?(user, subject)
|
23
|
+
user.admin? || subject.user.nil? || (subject.user == user && subject.token.user && subject.token.user == user)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.editable_by?(user, subject)
|
27
|
+
user.admin? || (subject.user == user && subject.token.user && subject.token.user == user)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.deletable_by?(user, subject)
|
31
|
+
user.admin? || (subject.user == user && subject.token.user && subject.token.user == user)
|
32
|
+
end
|
33
|
+
|
34
|
+
def valid_for_token?(token)
|
35
|
+
# stub method
|
36
|
+
false
|
37
|
+
end
|
38
|
+
|
39
|
+
def valid_for_user?(user)
|
40
|
+
# stub method
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def runs_on_ticks?
|
45
|
+
# stub method
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
def runs_on_updates?
|
50
|
+
# stub method
|
51
|
+
false
|
52
|
+
end
|
53
|
+
|
54
|
+
def processes
|
55
|
+
# stub method
|
56
|
+
[]
|
57
|
+
end
|
58
|
+
|
59
|
+
def set_tickable_and_updatable
|
60
|
+
self.tickable = runs_on_ticks?
|
61
|
+
self.updatable = runs_on_updates?
|
62
|
+
end
|
63
|
+
|
64
|
+
def run_processes!
|
65
|
+
procs = processes
|
66
|
+
return if procs.nil?
|
67
|
+
if procs.responds_to?(:each)
|
68
|
+
procs.each do |process|
|
69
|
+
process.run!(self.token)
|
70
|
+
end
|
71
|
+
elsif procs.ancestors.include?(Process)
|
72
|
+
process.run!(self.token)
|
73
|
+
else
|
74
|
+
raise "Invalid return method from #{self.class.name}.processes"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def validate_token_and_user
|
79
|
+
errors.add(:token, 'Invalid token') unless valid_for_token?(self.token)
|
80
|
+
errors.add(:user, 'Invalid user') unless valid_for_user?(self.user)
|
81
|
+
end
|
82
|
+
|
83
|
+
def tick!
|
84
|
+
return unless self.tickable
|
85
|
+
unless self.ticks_waiting > 0
|
86
|
+
run_processes!
|
87
|
+
destroy
|
88
|
+
else
|
89
|
+
self.ticks_waiting = self.ticks_waiting - 1
|
90
|
+
save!
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def update!
|
95
|
+
return unless self.updatable
|
96
|
+
unless self.updates_waiting > 0
|
97
|
+
run_processes!
|
98
|
+
destroy
|
99
|
+
else
|
100
|
+
self.updates_waiting = self.updates_waiting - 1
|
101
|
+
save!
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -3,6 +3,26 @@ module Pbw
|
|
3
3
|
has_and_belongs_to_many :tokens
|
4
4
|
has_and_belongs_to_many :areas
|
5
5
|
|
6
|
+
def self.viewable_by?(user, subject)
|
7
|
+
return true if user.admin?
|
8
|
+
subject.tokens.each do |token|
|
9
|
+
return true token.user && token.user == user
|
10
|
+
end
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.creatable_by?(user, subject)
|
15
|
+
user.admin?
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.editable_by?(user, subject)
|
19
|
+
user.admin?
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.deletable_by?(user, subject)
|
23
|
+
user.admin?
|
24
|
+
end
|
25
|
+
|
6
26
|
def before_process(token_or_area, &changeset)
|
7
27
|
# stub method
|
8
28
|
true
|
data/app/models/pbw/item.rb
CHANGED
@@ -12,6 +12,22 @@ module Pbw
|
|
12
12
|
|
13
13
|
attr_accessible :name
|
14
14
|
|
15
|
+
def self.viewable_by?(user, subject)
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.creatable_by?(user, subject)
|
20
|
+
user.admin?
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.editable_by?(user, subject)
|
24
|
+
user.admin?
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.deletable_by?(user, subject)
|
28
|
+
user.admin?
|
29
|
+
end
|
30
|
+
|
15
31
|
def before_add(container, quantity)
|
16
32
|
# stub method
|
17
33
|
true
|
@@ -12,6 +12,22 @@ module Pbw
|
|
12
12
|
|
13
13
|
attr_accessible :item, :token, :area, :user, :quantity
|
14
14
|
|
15
|
+
def self.viewable_by?(user, subject)
|
16
|
+
user.admin? || subject.user == user || (subject.token && subject.token.user == user)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.creatable_by?(user, subject)
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.editable_by?(user, subject)
|
24
|
+
user.admin? || subject.user == user || (subject.token && subject.token.user == user)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.deletable_by?(user, subject)
|
28
|
+
user.admin?
|
29
|
+
end
|
30
|
+
|
15
31
|
def self.find_or_create_for_token(token, item, quantity_to_add)
|
16
32
|
container = where(token: token, item: item).first
|
17
33
|
container = new(token: token, item: item) unless container
|
@@ -5,6 +5,22 @@ module Pbw
|
|
5
5
|
belongs_to :item
|
6
6
|
field :from, :type => Hash
|
7
7
|
|
8
|
+
def self.viewable_by?(user, subject)
|
9
|
+
true
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.creatable_by?(user, subject)
|
13
|
+
user.admin?
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.editable_by?(user, subject)
|
17
|
+
user.admin?
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.deletable_by?(user, subject)
|
21
|
+
user.admin?
|
22
|
+
end
|
23
|
+
|
8
24
|
def set_from_item(item, quantity)
|
9
25
|
return false unless item && quantity
|
10
26
|
self.from ||= {}
|
@@ -5,5 +5,21 @@ module Pbw
|
|
5
5
|
belongs_to :item
|
6
6
|
field :from_class, :type => String
|
7
7
|
field :to_class, :type => String
|
8
|
+
|
9
|
+
def self.viewable_by?(user, subject)
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.creatable_by?(user, subject)
|
14
|
+
user.admin?
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.editable_by?(user, subject)
|
18
|
+
user.admin?
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.deletable_by?(user, subject)
|
22
|
+
user.admin?
|
23
|
+
end
|
8
24
|
end
|
9
25
|
end
|
data/app/models/pbw/process.rb
CHANGED
@@ -1,9 +1,23 @@
|
|
1
1
|
module Pbw
|
2
2
|
class Process < Rule
|
3
3
|
has_many :triggers
|
4
|
+
has_and_belongs_to_many :attached_processes
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
def self.viewable_by?(user, subject)
|
7
|
+
user.admin?
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.creatable_by?(user, subject)
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.editable_by?(user, subject)
|
15
|
+
user.admin?
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.deletable_by?(user, subject)
|
19
|
+
user.admin?
|
20
|
+
end
|
7
21
|
|
8
22
|
def before_run(token_or_area)
|
9
23
|
# stub method
|
@@ -16,7 +30,7 @@ module Pbw
|
|
16
30
|
|
17
31
|
def changeset(token_or_area)
|
18
32
|
# stub method
|
19
|
-
|
33
|
+
Pbw::Changeset.new
|
20
34
|
end
|
21
35
|
|
22
36
|
def execute_changeset!(&changeset)
|
@@ -40,10 +54,5 @@ module Pbw
|
|
40
54
|
token_or_area.check_triggers!
|
41
55
|
after_triggers(token_or_area)
|
42
56
|
end
|
43
|
-
|
44
|
-
def schedule!(token_or_area)
|
45
|
-
# TODO
|
46
|
-
raise "Not implemented"
|
47
|
-
end
|
48
57
|
end
|
49
58
|
end
|
data/app/models/pbw/rule.rb
CHANGED
@@ -6,5 +6,21 @@ module Pbw
|
|
6
6
|
validates :name, presence: true, uniqueness: true
|
7
7
|
|
8
8
|
attr_accessible :name
|
9
|
+
|
10
|
+
def self.viewable_by?(user, subject)
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.creatable_by?(user, subject)
|
15
|
+
user.admin?
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.editable_by?(user, subject)
|
19
|
+
user.admin?
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.deletable_by?(user, subject)
|
23
|
+
user.admin?
|
24
|
+
end
|
9
25
|
end
|
10
26
|
end
|
data/app/models/pbw/token.rb
CHANGED
@@ -6,14 +6,31 @@ module Pbw
|
|
6
6
|
validates_presence_of :name
|
7
7
|
|
8
8
|
belongs_to :area
|
9
|
+
belongs_to :user
|
9
10
|
has_and_belongs_to_many :capabilities
|
10
11
|
has_and_belongs_to_many :constraints
|
11
12
|
has_and_belongs_to_many :triggers
|
12
|
-
has_and_belongs_to_many :
|
13
|
+
has_and_belongs_to_many :attached_processes
|
13
14
|
has_many :item_containers
|
14
15
|
|
15
16
|
attr_accessible :name
|
16
17
|
|
18
|
+
def self.viewable_by?(user, subject)
|
19
|
+
user.admin? || subject.user == user
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.creatable_by?(user, subject)
|
23
|
+
true
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.editable_by?(user, subject)
|
27
|
+
user.admin? || subject.user == user
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.deletable_by?(user, subject)
|
31
|
+
user.admin? || subject.user == user
|
32
|
+
end
|
33
|
+
|
17
34
|
def before_ownership(user)
|
18
35
|
# stub method
|
19
36
|
true
|
@@ -50,6 +67,14 @@ module Pbw
|
|
50
67
|
# stub method
|
51
68
|
end
|
52
69
|
|
70
|
+
def attach_tick_process(process, ticks_to_wait=0)
|
71
|
+
AttachedProcess.create(token: self, process: process, tickable: true, ticks_waiting: ticks_to_wait)
|
72
|
+
end
|
73
|
+
|
74
|
+
def attach_update_process(process, updates_to_wait=0)
|
75
|
+
AttachedProcess.create(token: self, process: process, updatable: true, updates_waiting: updates_to_wait)
|
76
|
+
end
|
77
|
+
|
53
78
|
def can_convert?(item)
|
54
79
|
self.capabilities.any?{|c| c.can_convert?(item)}
|
55
80
|
end
|
data/app/models/pbw/trigger.rb
CHANGED
@@ -4,6 +4,26 @@ module Pbw
|
|
4
4
|
has_and_belongs_to_many :areas
|
5
5
|
belongs_to :process
|
6
6
|
|
7
|
+
def self.viewable_by?(user, subject)
|
8
|
+
return true if user.admin?
|
9
|
+
subject.tokens.each do |token|
|
10
|
+
return true token.user && token.user == user
|
11
|
+
end
|
12
|
+
false
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.creatable_by?(user, subject)
|
16
|
+
user.admin?
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.editable_by?(user, subject)
|
20
|
+
user.admin?
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.deletable_by?(user, subject)
|
24
|
+
user.admin?
|
25
|
+
end
|
26
|
+
|
7
27
|
def trigger?(token_or_area)
|
8
28
|
# stub method
|
9
29
|
end
|