Module: Ooor::Naming::ClassMethods

Defined in:
lib/ooor/naming.rb

Instance Method Summary collapse

Instance Method Details

#alias(context = {}) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/ooor/naming.rb', line 72

def alias(context={})
  # NOTE in v8, see if we can use ModelConvert here https://github.com/akretion/openerp-addons/blob/trunk-website-al/website/models/ir_http.py#L126
  if session.config[:aliases]
    lang = context['lang'] || session.config['lang'] || 'en_US'
    if alias_data = session.config[:aliases][lang]
      alias_data.select{|key, value| value == openerp_model }.keys[0] || openerp_model
    else
      openerp_model
    end
  else
    openerp_model
  end
end

#const_get(model_key) ⇒ Object

similar to Object#const_get but for OpenERP model key



40
41
42
43
44
45
46
47
48
# File 'lib/ooor/naming.rb', line 40

def const_get(model_key)
  scope = self.scope_prefix ? Object.const_get(self.scope_prefix) : Object
  klass_name = session.class_name_from_model_key(model_key)
  if scope.const_defined?(klass_name) && Ooor.session_handler.noweb_session_spec(scope.const_get(klass_name).session.config) == Ooor.session_handler.noweb_session_spec(session.config)
    scope.const_get(klass_name)
  else
    session.define_openerp_model(model: model_key, scope_prefix: self.scope_prefix)
  end
end


59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/ooor/naming.rb', line 59

def find_by_permalink(param, options={})
  # NOTE in v8, see if we can use PageConverter here https://github.com/akretion/openerp-addons/blob/trunk-website-al/website/models/ir_http.py#L138
  param.gsub!('-', ' ')
  if param.split(' ').last.to_i != 0
    options.merge!(domain: {:id => param.split(' ').last.to_i})
  elsif param.to_i == 0
    options.merge!(domain: [param_field, 'ilike', param])
  else
    options.merge!(domain: {:id => param.to_i})
  end
  find(:first, options)
end

#human_attribute_name(field_name, options = {}) ⇒ Object

required by form validators; TODO implement better?



51
52
53
# File 'lib/ooor/naming.rb', line 51

def human_attribute_name(field_name, options={})
  ""
end

#model_nameObject



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/ooor/naming.rb', line 22

def model_name
  @_model_name ||= begin
    if self.respond_to?(:openerp_model) && self.t
      namespace = self.parents.detect do |n|
        n.respond_to?(:use_relative_model_naming?) && n.use_relative_model_naming?
      end
      Ooor::Naming::Name.new(self, namespace)
    else
      super
    end
  end
end

#param_fieldObject



55
56
57
# File 'lib/ooor/naming.rb', line 55

def param_field
  session.config[:param_keys] && session.config[:param_keys][openerp_model] || :id
end

#param_key(context = {}) ⇒ Object



35
36
37
# File 'lib/ooor/naming.rb', line 35

def param_key(context={})
  self.alias(context).gsub('.', '-') # we don't use model_name because model_name isn't bijective
end