I am trying to understand how to extend Odoo. As first step I want to implement a new method named 'hello_world' for product.product class.
This methods does the mandatory 'Hello World', which according to other posts should be seen if odoo is launched in command line:
print 'Hello World'
Then I set up an automated action which executes python code to launch that method every time a new product is created, so I will have my first new method in Odoo implemented.
I edit and add the following to addons/product/product.py:
class product_product(osv.osv):
[...]
def hello_world():
print 'Hello World'
And add the following server action:
Base model: Product
Action: Execute Python Code
Python Code:
self.hello_world()
And I try this flamboyant method by creating a new product through the GUI and getting the following error:
ValueError: "'product.product' object has no attribute 'hello_world'" while evaluating
u'# Available locals:\n# - time, datetime, dateutil: Python libraries\n# - env: Odoo Environement\n# - model: Model of the record on which the action is triggered\n# - object: Record on which the action is triggered if there is one, otherwise None\n# - workflow: Workflow engine\n# - Warning: Warning Exception to use with raise\n# To return an action, assign: action = {...}\nself.hello_world()'
Note: I am aware that the right way of doing this is extending Odoo through modules, but it is needed to understand this before moving forward.
Did you restart the Odoo server? Modification of Python files require a server restart to take effect.