pbw 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +8 -8
  2. data/app/models/pbw/area.rb +85 -2
  3. data/app/models/pbw/capability.rb +28 -0
  4. data/app/models/pbw/changeset.rb +22 -0
  5. data/app/models/pbw/constraint.rb +23 -0
  6. data/app/models/pbw/item.rb +36 -0
  7. data/app/models/pbw/item_container.rb +82 -2
  8. data/app/models/pbw/item_conversion.rb +66 -2
  9. data/app/models/pbw/process.rb +41 -2
  10. data/app/models/pbw/rule.rb +1 -2
  11. data/app/models/pbw/token.rb +134 -2
  12. data/app/models/pbw/trigger.rb +9 -0
  13. data/app/models/pbw/user.rb +1 -1
  14. data/config/initializers/devise.rb +0 -2
  15. data/config/routes.rb +10 -7
  16. data/lib/generators/pbw/area/USAGE +5 -3
  17. data/lib/generators/pbw/area/area_generator.rb +5 -0
  18. data/lib/generators/pbw/area/templates/model.coffee +2 -2
  19. data/lib/generators/pbw/install/USAGE +7 -0
  20. data/lib/generators/pbw/item/USAGE +5 -3
  21. data/lib/generators/pbw/item/item_generator.rb +9 -2
  22. data/lib/generators/pbw/item/templates/index.erb +6 -0
  23. data/lib/generators/pbw/item/templates/model.coffee +14 -0
  24. data/lib/generators/pbw/item/templates/router.coffee +31 -0
  25. data/lib/generators/pbw/item/templates/templates/edit.jst +21 -0
  26. data/lib/generators/pbw/item/templates/templates/index.jst +17 -0
  27. data/lib/generators/pbw/item/templates/templates/model.jst +8 -0
  28. data/lib/generators/pbw/item/templates/templates/new.jst +21 -0
  29. data/lib/generators/pbw/item/templates/templates/show.jst +14 -0
  30. data/lib/generators/pbw/item/templates/views/edit_view.coffee +24 -0
  31. data/lib/generators/pbw/item/templates/views/index_view.coffee +20 -0
  32. data/lib/generators/pbw/item/templates/views/model_view.coffee +19 -0
  33. data/lib/generators/pbw/item/templates/views/new_view.coffee +37 -0
  34. data/lib/generators/pbw/item/templates/views/show_view.coffee +8 -0
  35. data/lib/generators/pbw/rules/command/command_generator.rb +3 -0
  36. data/lib/generators/pbw/scaffold_generator.rb +2 -1
  37. data/lib/generators/pbw/token/USAGE +5 -3
  38. data/lib/generators/pbw/token/templates/index.erb +6 -0
  39. data/lib/generators/pbw/token/templates/model.coffee +14 -0
  40. data/lib/generators/pbw/token/templates/router.coffee +31 -0
  41. data/lib/generators/pbw/token/templates/templates/edit.jst +21 -0
  42. data/lib/generators/pbw/token/templates/templates/index.jst +17 -0
  43. data/lib/generators/pbw/token/templates/templates/model.jst +8 -0
  44. data/lib/generators/pbw/token/templates/templates/new.jst +21 -0
  45. data/lib/generators/pbw/token/templates/templates/show.jst +14 -0
  46. data/lib/generators/pbw/token/templates/views/edit_view.coffee +24 -0
  47. data/lib/generators/pbw/token/templates/views/index_view.coffee +20 -0
  48. data/lib/generators/pbw/token/templates/views/model_view.coffee +19 -0
  49. data/lib/generators/pbw/token/templates/views/new_view.coffee +37 -0
  50. data/lib/generators/pbw/token/templates/views/show_view.coffee +8 -0
  51. data/lib/generators/pbw/token/token_generator.rb +8 -1
  52. data/lib/pbw/version.rb +1 -1
  53. metadata +31 -5
  54. data/app/models/pbw/user_token.rb +0 -16
  55. data/lib/generators/pbw/command/command_generator.rb +0 -3
  56. /data/lib/generators/pbw/{command → rules/command}/USAGE +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzBkNmRjYTAxMDI4Y2M1Nzg2YTQyZjFjOTk3OTNjYjY1ZWE4NzNjOA==
