action_kit_api 0.3.12 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,29 +18,39 @@ module ActionKitApi
18
18
  end
19
19
 
20
20
  def save
21
- if self.respond_to?('before_save')
22
- self.send('before_save')
23
- end
24
21
 
25
22
  class_name = self.class.to_s.split("::").last
26
23
 
27
24
  raise MissingRequiredAttributeException unless self.valid?
28
25
 
29
- attrs_hash = self.to_hash
30
- attrs_hash.delete_if do |k, v|
31
- @read_only_attrs.include?(k)
26
+ if self.id.nil?
27
+ if self.respond_to?('before_create')
28
+ self.send('before_create')
29
+ end
30
+
31
+ call = "#{class_name}.create"
32
+ response = ActionKitApi.connection.call(call, self.safe_hash)
33
+
34
+ if self.respond_to?('after_create')
35
+ self.send('after_create')
36
+ end
37
+ else
38
+ if self.respond_to?('before_save')
39
+ self.send('before_save')
40
+ end
41
+
42
+ call = "#{class_name}.save_or_create"
43
+ response = ActionKitApi.connection.call(call, self.safe_hash)
44
+
45
+ if self.respond_to?('after_save')
46
+ self.send('after_save')
47
+ end
32
48
  end
33
49
 
34
- call = "#{class_name}.save_or_create"
35
-
36
- response = ActionKitApi.connection.call(call, attrs_hash)
37
50
 
38
51
  # Update ourselves to include the data that the server populated
39
52
  self.update(response)
40
53
 
41
- if self.respond_to?('after_save')
42
- self.send('after_save')
43
- end
44
54
 
45
55
  self
46
56
  end
@@ -50,10 +60,6 @@ module ActionKitApi
50
60
  # keys in the hash that is passed, and will not update/add non-existant
51
61
  # attributes
52
62
  def update(hash = {})
53
- if self.respond_to?('before_update')
54
- self.send('before_update')
55
- end
56
-
57
63
  hash.each do |k,v|
58
64
  # The name of the setter for the value of k
59
65
  setter = "#{k}="
@@ -65,10 +71,6 @@ module ActionKitApi
65
71
  end
66
72
  end
67
73
 
68
- if self.respond_to?('after_update')
69
- self.send('after_update')
70
- end
71
-
72
74
  self
73
75
  end
74
76
 
@@ -98,6 +100,15 @@ module ActionKitApi
98
100
 
99
101
  user_hash
100
102
  end
103
+
104
+ def safe_hash
105
+ attrs_hash = self.to_hash
106
+ attrs_hash.delete_if do |k, v|
107
+ @read_only_attrs.include?(k)
108
+ end
109
+
110
+ attrs_hash
111
+ end
101
112
  end
102
113
  end
103
114
 
@@ -18,7 +18,7 @@ module ActionKitApi
18
18
 
19
19
  def initialize(*args)
20
20
  @required_attrs = [:campaign_id, :creator_id]
21
- @read_only_attrs = [:attendee_count]
21
+ @read_only_attrs = [:attendee_count, :host_is_confirmed, :is_full, :is_in_past, :is_open_for_signup, :status_summary]
22
22
 
23
23
  super
24
24
  end
@@ -26,49 +26,13 @@ module ActionKitApi
26
26
  @show_address1 ||= true
27
27
  end
28
28
 
29
- # After creating a new event campaign we need to create the
30
- # associated signup and hosting pages. These will follow the
31
- # ActionKit convention to prevent them from getting wise. This
32
- # is so we don't have to use that sketchy part of their API
33
- def after_save
34
- # Only continue if we have a valid id
35
- if self.id.nil?
36
- return
37
- end
38
-
39
- signup_page_name = "#{self.name}_signup"
40
- create_page_name = "#{self.name}_create"
41
-
42
- # These two calls trigger an exception EVEN IF THEY SUCCEED, since there
43
- # won't be any events for them yet :-/
44
- begin
45
- if ActionKitApi::Page.find_by_name(signup_page_name).nil?
46
- signup_page = ActionKitApi::EventSignupPage.new(:name => signup_page_name, :title => "{self.title} - Attend", :campaign_id => self.id)
47
- signup_page.save
48
- end
49
- rescue
50
- end
51
-
52
- begin
53
- if ActionKitApi::Page.find_by_name(create_page_name).nil?
54
- create_page = ActionKitApi::EventCreatePage.new(:name => create_page_name, :title => "{self.title} - Host", :campaign_id => self.id)
55
- create_page.save
56
- end
57
- rescue
58
- end
59
- end
60
-
29
+ # Requires at a minimum the creator_id
61
30
  def create_event(*args)
62
31
  raise "EventCampaign needs to be saved before Event creation" if self.id.nil?
63
32
 
64
- (args[0]).merge(:campaign_id => self.id)
33
+ (args[0]).merge!(:campaign_id => self.id)
65
34
 
66
35
  event = ActionKitApi::Event.new(*args)
67
- event.save
68
-
69
- result = ActionKitApi.connection.call("EventCreate.create", {:event_id => event.id})
70
-
71
- event
72
36
  end
73
37
 
74
38
  # Uses public_search so is subject those limitations
@@ -1,3 +1,3 @@
1
1
  module ActionKitApi
2
- VERSION = "0.3.12"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
8
- - 12
9
- version: 0.3.12
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sam Stelfox
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-03-14 00:00:00 -04:00
17
+ date: 2012-03-15 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency