ooor 1.9.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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