ooor 1.2.3 → 1.2.4
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.md +1 -1
- data/lib/app/models/open_object_resource.rb +46 -17
- data/lib/app/models/uml.rb +3 -4
- data/lib/ooor.rb +2 -3
- metadata +27 -27
data/README.md
CHANGED
@@ -152,7 +152,7 @@ OpenERP context support (same as OpenERP):
|
|
152
152
|
|
153
153
|
Request params or ActiveResource equivalence of OpenERP domain (but degraded as only the = operator is supported, else use domain):
|
154
154
|
|
155
|
-
$
|
155
|
+
$ ResPartner.find(:all, :params => {:supplier => true})
|
156
156
|
|
157
157
|
|
158
158
|
OpenERP search method:
|
@@ -2,6 +2,7 @@ require 'xmlrpc/client'
|
|
2
2
|
require 'active_resource'
|
3
3
|
require 'app/models/open_object_ui'
|
4
4
|
require 'app/models/uml'
|
5
|
+
require 'set'
|
5
6
|
|
6
7
|
#TODO implement passing session credentials to RPC methods (concurrent access of different user credentials in Rails)
|
7
8
|
|
@@ -73,10 +74,8 @@ class OpenObjectResource < ActiveResource::Base
|
|
73
74
|
|
74
75
|
#corresponding method for OpenERP osv.execute(self, db, uid, obj, method, *args, **kw) method
|
75
76
|
def rpc_execute_with_all(db, uid, pass, obj, method, *args)
|
76
|
-
if args[-1].is_a? Hash
|
77
|
-
|
78
|
-
end
|
79
|
-
logger.debug "rpc_execute_with_all: rpc_methods: 'execute', db: #{db.inspect}, uid: #{uid.inspect}, pass: #{pass.inspect}, obj: #{obj.inspect}, method: #{method}, *args: #{args.inspect}"
|
77
|
+
args[-1] = @ooor.global_context.merge(args[-1]) if args[-1].is_a? Hash
|
78
|
+
logger.debug "rpc_execute_with_all: rpc_method: 'execute', db: #{db.inspect}, uid: #{uid.inspect}, pass: #{pass.inspect}, obj: #{obj.inspect}, method: #{method}, *args: #{args.inspect}"
|
80
79
|
try_with_pretty_error_log { client((@database && @site || @ooor.base_url) + "/object").call("execute", db, uid, pass, obj, method, *args) }
|
81
80
|
end
|
82
81
|
|
@@ -90,10 +89,8 @@ class OpenObjectResource < ActiveResource::Base
|
|
90
89
|
end
|
91
90
|
|
92
91
|
def rpc_exec_workflow_with_all(db, uid, pass, obj, action, *args)
|
93
|
-
if args[-1].is_a? Hash
|
94
|
-
|
95
|
-
end
|
96
|
-
logger.debug "rpc_execute_with_all: rpc_methods: 'exec_workflow', db: #{db.inspect}, uid: #{uid.inspect}, pass: #{pass.inspect}, obj: #{obj.inspect}, action #{action}, *args: #{args.inspect}"
|
92
|
+
args[-1] = @ooor.global_context.merge(args[-1]) if args[-1].is_a? Hash
|
93
|
+
logger.debug "rpc_execute_with_all: rpc_method: 'exec_workflow', db: #{db.inspect}, uid: #{uid.inspect}, pass: #{pass.inspect}, obj: #{obj.inspect}, action: #{action}, *args: #{args.inspect}"
|
97
94
|
try_with_pretty_error_log { client((@database && @site || @ooor.base_url) + "/object").call("exec_workflow", db, uid, pass, obj, action, *args) }
|
98
95
|
end
|
99
96
|
|
@@ -114,12 +111,14 @@ class OpenObjectResource < ActiveResource::Base
|
|
114
111
|
openerp_error_hash = eval("#{ e }".gsub("wrong fault-structure: ", ""))
|
115
112
|
if openerp_error_hash.is_a? Hash
|
116
113
|
logger.error "*********** OpenERP Server ERROR:
|
117
|
-
#{openerp_error_hash["faultString"]}
|
118
|
-
|
114
|
+
#{openerp_error_hash["faultString"]}***********"
|
115
|
+
e.backtrace.each {|line| logger.error line if line.index("ooor")} and return nil
|
116
|
+
else
|
117
|
+
raise
|
119
118
|
end
|
120
119
|
rescue
|
120
|
+
raise
|
121
121
|
end
|
122
|
-
raise
|
123
122
|
end
|
124
123
|
|
125
124
|
def method_missing(method_symbol, *arguments) self.rpc_execute(method_symbol.to_s, *arguments) end
|
@@ -171,6 +170,13 @@ class OpenObjectResource < ActiveResource::Base
|
|
171
170
|
return active_resources
|
172
171
|
end
|
173
172
|
|
173
|
+
#overriden because loading default fields is all the rage but we don't want them when reading a record
|
174
|
+
def instantiate_record(record, prefix_options = {})
|
175
|
+
new(record, [], {}).tap do |resource|
|
176
|
+
resource.prefix_options = prefix_options
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
174
180
|
end
|
175
181
|
|
176
182
|
|
@@ -295,6 +301,20 @@ class OpenObjectResource < ActiveResource::Base
|
|
295
301
|
@attributes.reject {|key, value| key == 'id'}.merge(@relations)
|
296
302
|
end
|
297
303
|
|
304
|
+
#takes care of reading OpenERP default field values.
|
305
|
+
#FIXME: until OpenObject explicits inheritances, we load all default values of all related fields, unless specified in default_get_list
|
306
|
+
def initialize(attributes = {}, default_get_list=false, context={})
|
307
|
+
@attributes = {}
|
308
|
+
@prefix_options = {}
|
309
|
+
if ['ir.model', 'ir.model.fields'].index(self.class.openerp_model) || default_get_list == []
|
310
|
+
load(attributes)
|
311
|
+
else
|
312
|
+
self.class.reload_fields_definition() unless self.class.fields_defined
|
313
|
+
default_get_list ||= Set.new(self.class.many2one_relations.collect {|k, field| self.class.const_get(field.relation).fields.keys}.flatten + self.class.fields.keys).to_a
|
314
|
+
load(self.class.rpc_execute("default_get", default_get_list, context).merge(attributes))
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
298
318
|
#compatible with the Rails way but also supports OpenERP context
|
299
319
|
def create(context={})
|
300
320
|
self.id = self.class.rpc_execute('create', to_openerp_hash!, context)
|
@@ -364,9 +384,16 @@ class OpenObjectResource < ActiveResource::Base
|
|
364
384
|
is_assign = method_name.end_with?('=')
|
365
385
|
method_key = method_name.sub('=', '')
|
366
386
|
return super if attributes.has_key?(method_key)
|
367
|
-
|
368
|
-
|
369
|
-
|
387
|
+
return self.class.rpc_execute(method_name, *arguments) unless arguments.empty? || is_assign
|
388
|
+
|
389
|
+
self.class.reload_fields_definition() unless self.class.fields_defined
|
390
|
+
|
391
|
+
if is_assign
|
392
|
+
know_relations = self.class.relations_keys + self.class.many2one_relations.collect {|k, field| self.class.const_get(field.relation).relations_keys}.flatten
|
393
|
+
@relations[method_key] = arguments[0] and return if know_relations.index(method_key)
|
394
|
+
know_fields = self.class.fields.keys + self.class.many2one_relations.collect {|k, field| self.class.const_get(field.relation).fields.keys}.flatten
|
395
|
+
@attributes[method_key] = arguments[0] and return if know_fields.index(method_key)
|
396
|
+
end
|
370
397
|
|
371
398
|
return @loaded_relations[method_name] if @loaded_relations.has_key?(method_name)
|
372
399
|
return false if @relations.has_key?(method_name) and !@relations[method_name]
|
@@ -387,11 +414,13 @@ class OpenObjectResource < ActiveResource::Base
|
|
387
414
|
@attributes[method_key] = arguments[0] and return if klazz.fields.keys.index(method_key)
|
388
415
|
end
|
389
416
|
end
|
417
|
+
super
|
390
418
|
|
391
|
-
rescue
|
419
|
+
rescue RuntimeError
|
420
|
+
raise
|
421
|
+
rescue NoMethodError
|
392
422
|
display_available_fields
|
393
|
-
|
394
|
-
super
|
423
|
+
raise
|
395
424
|
end
|
396
425
|
|
397
426
|
end
|
data/lib/app/models/uml.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
require 'set'
|
2
|
-
|
3
1
|
module UML
|
4
2
|
#usage: UML.print_uml or with options: UML.print_uml(:all, : detailed) or MyOpenObjectResource.print_uml or UML.print_uml([list_of_classes], :all, :detailed)
|
5
3
|
|
6
4
|
def self.included(base) base.extend(ClassMethods) end
|
7
5
|
|
8
6
|
def print_uml(*options)
|
9
|
-
|
7
|
+
ooor = self.class.ooor
|
8
|
+
UML.print_uml(ooor.config[:models] && ooor.all_loaded_models.select {|model| ooor.config[:models].index(model.openerp_model)} || ooor.all_loaded_models, options)
|
10
9
|
end
|
11
10
|
|
12
11
|
module ClassMethods
|
13
12
|
def print_uml(*options)
|
14
|
-
UML.print_uml([self], options)
|
13
|
+
UML.print_uml([self], options)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
data/lib/ooor.rb
CHANGED
@@ -21,17 +21,16 @@ class Ooor
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def global_login(user, password)
|
24
|
-
begin
|
25
24
|
@config[:username] = user
|
26
25
|
@config[:password] = password
|
27
26
|
client = OpenObjectResource.client(@base_url + "/common")
|
28
27
|
OpenObjectResource.try_with_pretty_error_log { client.call("login", @config[:database], user, password)}
|
29
|
-
rescue
|
28
|
+
rescue Exception => error
|
30
29
|
@logger.error """login to OpenERP server failed:
|
31
30
|
#{error.inspect}
|
32
31
|
Are your sure the server is started? Are your login parameters correct? Can this server ping the OpenERP server?
|
33
32
|
login XML/RPC url was #{@config[:url].gsub(/\/$/,'') + "/common"}"""
|
34
|
-
|
33
|
+
raise
|
35
34
|
end
|
36
35
|
|
37
36
|
def initialize(config, env=false)
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ooor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
|
7
|
+
- Raphael Valyi - www.akretion.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-04 00:00:00 -02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activeresource
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.3.1
|
24
|
+
version:
|
25
25
|
description: OOOR exposes business object proxies to your Ruby (Rails or not) application, that map seamlessly to your remote OpenObject/OpenERP server using webservices. It extends the standard ActiveResource API.
|
26
26
|
email: rvalyi@akretion.com
|
27
27
|
executables: []
|
@@ -31,13 +31,13 @@ extensions: []
|
|
31
31
|
extra_rdoc_files: []
|
32
32
|
|
33
33
|
files:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
- README.md
|
35
|
+
- MIT-LICENSE
|
36
|
+
- lib/ooor.rb
|
37
|
+
- lib/app/models/open_object_resource.rb
|
38
|
+
- lib/app/models/open_object_ui.rb
|
39
|
+
- lib/app/models/uml.rb
|
40
|
+
- ooor.yml
|
41
41
|
has_rdoc: true
|
42
42
|
homepage: http://github.com/rvalyi/ooor
|
43
43
|
licenses: []
|
@@ -46,18 +46,18 @@ post_install_message:
|
|
46
46
|
rdoc_options: []
|
47
47
|
|
48
48
|
require_paths:
|
49
|
-
|
49
|
+
- lib
|
50
50
|
required_ruby_version: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
55
|
version:
|
56
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: "0"
|
61
61
|
version:
|
62
62
|
requirements: []
|
63
63
|
|