4
+ OTU1NGI1MTU5Nzk3MjU0OGRkNWM0NGYyZWMwYzU0ZGM1NWFkYWYxNQ==
5
5
  data.tar.gz: !binary |-
6
- MWFiMDlhMzlmMTkwNjM3Y2VjYmI5MGQ1Yzc4MmVkOTU1MzllMjIyYQ==
6
+ NjMzOTU2YTNmMDhkOGMzYjk1NjBmMzEyMGZmMzNmZmQ3ODkxYThlMQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YmJiN2U3MjA2ZWJkY2NhN2ZmMjNhODIwNmQ0YzU3MTYyNDk4MjJiMmVlOWRl
10
- ZTc3NzJhNmI3NjdhMjcxODkwOGYzMzU3ZmM3NDA5NjEzZDNlODc5MTZlZWQx
11
- Y2ViODk4NmM5ZGU4NzVkNmZmNTMyOWI4OTY5NTZmNjVjNWYzNWM=
9
+ N2ZhZmExNTBkMTVlMTc4NDVlNjYzYjA3MDY4MzU2YmU0YTU3OGI0Y2ExMTcw
10
+ OGZkN2M4YjljOWZjMjFiNDM1OWI0MjZiNWY4ZTM0NTZmMGZlMDMyNTg3NGY5
11
+ NmNkNGNmZjM2ZDAyN2RhYThkNDMyYzNhYjYzZDM5M2E2YjAxZjg=
12
12
  data.tar.gz: !binary |-
13
- NmM5Y2I3YzNlYjkxYzRmYTFiMGUxMDg5NjY4NjkzN2U4MGQzMDQyZWNkZGVk
14
- N2IxOWM2ZDRiYmUzNGE0MGE4OTIzY2M4ZGZjODYyNmM4YjJmZjlhNmZhMjUw
15
- MGEzN2NkNzVjOWYyNTkzMzhjMGRlNmE0OTViZmIwZWI3NDE3OWQ=
13
+ MmE3NjI0YjUwOGUxNTMxYjI5MzM2NzQ0MTZjODhmZjA3MzRkYjkyMjZkOWVh
14
+ Y2VhYjUzZjU3Y2ZlZTYyN2QyMTk4MjMyMmUwYzU4MTQyZDk5ZDQyY2M3OGY3
15
+ MDI3MzJjMjhhNDQxMGY5ZjI5NTkwZTc3MTViMjU4ODRlNTQ4YWI=
@@ -6,12 +6,95 @@ module Pbw
6
6
  validates_presence_of :name
7
7
  validates_uniqueness_of :name
8
8
 
9
- has_and_belongs_to_many :user_tokens
9
+ has_many :tokens
10
10
  has_many :item_containers
11
11
  has_and_belongs_to_many :constraints
12
- has_and_belongs_to_many :processes
13
12
  has_and_belongs_to_many :triggers
14
13
 
15
14
  attr_accessible :name
