sugarcrm 0.8.1 → 0.8.2
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/README.rdoc +7 -0
- data/VERSION +1 -1
- data/lib/sugarcrm/attribute_methods.rb +2 -2
- data/lib/sugarcrm/base.rb +18 -3
- data/test/test_sugarcrm.rb +10 -0
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -76,6 +76,13 @@ e.g. SugarCRM::Contacts.find_by_title("VP of Sales") will work, but SugarCRM::Co
|
|
76
76
|
|
77
77
|
# Use the HTTP Connection and SugarCRM API to load the Admin user
|
78
78
|
SugarCRM.connection.get_entry("Users", 1)
|
79
|
+
|
80
|
+
# Retrieve the first 10 Accounts with a zip code between 10000 and 10500
|
81
|
+
SugarCRM::Account.all({
|
82
|
+
:conditions => { :billing_address_postalcode => ["> '10000'", "<= '10500'" ] },
|
83
|
+
:limit => '10',
|
84
|
+
:order_by => 'billing_address_postalcode'
|
85
|
+
})
|
79
86
|
|
80
87
|
# Retrieve all Accounts by user name (direct API method)
|
81
88
|
SugarCRM.connection.get_entry_list(
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.2
|
@@ -54,9 +54,9 @@ module SugarCRM; module AttributeMethods
|
|
54
54
|
case attr_type_for(attribute)
|
55
55
|
when "bool"
|
56
56
|
case @attributes[attribute]
|
57
|
-
when TrueClass
|
57
|
+
when TrueClass
|
58
58
|
next
|
59
|
-
when FalseClass
|
59
|
+
when FalseClass
|
60
60
|
next
|
61
61
|
else
|
62
62
|
@errors.add "#{attribute} must be true or false"
|
data/lib/sugarcrm/base.rb
CHANGED
@@ -129,8 +129,23 @@ module SugarCRM; class Base
|
|
129
129
|
# If we dont have conditions, just return an empty query
|
130
130
|
return "" unless options[:conditions]
|
131
131
|
conditions = []
|
132
|
-
options[:conditions].each_pair do |column,
|
133
|
-
|
132
|
+
options[:conditions].each_pair do |column, v|
|
133
|
+
v = [] << v unless v.class == Array
|
134
|
+
|
135
|
+
v.each{|value|
|
136
|
+
# parse operator in cases where (e.g.) :attribute => '>= some_value', fallback to '=' operator as default
|
137
|
+
operator = value.to_s[/^([<>=]*)(.*)$/,1]
|
138
|
+
operator = '=' if operator.nil? || operator.strip == ''
|
139
|
+
|
140
|
+
value = $2 # strip the operator from value passed to query
|
141
|
+
value = value.strip[/'?([^']*)'?/,1]
|
142
|
+
unless column =~ /_c$/ # attribute name ending with _c implies a custom attribute
|
143
|
+
condition_attribute = "#{self._module.table_name}.#{column}"
|
144
|
+
else
|
145
|
+
condition_attribute = column # if setting a condition on a customer attribute, don't add model table name (or query breaks)
|
146
|
+
end
|
147
|
+
conditions << "#{condition_attribute} #{operator} \'#{value}\'"
|
148
|
+
}
|
134
149
|
end
|
135
150
|
conditions.join(" AND ")
|
136
151
|
end
|
@@ -270,7 +285,7 @@ module SugarCRM; class Base
|
|
270
285
|
end
|
271
286
|
|
272
287
|
VALID_FIND_OPTIONS = [ :conditions, :include, :joins, :limit, :offset,
|
273
|
-
:
|
288
|
+
:order_by, :select, :readonly, :group, :having, :from, :lock ]
|
274
289
|
|
275
290
|
def validate_find_options(options) #:nodoc:
|
276
291
|
options.assert_valid_keys(VALID_FIND_OPTIONS)
|
data/test/test_sugarcrm.rb
CHANGED
@@ -74,6 +74,16 @@ class TestSugarCRM < Test::Unit::TestCase
|
|
74
74
|
#SugarCRM.connection.debug = false
|
75
75
|
end
|
76
76
|
|
77
|
+
should "support searching based on conditions" do
|
78
|
+
accounts = SugarCRM::Account.all({
|
79
|
+
:conditions => { :billing_address_postalcode => ["> '70000'", "< '72000'" ] },
|
80
|
+
:limit => '10',
|
81
|
+
:order_by => 'billing_address_postalcode'
|
82
|
+
})
|
83
|
+
assert_instance_of Array, accounts
|
84
|
+
assert_instance_of SugarCRM::Account, accounts.first
|
85
|
+
end
|
86
|
+
|
77
87
|
should "return an an instance of itself when sent #find(id)" do
|
78
88
|
assert_instance_of SugarCRM::User, SugarCRM::User.find(1)
|
79
89
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 59
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 2
|
10
|
+
version: 0.8.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Carl Hicks
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-14 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|