ooor 1.9.2 → 2.0.0

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.
Files changed (45) hide show
  1. data/README.md +23 -71
  2. data/Rakefile +5 -0
  3. data/bin/ooor +1 -0
  4. data/lib/ooor.rb +87 -129
  5. data/lib/ooor/associations.rb +64 -0
  6. data/lib/ooor/base.rb +218 -0
  7. data/lib/{app/models → ooor}/base64.rb +0 -0
  8. data/lib/ooor/connection.rb +37 -0
  9. data/lib/ooor/errors.rb +120 -0
  10. data/lib/ooor/field_methods.rb +153 -0
  11. data/lib/{app → ooor}/helpers/core_helpers.rb +2 -2
  12. data/lib/ooor/locale.rb +13 -0
  13. data/lib/ooor/mini_active_resource.rb +94 -0
  14. data/lib/ooor/model_registry.rb +19 -0
  15. data/lib/ooor/naming.rb +73 -0
  16. data/lib/ooor/rack.rb +114 -0
  17. data/lib/ooor/railtie.rb +41 -0
  18. data/lib/ooor/reflection.rb +537 -0
  19. data/lib/ooor/reflection_ooor.rb +92 -0
  20. data/lib/{app/models → ooor}/relation.rb +61 -22
  21. data/lib/ooor/relation/finder_methods.rb +113 -0
  22. data/lib/ooor/report.rb +53 -0
  23. data/lib/{app/models → ooor}/serialization.rb +18 -6
  24. data/lib/ooor/services.rb +133 -0
  25. data/lib/ooor/session.rb +120 -0
  26. data/lib/ooor/session_handler.rb +63 -0
  27. data/lib/ooor/transport.rb +34 -0
  28. data/lib/ooor/transport/json_client.rb +53 -0
  29. data/lib/ooor/transport/xml_rpc_client.rb +15 -0
  30. data/lib/ooor/type_casting.rb +193 -0
  31. data/lib/ooor/version.rb +8 -0
  32. data/spec/helpers/test_helper.rb +11 -0
  33. data/spec/install_nightly.sh +17 -0
  34. data/spec/ooor_spec.rb +197 -79
  35. data/spec/requirements.txt +19 -0
  36. metadata +58 -20
  37. data/lib/app/models/client_xmlrpc.rb +0 -34
  38. data/lib/app/models/open_object_resource.rb +0 -486
  39. data/lib/app/models/services.rb +0 -47
  40. data/lib/app/models/type_casting.rb +0 -134
  41. data/lib/app/models/uml.rb +0 -210
  42. data/lib/app/ui/action_window.rb +0 -96
  43. data/lib/app/ui/client_base.rb +0 -36
  44. data/lib/app/ui/form_model.rb +0 -88
  45. data/ooor.yml +0 -27