15
+
16
+ def before_token_enters(token)
17
+ # stub method
18
+ true
19
+ end
20
+
21
+ def after_token_enters(token)
22
+ # stub method
23
+ end
24
+
25
+ def before_token_leaves(token)
26
+ # stub method
27
+ true
28
+ end
29
+
30
+ def after_token_leaves(token)
31
+ # stub method
32
+ end
33
+
34
+ def before_add_item(item, quantity)
35
+ # stub method
36
+ true
37
+ end
38
+
39
+ def after_add_item(item, quantity)
40
+ # stub method
41
+ end
42
+
43
+ def before_remove_item(item, quantity)
44
+ # stub method
45
+ true
46
+ end
47
+
48
+ def after_remove_item(item, quantity)
49
+ # stub method
50
+ end
51
+
52
+ def count_item(item)
53
+ container = ItemContainer.find_for_area(self)
54
+ container ? container.quantity : 0
55
+ end
56
+
57
+ def add_item!(item, quantity)
58
+ return false unless quantity && quantity.responds_to?(:abs)
59
+ return remove_item!(item, quantity.abs) if quantity < 0
60
+ return false unless item && before_add_item(item,quantity)
61
+ ItemContainer.find_or_create_for_area(self, item, quantity)
62
+ end
63
+
64
+ def remove_item!(item, quantity)
65
+ return false unless quantity && quantity.responds_to?(:abs)
66
+ return add_item!(item, quantity.abs) if quantity < 0
67
+ return false unless item && before_remove_item(item,quantity)
68
+ ItemContainer.find_or_create_for_area(self, item, (0 - quantity))
69
+ end
70
+
71
+ def has_constraint?(constraint)
72
+ constraint = Constraint.find(constraint) if constraint.is_a?(String)
73
+ self.constraints.include?(constraint)
74
+ end
75
+
76
+ def add_constraint!(constraint)
77
+ return false unless constraint && constraint.before_add(self)
78
+ self.constraints << constraint
79
+ save
80
+ constraint.after_add(self)
81
+ self
82
+ end
83
+
84
+ def remove_constraint!(constraint)
85
+ return false unless constraint && constraint.before_remove(self)
86
+ self.constraints.delete_if{|c| c.name == constraint.name}
87
+ save
88
+ constraint.after_remove(self)
89
+ self
90
+ end
91
+
92
+ def check_constraints_and_capabilities(&changeset)
93
+ self.constraints.any?{|c| !c.before_process(self, changeset)}
94
+ end
95
+
96
+ def check_triggers!
97
+ self.triggers.each{|t| t.check! }
98
+ end
16
99
  end
17
100
  end
@@ -1,5 +1,33 @@
1
1
  module Pbw
2
2
  class Capability < Rule
3
3
  has_and_belongs_to_many :tokens
4
+
5
+ def before_process(token, &changeset)
6
+ # stub method
7
+ true
8
+ end
9
+
10
+ def before_add(token)
11
+ # stub method
12
+ true
13
+ end
14
+
15
+ def after_add(token)
16
+ # stub method
17
+ end
18
+
19
+ def before_remove(token)
20
+ # stub method
21
+ true
22
+ end
23
+
24
+ def after_remove(token)
25
+ # stub method
26
+ end
27
+
28
+ def can_convert?(item)
29
+ # stub method
30
+ false
31
+ end
4
32
  end
5
33
  end
@@ -0,0 +1,22 @@
1
+ module Pbw
2
+ class Changeset
3
+ def initialize(changes=nil)
4
+ @changes = changes || {}
5
+ end
6
+
7
+ def add_change(model,field,value)
8
+ fields = @changes[model] || {}
9
+ fields[field] = value
10
+ @changes[model] = value
11
+ self
12
+ end
13
+
14
+ def models_changed
15
+ @changes.keys
16
+ end
17
+
18
+ def changes_for_model(model)
19
+ @changes[model]
20
+ end
21
+ end
22
+ end
@@ -2,5 +2,28 @@ module Pbw
2
2
  class Constraint < Rule
3
3
  has_and_belongs_to_many :tokens
4
4
  has_and_belongs_to_many :areas
5
+
6
+ def before_process(token_or_area, &changeset)
7
+ # stub method
8
+ true
9
+ end
10
+
11
+ def before_add(token_or_area)
12
+ # stub method
13
+ true
14
+ end
15
+
16
+ def after_add(token_or_area)
17
+ # stub method
18
+ end
19
+
20
+ def before_remove(token_or_area)
21
+ # stub method
22
+ true
23
+ end
24
+
25
+ def after_remove(token_or_area)
26
+ # stub method
27
+ end
5
28
  end
6
29
  end
@@ -11,5 +11,41 @@ module Pbw
11
11
  has_many :item_conversions
