sugarcrm 0.9.2 → 0.9.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.2
1
+ 0.9.3
@@ -56,12 +56,13 @@ module SugarCRM
56
56
  @original - @collection
57
57
  end
58
58
 
59
- # Removes an record from the collection, uses the id of the record as a test for inclusion.
59
+ # Removes a record from the collection, uses the id of the record as a test for inclusion.
60
60
  def delete(record)
61
61
  load
62
62
  raise InvalidRecord, "#{record.class} does not have a valid :id!" if record.id.empty?
63
63
  @collection.delete record
64
64
  end
65
+ alias :remove :delete
65
66
 
66
67
  # Checks if a record is included in the current collection. Uses id's as comparison
67
68
  def include?(record)
@@ -9,6 +9,14 @@ module SugarCRM; module AttributeMethods
9
9
  end
10
10
  fields
11
11
  end
12
+ # Returns the table name for a given attribute
13
+ def table_name_for(attribute)
14
+ table_name = self._module.table_name
15
+ if attribute.to_s =~ /_c$/
16
+ table_name = self._module.custom_table_name
17
+ end
18
+ table_name
19
+ end
12
20
  end
13
21
 
14
22
  # Determines if attributes or associations have been changed
data/lib/sugarcrm/base.rb CHANGED
@@ -167,12 +167,7 @@ module SugarCRM; class Base
167
167
 
168
168
  value = $2 # strip the operator from value passed to query
169
169
  value = value.strip[/'?([^']*)'?/,1]
170
- unless column =~ /_c$/ # attribute name ending with _c implies a custom attribute
171
- condition_attribute = "#{self._module.table_name}.#{column}"
172
- else
173
- condition_attribute = column # if setting a condition on a custom attribute (i.e. created by user in Studio), don't add model table name (or query breaks)
174
- end
175
- conditions << "#{condition_attribute} #{operator} \'#{value}\'"
170
+ conditions << "#{table_name_for(column)}.#{column} #{operator} \'#{value}\'"
176
171
  }
177
172
  end
178
173
  conditions.join(" AND ")
@@ -121,8 +121,12 @@ module SugarCRM; class Connection
121
121
  raise SugarCRM::EmptyResponse unless @response.body
122
122
  # Some methods are dumb and don't return a JSON Response
123
123
  return @response.body if RESPONSE_IS_NOT_JSON.include? @request.method
124
- # Push it through the old meat grinder.
125
- response_json = ActiveSupport::JSON.decode(@response.body)
124
+ begin
125
+ # Push it through the old meat grinder.
126
+ response_json = ActiveSupport::JSON.decode(@response.body)
127
+ rescue StandardError => e
128
+ raise UnhandledResponse, @response.body
129
+ end
126
130
  # Empty result. Is this wise?
127
131
  return false if response_json["result_count"] == 0
128
132
  # Filter debugging on REALLY BIG responses
@@ -1,11 +1,12 @@
1
1
  module SugarCRM
2
2
  # A class for handling SugarCRM Modules
3
3
  class Module
4
- attr :name, false
5
- attr :table_name, false
6
- attr :klass, false
7
- attr :fields, false
8
- attr :link_fields, false
4
+ attr :name, true
5
+ attr :table_name, true
6
+ attr :custom_table_name, true
7
+ attr :klass, true
8
+ attr :fields, true
9
+ attr :link_fields, true
9
10
 
10
11
  # Dynamically register objects based on Module name
11
12
  # I.e. a SugarCRM Module named Users will generate
@@ -14,6 +15,7 @@ module SugarCRM
14
15
  @name = name
15
16
  @klass = name.classify
16
17
  @table_name = name.tableize
18
+ @custom_table_name = @table_name + "_cstm"
17
19
  @fields = {}
18
20
  @link_fields = {}
19
21
  @fields_registered = false
data/test/test_module.rb CHANGED
@@ -14,5 +14,9 @@ class TestModule < Test::Unit::TestCase
14
14
  should "return required fields when #required_fields" do
15
15
  assert SugarCRM::User._module.required_fields.include? :user_name
16
16
  end
17
+
18
+ should "return the custom table name when #custom_table_name" do
19
+ assert_equal "accounts_cstm", SugarCRM::Account._module.custom_table_name
20
+ end
17
21
  end
18
22
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 2
9
- version: 0.9.2
8
+ - 3
9
+ version: 0.9.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Carl Hicks
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-04 00:00:00 -08:00
17
+ date: 2011-01-05 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -193,7 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
193
  requirements:
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
- hash: 2866682332345860933
196
+ hash: -1102479478873110582
197
197
  segments:
198
198
  - 0
199
199
  version: "0"