@@ -1,36 +0,0 @@
1
- # OOOR: OpenObject On Ruby
2
- # Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
3
- # Author: Raphaël Valyi
4
- # Licensed under the MIT license, see MIT-LICENSE file
5
-
6
- require 'app/ui/form_model'
7
- require 'app/ui/action_window'
8
-
9
- module Ooor
10
- module ClientBase
11
-
12
- def get_init_menu(user_id=@config[:user_id])
13
- const_get('res.users').read([user_id], ['menu_id', 'name'], @global_context)
14
- end
15
-
16
- #Ooor can have wizards that are not object related, for instance to configure the initial database:
17
- def old_wizard_step(wizard_name, step='init', wizard_id=nil, form={}, context={})
18
- result = @ir_model_class.old_wizard_step(wizard_name, nil, step, wizard_id, form, {})
19
- FormModel.new(wizard_name, result[0], nil, nil, result[1], [self], @global_context)#TODO set arch and fields
20
- end
21
-
22
- def build_object_view(model_class, view_id, view_mode='form', domain=[], ids=nil, context={}, toolbar=false)
23
- #TODO put in cache eventually:
24
- view = model_class.fields_view_get(view_id, view_mode, @global_context, toolbar)
25
- context = @global_context.merge(context)
26
- ids = const_get(view['model']).search(domain) unless ids #TODO replace by search_read once OpenERP has that
27
- values = const_get(view['model']).read(ids, view['fields'], context)
28
- models = []
29
- ids.each_with_index do |id, k|
30
- models << const_get(view['model']).new(values[k], [], context)
31
- end
32
-
33
- FormModel.new(view['name'], view['view_id'], view['arch'], view['fields'], nil, models, context, view['view_id'])
34
- end
35
- end
36
- end
@@ -1,88 +0,0 @@
1
- # OOOR: OpenObject On Ruby
2
- # Copyright (C) 2009-2012 Akretion LTDA (<http://www.akretion.com>).
3
- # Author: Raphaël Valyi
4
- # Licensed under the MIT license, see MIT-LICENSE file
5
-
6
- module Ooor
7
- class FormModel
8
- attr_accessor :name, :wizard_id, :datas, :arch, :fields, :type, :state, :view_id, :open_object_resources, :view_context
9
-
10
- def initialize(name, wizard_id, arch, fields, data, open_object_resources, view_context, view_id=nil)
11
- @arch = arch
12
- @fields = fields
13
- @name = name
14
- @wizard_id = wizard_id
15
- @open_object_resources = open_object_resources
16
- @view_context = view_context
17
- if data #it's a wizard
18
- @datas = data['datas'].symbolize_keys!
19
- @type = data['type']
20
- update_wizard_state(data['state'])
21
- end
22
- end
23
-
24
- def to_html
25
- "<div>not implemented in OOOR core gem!</div>"
26
- end
27
-
28
- def to_s
29
- content = ""
30
- content << @name
31
- @open_object_resources.each do |resource|
32
- content << "\n---------"
33
- @fields.each do |k, v| #TODO no need for new call if many2one
34
- if v['type'] == 'many2one'
35
- content << "\n#{k}: #{resource.relations[k]}"
36
- else
37
- content << "\n#{k}: #{resource.send(k)}"
38
- end
39
- end
40
- end
41
- end
42
-
43
- def old_wizard_step(method_symbol, *arguments)
44
- values = @datas.merge!((arguments[0] || {}).symbolize_keys!)
45
- context = @view_context.merge(arguments[1] || {})
46
- if @open_object_resources.size == 1
47
- open_object_resource = @open_object_resources[0]
48
- if open_object_resource.is_a? Ooor
49
- data = open_object_resource.ir_model_class.old_wizard_step(@name, nil, method_symbol, @wizard_id, values, context)
50
- else
51
- data = open_object_resource.class.old_wizard_step(@name, [open_object_resource.id], method_symbol, @wizard_id, values, context)
52
- end
53
- if data[1]['state'] == 'end'
54
- if open_object_resource.is_a? Ooor
55
- return 'end'
56
- else
57
- return open_object_resource.reload_from_record!(open_object_resource.class.find(open_object_resource.id, :context => context))
58
- end
59
- end
60
- @arch = data[1]['arch']
61
- @fields = data[1]['fields']
62
- @datas.merge!(data[1]['datas'].symbolize_keys!) unless data[1]['datas'].empty?
63
- @type = data[1]['type']
64
- update_wizard_state(data[1]['state']) #FIXME ideally we should remove old methods
65
- return self
66
- else
67
- ids = @open_object_resources.collect{ |open_object_resources| open_object_resources.id }
68
- return open_object_resource.class.old_wizard_step(@name, ids, method_symbol, @wizard_id, values, context)
69
- end
70
- end
71
-
72
- private
73
-
74
- def update_wizard_state(state)
75
- if state.is_a? Array
76
- @state = state
77
- @state.each do |state_item| #generates autocompletion handles
78
- self.class_eval do
79
- define_method state_item[0] do |*args|
80
- self.send :old_wizard_step, *[state_item[0], *args]
81
- end
82
- end
83
- end
84
- end
85
- end
86
-
87
- end
88
- end
data/ooor.yml DELETED
@@ -1,27 +0,0 @@
1
- #In order Rails knows how to t=connect to your OpenERP server, you should create a file APPLICATION_ROOT/config/ooor.yml
2
- #with the following pattern customized with your OpenERP server URL, your target OpenERP database, your login and password.
3
-
4
- development:
5
- url: http://localhost:8069/xmlrpc #the OpenERP XML/RPC server
6
- database: database_name #the OpenERP database you want to connect to
7
- username: admin
8
- password: admin
9
- #models: [res.partner, product.template, product.product, product.category, sale.order, sale.order.line, account.invoice] #you can allow only some models if you like
10
- bootstrap: true #true if you want to load OpenObject models (will hit OpenERP server) at startup; else use Ooor.reload!(lambda {}) to reload the Ooor models at any time
11
- #log_level: 0
12
- #global_context:
13
- #'lang': en_US
14
-
15
- test:
16
- url: http://localhost:8069/xmlrpc
17
- database: database_name
18
- username: admin
19
- password: admin
20
- bootstrap: true
21
-
22
- production:
23
- url: http://localhost:8069/xmlrpc
24
- database: database_name
25
- username: admin
26
- password: admin
27
- bootstrap: true