12
12
 
13
13
  attr_accessible :name
14
+
15
+ def before_add(container, quantity)
16
+ # stub method
17
+ true
18
+ end
19
+
20
+ def after_add(container, quantity)
21
+ # stub method
22
+ end
23
+
24
+ def before_remove(container, quantity)
25
+ # stub method
26
+ true
27
+ end
28
+
29
+ def after_remove(container, quantity)
30
+ # stub method
31
+ end
32
+
33
+ def before_transfer(from, to, quantity)
34
+ # stub method
35
+ true
36
+ end
37
+
38
+ def after_transfer(from, to, quantity)
39
+ # stub method
40
+ end
41
+
42
+ def before_conversion(to, quantity)
43
+ # stub method
44
+ true
45
+ end
46
+
47
+ def after_conversion(to, quantity)
48
+ # stub method
49
+ end
14
50
  end
15
51
  end
@@ -3,10 +3,90 @@ module Pbw
3
3
  include ::Mongoid::Document
4
4
  include ::Mongoid::Timestamps
5
5
  belongs_to :item
6
- field :quantity, :type => Float
6
+ field :quantity, :type => Float, :default => 0
7
+ validates_numericality_of :quantity, :greater_than_or_equal_to => 0
7
8
 
8
- belongs_to :user_token
9
+ belongs_to :token
9
10
  belongs_to :area
10
11
  belongs_to :user
12
+
13
+ attr_accessible :item, :token, :area, :user, :quantity
14
+
15
+ def self.find_or_create_for_token(token, item, quantity_to_add)
16
+ container = where(token: token, item: item).first
17
+ container = new(token: token, item: item) unless container
18
+ container.add_item(quantity_to_add) && container.save ? container : false
19
+ end
20
+
21
+ def self.find_for_token(token, item)
22
+ where(token: token, item: item).first
23
+ end
24
+
25
+ def self.find_or_create_for_area(area, item, quantity_to_add)
26
+ container = where(area: area, item: item).first
27
+ container = new(area: area, item: item) unless container
28
+ container.add_item(quantity_to_add) && container.save ? container : false
29
+ end
30
+
31
+ def self.find_for_area(area, item)
32
+ where(area: area, item: item).first
33
+ end
34
+
35
+ def self.find_or_create_for_user(user, item, quantity_to_add)
36
+ container = where(user: user, item: item).first
37
+ container = new(user: user, item: item) unless container
38
+ container.add_item(quantity_to_add) && container.save ? container : false
39
+ end
40
+
41
+ def self.find_for_user(user, item)
42
+ where(user: user, item: item).first
43
+ end
44
+
45
+ def add_item(quantity)
46
+ return remove_item!(quantity.abs) if quantity < 0
47
+ return false unless self.item.before_add(self,quantity)
48
+ self.quantity = self.quantity + quantity
49
+ self.item.after_add(self,quantity)
50
+ self
51
+ end
52
+
53
+ def remove_item(quantity)
54
+ return add_item!(quantity.abs) if quantity < 0
55
+ return false unless self.item.before_remove(self,quantity)
56
+ self.quantity = self.quantity - quantity
57
+ self.item.after_remove(self,quantity)
58
+ self
59
+ end
60
+
61
+ def transfer_item!(to, quantity)
62
+ return false unless to && quantity
63
+ return false unless self.item.before_transfer(belongs_to, to, quantity)
64
+ remove_item(quantity)
65
+ return false unless save
66
+ if to.class.ancestors.include?(Area)
67
+ container = find_or_create_for_area(to, self.item, quantity)
68
+ elsif to.class.ancestors.include?(Token)
69
+ container = find_or_create_for_token(to, self.item, quantity)
70
+ elsif to.class.ancestors.include?(User)
71
+ container = find_or_create_for_user(to, self.item, quantity)
72
+ else
73
+ return false
74
+ end
75
+ unless container
76
+ add_item(quantity) && save
77
+ false
78
+ else
79
+ self.item.after_transfer(belongs_to, to, quantity)
80
+ container
81
+ end
82
+ end
83
+
84
+ def belongs_to
85
+ self.token || self.area || self.user
86
+ end
87
+
88
+ def empty?
89
+ self.quantity == 0
90
+ end
11
91
  end
12
92
  end
@@ -3,7 +3,71 @@ module Pbw
3
3
  include ::Mongoid::Document
4
4
  include ::Mongoid::Timestamps
5
5
  belongs_to :item
6
- field :to_class, :type => String
7
- field :conversion_rate, :type => Float
6
+ field :from, :type => Hash
7
+
8
+ def set_from_item(item, quantity)
9
+ return false unless item && quantity
10
+ self.from ||= {}
11
+ self.from[item._id] = quantity
12
+ self
13
+ end
14
+
15
+ def from_items
16
+ return @items if defined?(@items) && !changed?
17
+ return {} unless self.from && !self.from.empty?
18
+ @items = {}
19
+ self.from.keys.each do |id|
20
+ begin
21
+ @items[Item.find(id)] = self.from[id]
22
+ rescue Exception => e
23
+ logger.error e
24
+ end
25
+ end
26
+ @items
27
+ end
28
+
29
+ def token_from_items_containers(token)
30
+ containers = {}
31
+ from_items.keys.each do |from_item|
32
+ containers[from_item] = ItemContainer.find_for_token(token,from_item)
33
+ end
34
+ containers
35
+ end
36
+
37
+ def self.max_convert(token, item)
38
+ return 0 unless token && item && token.can_convert?(item)
39
+ conversion = where(item: item).first
40
+ return 0 unless conversion
41
+ containers = conversion.token_from_items_containers(token)
42
+ quantity = 0
43
+ containers.keys.each do |from_item|
44
+ unless containers[from_item]
45
+ quantity = 0
46
+ else
47
+ quantity = containers[from_item].quantity / conversion.from_items[from_item]
48
+ end
49
+ end
50
+ quantity
51
+ end
52
+
53
+ def self.convert!(token, item, quantity=1)
54
+ return false unless token && item && quantity && token.can_convert?(item)
55
+ conversion = where(item: item).first
56
+ return false unless conversion
57
+ containers = conversion.token_from_items_containers(token)
58
+ containers.keys.each do |from_item|
59
+ return false unless containers[from_item] && containers[from_item].quantity >= (conversion.from_items[from_item] * quantity)
60
+ end
61
+ containers.keys.each do |from_item|
62
+ containers[from_item].remove_item(conversion.from_items[from_item] * quantity)
63
+ containers[from_item].save
64
+ end
65
+ unless token.add_item!(item,quantity)
66
+ containers.keys.each do |from_item|
67
+ containers[from_item].add_item(conversion.from_items[from_item] * quantity)
68
+ containers[from_item].save
69
+ end
70
+ end
71
+ end
8
72
  end
9
73
  end
@@ -1,10 +1,49 @@
1
1
  module Pbw
2
2
  class Process < Rule
3
- has_and_belongs_to_many :tokens
4
- has_and_belongs_to_many :areas
5
3
  has_many :triggers
6
4
 
7
5
  field :run_tick, :type => Boolean
8
6
  field :run_update, :type => Boolean
7
+
8
+ def before_run(token_or_area)
9
+ # stub method
10
+ true
11
+ end
12
+
13
+ def after_triggers(token_or_area)
14
+ # stub method
15
+ end
16
+
17
+ def changeset(token_or_area)
18
+ # stub method
19
+ raise "Not implemented"
20
+ end
21
+
22
+ def execute_changeset!(&changeset)
23
+ changeset.models_changed.each do |model|
24
+ changes = changeset.changes_for_model(model)
25
+ changes.keys.each do |field|
26
+ model.send("#{field}=".to_sym,changes[field])
27
+ end
28
+ return false unless model.save
29
+ end
30
+ true
31
+ end
32
+
33
+ def run!(token_or_area)
34
+ return false unless before_run(token_or_area)
35
+ changes = changeset(token_or_area)
36
+ return false unless changes
37
+ raise "Invalid object returned from changeset method in #{self.class.name}" unless changes.is_a?(Changeset)
38
+ return false unless token_or_area.check_constraints_and_capabilities(changes)
39
+ execute_changeset!(changes)
40
+ token_or_area.check_triggers!
41
+ after_triggers(token_or_area)
42
+ end
43
+
44
+ def schedule!(token_or_area)
45
+ # TODO
46
+ raise "Not implemented"
47
+ end
9
48
  end
10
49
  end
@@ -3,8 +3,7 @@ module Pbw
3
3
  include ::Mongoid::Document
4
4
  include ::Mongoid::Timestamps
5
5
  field :name, type: String
6
- validates_presence_of :name
7
- validates_uniqueness_of :name
6
+ validates :name, presence: true, uniqueness: true
8
7
 
9
8
  attr_accessible :name
10
9
  end
@@ -5,12 +5,144 @@ module Pbw
5
5
  field :name, type: String
6
6
  validates_presence_of :name
7
7
 
8
+ belongs_to :area
8
9
  has_and_belongs_to_many :capabilities
9
10
  has_and_belongs_to_many :constraints
10
- has_and_belongs_to_many :processes
11
11
  has_and_belongs_to_many :triggers
12
- has_many :user_tokens
12
+ has_and_belongs_to_many :users
13
+ has_many :item_containers
13
14
 
14
15
  attr_accessible :name
16
+
17
+ def before_ownership(user)
18
+ # stub method
19
+ true
20
+ end
21
+
22
+ def after_ownership(user)
23
+ # stub method
24
+ end
25
+
26
+ def before_move(area)
27
+ # stub method
28
+ true
29
+ end
30
+
31
+ def after_move(area)
32
+ # stub method
33
+ end
34
+
35
+ def before_add_item(item, quantity)
36
+ # stub method
37
+ true
38
+ end
39
+
40
+ def after_add_item(item, quantity)
41
+ # stub method
42
+ end
43
+
44
+ def before_remove_item(item, quantity)
45
+ # stub method
46
+ true
47
+ end
48
+
49
+ def after_remove_item(item, quantity)
50
+ # stub method
51
+ end
52
+
53
+ def can_convert?(item)
54
+ self.capabilities.any?{|c| c.can_convert?(item)}
55
+ end
56
+
57
+ def count_item(item)
58
+ container = ItemContainer.find_for_token(self)
59
+ container ? container.quantity : 0
60
+ end
61
+
62
+ def add_item!(item, quantity)
63
+ return false unless quantity && quantity.responds_to?(:abs)
64
+ return remove_item!(item, quantity.abs) if quantity < 0
65
+ return false unless item && before_add_item(item,quantity)
66
+ ItemContainer.find_or_create_for_token(self, item, quantity)
67
+ end
68
+
69
+ def remove_item!(item, quantity)
70
+ return false unless quantity && quantity.responds_to?(:abs)
71
+ return add_item!(item, quantity.abs) if quantity < 0
72
+ return false unless item && before_remove_item(item,quantity)
73
+ ItemContainer.find_or_create_for_token(self, item, (0 - quantity))
74
+ end
75
+
76
+ def set_ownership!(user)
77
+ return false unless user && before_ownership(user)
78
+ self.user = user
79
+ if save
80
+ after_ownership(user)
81
+ end
82
+ self.user
83
+ end
84
+
85
+ def move_to_area!(area)
86
+ return false unless area && before_move(area) && (self.area.nil? || self.area.before_token_leaves(self)) && area.before_token_enters(self)
87
+ old_area = self.area
88
+ self.area = area
89
+ if save
90
+ after_move(area)
91
+ old_area.after_token_leaves(self) if old_area
92
+ area.after_token_enters(self)
93
+ end
94
+ self.area
95
+ end
96
+
97
+ def has_constraint?(constraint)
98
+ constraint = Constraint.find(constraint) if constraint.is_a?(String)
99
+ self.constraints.include?(constraint)
100
+ end
101
+
102
+ def add_constraint!(constraint)
103
+ return false unless constraint && constraint.before_add(self)
104
+ self.constraints << constraint
105
+ save
106
+ constraint.after_add(self)
107
+ self
108
+ end
109
+
110
+ def remove_constraint!(constraint)
111
+ return false unless constraint && constraint.before_remove(self)
112
+ self.constraints.delete_if{|c| c.name == constraint.name}
113
+ save
114
+ constraint.after_remove(self)
115
+ self
116
+ end
117
+
118
+ def has_capability?(capability)
119
+ capability = Capability.find(capability) if capability.is_a?(String)
120
+ self.capabilities.include?(capability)
121
+ end
122
+
123
+ def add_capability!(capability)
124
+ return false unless capability && capability.before_add(self)
125
+ self.capabilities << capability
126
+ save
127
+ capability.after_add(self)
128
+ self
129
+ end
130
+
131
+ def remove_capability!(capability)
132
+ return false unless capability && capability.before_remove(self)
133
+ self.capabilities.delete_if{|c| c.name == capability.name}
134
+ save
135
+ capability.after_remove(self)
136
+ self
137
+ end
138
+
139
+ def check_constraints_and_capabilities(&changeset)
140
+ self.capabilities.any?{|c| !c.before_process(self, changeset)}
141
+ self.constraints.any?{|c| !c.before_process(self, changeset)}
142
+ end
143
+
144
+ def check_triggers!
145
+ self.triggers.each{|t| t.check! }
146
+ end
15
147
  end
16
148
  end
@@ -3,5 +3,14 @@ module Pbw
3
3
  has_and_belongs_to_many :tokens
4
4
  has_and_belongs_to_many :areas
5
5
  belongs_to :process
6
+
7
+ def trigger?(token_or_area)
8
+ # stub method
9
+ end
10
+
11
+ def check!(token_or_area)
12
+ return false unless self.process && trigger?(token_or_area)
13
+ self.process.schedule!(token_or_area)
14
+ end
6
15
  end
7
16
  end
@@ -47,7 +47,7 @@ module Pbw
47
47
  field :authentication_token, :type => String
48
48
 
49
49
  has_many :resource_containers
50
- has_many :user_tokens
50
+ has_many :tokens
51
51
 
52
52
  def super_admin?
53
53
  self.role.name == "Super Admin"
@@ -63,8 +63,6 @@ Devise.setup do |config|
63
63
 
64
64
  config.reset_password_within = 6.hours
65
65
 
66
- config.encryptor = :sha512
67
-
68
66
  config.token_authentication_key = :auth_token
69
67
 
70
68
  config.scoped_views = false
data/config/routes.rb CHANGED
@@ -3,15 +3,18 @@ Pbw::Engine.routes.draw do
3
3
  class_name: 'Pbw::User',
4
4
  module: :devise
5
5
  }
6
- resources :areas
7
- resources :capabilities
8
- resources :constraints
9
- resources :processes
10
- resources :items
6
+ %W{areas capabilities constraints processes items tokens triggers}.each do |controller|
7
+ get "#{controller}/:_type" => "#{controller}\#index"
8
+ get "#{controller}/:_type/:id" => "#{controller}\#show"
9
+ post "#{controller}/:_type" => "#{controller}\#create"
10
+ get "#{controller}/:_type/new" => "#{controller}\#new"
11
+ get "#{controller}/:_type/:id/edit" => "#{controller}\#edit"
12
+ delete "#{controller}/:_type/:id" => "#{controller}\#delete"
13
+ put "#{controller}/:_type/:id" => "#{controller}\#update"
14
+ end
15
+
11
16
  resources :item_containers
12
17
  resources :item_conversions
13
18
  resources :item_transfers
14
- resources :tokens
15
- resources :triggers
16
19
  resources :user_tokens
17
20
  end